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.
9.5.17573-dev Ne sono passati 14,726 Download totali di NuGet 4,765,230Avrai bisogno della libreria Docotic.Pdf per provare il codice di esempio. Ottieni la libreria e una chiave di licenza gratuita a tempo limitato sulla pagina Scarica la libreria PDF C# .NET.
Esistono diversi approcci all'estrazione del testo. Diamo un'occhiata ad alcuni esempi pratici.
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:
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:
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:
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:
È possibile utilizzare i seguenti metodi Docotic.Pdf per ottenere informazioni di testo dettagliate:
- PdfCanvas.GetTextData() (per esempio page.Canvas.GetTextData())
- PdfPage.GetWords()
- PdfPage.GetChars()
- PdfPage.GetObjects() (restituisce non solo testo, ma anche immagini e percorsi vettoriali)
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: