Questa pagina può contenere testo tradotto automaticamente.

Estrai testo da PDF in C# e VB.NET

L'estrazione del testo da un documento PDF è un'attività comune per gli sviluppatori C# e VB.NET. Puoi utilizzare la libreria Docotic.Pdf per estrarre il testo in poche righe di codice su Windows, Linux, macOS, Android, iOS o in un ambiente cloud.

Avrai bisogno della libreria Docotic.Pdf per provare il codice di esempio. Scarica Docotic.Pdf binari o usa il relativo pacchetto NuGet. Per provare la libreria senza restrizioni sulla modalità di valutazione, è possibile ottenere la chiave di licenza gratuita limitata nel tempo qui.

Esistono diversi approcci all'estrazione del testo. Diamo un'occhiata ad alcuni esempi pratici.

Estrai testo da PDF

Converti PDF in testo semplice

È possibile utilizzare testo semplice per l'indicizzazione, la lettura o qualche tipo di analisi del contenuto PDF. Questo esempio mostra come convertire PDF in testo in C#:

using BitMiracle.Docotic.Pdf;

using (var pdf = new PdfDocument("your_document.pdf"))
{
    string documentText = pdf.GetText();
    Console.WriteLine(documentText);
}

PdfDocument.GetText() fornisce il seguente risultato per il documento di esempio:

Risultato dell'estrazione di testo semplice da un documento PDF in C# .NET

In alternativa, puoi estrarre il testo dalle singole pagine:

using (var pdf = new PdfDocument("your_document.pdf"))
{
    for (int i = 0; i < pdf.PageCount; ++i)
    {
        string pageText = pdf.Pages[i].GetText();
        using (var writer = new StreamWriter($"page_{i}.txt"))
            writer.Write(pageText);
    }
}

Gli esempi C# e VB.NET correlati sono disponibili su GitHub.

Converti PDF in testo formattato

Puoi utilizzare testo formattato per analizzare alcuni dati di testo strutturato o per visualizzare il testo in un formato leggibile dall'uomo. Questo esempio mostra come convertire PDF in testo formattato in C#:

using (var pdf = new PdfDocument("your_document.pdf"))
{
    string formattedText = pdf.GetTextWithFormatting(); // oppure utilizzare pdf.Pages[i].GetTextWithFormatting()
    Console.WriteLine(formattedText);
}

PdfDocument.GetTextWithFormatting() fornisce il seguente risultato per il documento di esempio: Risultato dell'estrazione del testo formattato dal documento PDF in C# .NET

Estrai testo semplice o formattato da un'area specifica

Potrebbe essere necessario estrarre il testo solo da una parte specifica di una pagina PDF. Ad esempio, per analizzare solo il testo nell'intestazione della pagina. Anche la biblioteca lo supporta. Esempio C#:

using (var pdf = new PdfDocument("your_document.pdf"))
{
    var page = pdf.Pages[0];
    var options = new PdfTextExtractionOptions
    {
        Rectangle = new PdfRectangle(0, 0, page.Width, 100),
        WithFormatting = false
    };
    string areaText = page.GetText(options);
    Console.WriteLine(areaText);
}

Questo esempio fornisce il seguente risultato per il documento di esempio: Risultato dell'estrazione del testo da un'area specifica in C# .NET

Estrai informazioni di testo dettagliate

Puoi anche ottenere informazioni dettagliate su ogni porzione di testo per un'analisi completa. Docotic.Pdf fornisce metodi per estrarre il testo così com'è, per parole o per caratteri. Per ogni pezzo di testo, la libreria estrae:

  • Testo Unicode
  • Limiti nella pagina
  • Carattere
  • Dimensione del font
  • Matrice di trasformazione, utile per il testo ridimensionato e ruotato
  • Modalità di rendering
  • Colore di riempimento, opacità, motivo
  • Stile del contorno
  • Informazioni dettagliate su ogni personaggio

Questo esempio mostra come estrarre testo per parole da una pagina PDF in C#:

using (PdfDocument pdf = new PdfDocument("your_document.pdf"))
{
    PdfPage page = pdf.Pages[0];
    foreach (PdfTextData data in page.GetWords())
    {
        Console.WriteLine(
            $"{{\n" +
            $"  text: '{data.GetText()}',\n" +
            $"  bounds: {data.Bounds},\n" +
            $"  font name: '{data.Font.Name}',\n" +
            $"  font size: {data.FontSize},\n" +
            $"  transformation matrix: {data.TransformationMatrix},\n" +
            $"  rendering mode: '{data.RenderingMode}',\n" +
            $"  brush: {data.Brush},\n" +
            $"  pen: {data.Pen}\n" +
            $"}},"
        );

        page.Canvas.DrawRectangle(data.Bounds);
    }

    pdf.Save("result.pdf");
}

L'esempio fornisce il seguente risultato per il documento di esempio: Risultato dell'estrazione dettagliata del testo da PDF in C# .NET

È possibile utilizzare i seguenti metodi Docotic.Pdf per ottenere informazioni di testo dettagliate:

Esempi GitHub correlati:

Estrai testo da destra a sinistra e bidirezionale

Docotic.Pdf estrae correttamente il testo arabo, ebraico e persiano dai documenti PDF.

Internamente, i documenti PDF memorizzano il testo in base all'ordine visivo. Ciò significa che il testo nelle lingue con scrittura da destra a sinistra viene memorizzato al contrario. Docotic.Pdf riordina il testo estratto secondo il suo ordine logico. Questo è ciò che solitamente si aspettano i lettori di testo da destra a sinistra.

Non devi fare niente di speciale. Utilizza semplicemente i frammenti di codice sopra per ottenere il testo RTL nell'ordine corretto.

OCR (riconoscimento del testo)

Se i PDF di cui ti occupi contengono immagini con testo, puoi estrarre il testo utilizzando il riconoscimento ottico dei caratteri. I seguenti esempi mostrano come farlo utilizzando Docotic.Pdf e Tesseract:

Consulta l'articolo PDF OCR in .NET per maggiori dettagli.

Caricamento dei caratteri in ambienti cloud

Gli esempi sopra riportati funzionano bene in qualsiasi ambiente: su Windows, Linux, macOS. Sulle piattaforme cloud, come AWS Lambda, potrebbe essere necessario eseguire un passaggio di configurazione aggiuntivo.

Esistono documenti PDF che utilizzano caratteri non incorporati. Per impostazione predefinita, Docotic.Pdf carica tali caratteri dalla raccolta dei caratteri di sistema (ad esempio, C:/Windows/Fonts o /usr/share/fonts). Tuttavia, le piattaforme cloud potrebbero limitare l'accesso a queste raccolte di caratteri.

Puoi distribuire la tua raccolta di caratteri popolari con la tua applicazione. Trova e copia i file di font pubblici nel tuo progetto. Contrassegna tutti i file dei caratteri con CopyToOutputDirectory = Always nel tuo progetto .NET. Per utilizzare la raccolta, inizializza PdfDocument con un DirectoryFontLoader personalizzato:

PdfConfigurationOptions config = PdfConfigurationOptions.Create();
config.FontLoader = new DirectoryFontLoader(new[] { "path_to_your_font_collection" }, true);
using (PdfDocument pdf = new PdfDocument("your_document.pdf", config))
{
   ...
}

Conclusione

È possibile utilizzare la libreria Docotic.Pdf per estrarre testo semplice o formattato da PDF in C# e VB.NET. Puoi anche estrarre informazioni dettagliate su ogni blocco di testo. Puoi scaricare Docotic.Pdf qui.

Guarda gli esempi C# e VB.NET per estrarre testo da PDF: