Diese Seite kann automatisch übersetzten Text enthalten.
Extrahieren Sie Text aus PDF in C# und VB.NET
Das Extrahieren von Text aus einem PDF-Dokument ist eine häufige Aufgabe für C#- und VB.NET-Entwickler. Sie können die Docotic.Pdf-Bibliothek verwenden, um Text in nur wenigen Codezeilen unter Windows, Linux, macOS, Android, iOS oder in einer Cloud-Umgebung zu extrahieren.
9.5.17664-dev 14,820 bestanden NuGet-Downloads insgesamt 4,998,853Sie benötigen die Bibliothek Docotic.Pdf, um den Beispielcode auszuprobieren. Holen Sie sich die Bibliothek und einen kostenlosen zeitlich begrenzten Lizenzschlüssel auf der Laden Sie die C# .NET PDF-Bibliothek herunter-Seite.
Es gibt verschiedene Ansätze zur Textextraktion. Schauen wir uns einige praktische Beispiele an.
Konvertieren Sie PDF in einfachen Text
Sie können einfachen Text zum Indizieren, Lesen oder für eine Analyse von PDF-Inhalten verwenden. Dieses Beispiel zeigt, wie man PDF in Text in C# konvertiert:
using BitMiracle.Docotic.Pdf;
using (var pdf = new PdfDocument("your_document.pdf"))
{
string documentText = pdf.GetText();
Console.WriteLine(documentText);
}
PdfDocument.GetText() liefert das folgende Ergebnis für das Beispieldokument:
Alternativ können Sie Text aus einzelnen Seiten extrahieren:
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);
}
}
Verwandte C#- und VB.NET-Beispiele sind auf GitHub verfügbar.
Konvertieren Sie PDF in formatierten Text
Sie können formatierten Text verwenden, um einige strukturierte Textdaten zu analysieren oder den Text in einem für Menschen lesbaren Format anzuzeigen. Dieses Beispiel zeigt, wie man PDF in C# in formatierten Text konvertiert:
using (var pdf = new PdfDocument("your_document.pdf"))
{
string formattedText = pdf.GetTextWithFormatting(); // oder verwenden pdf.Pages[i].GetTextWithFormatting()
Console.WriteLine(formattedText);
}
PdfDocument.GetTextWithFormatting() liefert das folgende Ergebnis für das Beispieldokument:
Extrahieren Sie einfachen oder formatierten Text aus einem bestimmten Bereich
Möglicherweise müssen Sie nur Text aus einem bestimmten Teil einer PDF-Seite extrahieren. Beispielsweise, um nur den Text im Seitenkopf zu analysieren. Auch die Bibliothek unterstützt dies. C#-Beispiel:
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);
}
Dieses Beispiel liefert das folgende Ergebnis für das Beispieldokument:
Extrahieren Sie detaillierte Textinformationen
Für eine umfassende Analyse erhalten Sie außerdem detaillierte Informationen zu jedem Textabschnitt. Docotic.Pdf bietet Methoden zum Extrahieren von Text in unveränderter Form, nach Wörtern oder nach Zeichen. Für jeden Textblock extrahiert die Bibliothek Folgendes:
- Unicode-Text
- Grenzen auf der Seite
- Schriftart
- Schriftgröße
- Transformationsmatrix, die für skalierten und gedrehten Text nützlich ist
- Rendering-Modus
- Füllfarbe, Deckkraft, Muster
- Umrissstil
- Detaillierte Informationen zu jedem Charakter
Dieses Beispiel zeigt, wie man Text nach Wörtern aus einer PDF-Seite in C# extrahiert:
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");
}
Das Beispiel liefert das folgende Ergebnis für das Beispieldokument:
Sie können die folgenden Docotic.Pdf-Methoden verwenden, um detaillierte Textinformationen zu erhalten:
- PdfCanvas.GetTextData() (z. B. page.Canvas.GetTextData())
- PdfPage.GetWords()
- PdfPage.GetChars()
- PdfPage.GetObjects() (gibt nicht nur Text, sondern auch Bilder und Vektorpfade zurück)
Verwandte GitHub-Beispiele:
Extrahieren Sie Text von rechts nach links und bidirektional
Docotic.Pdf extrahiert korrekt arabische, hebräische und persische Texte aus PDF-Dokumenten.
Intern speichern PDF-Dokumente Text entsprechend der visuellen Reihenfolge. Das bedeutet, dass Text in Sprachen mit Rechts-nach-Links-Schrift umgekehrt gespeichert wird. Docotic.Pdf ordnet den extrahierten Text entsprechend seiner logischen Reihenfolge neu. Das ist es, was Leser von Texten, die von rechts nach links geschrieben werden, normalerweise erwarten.
Sie müssen nichts Besonderes tun. Verwenden Sie einfach die Codeausschnitte oben, um den RTL-Text in der richtigen Reihenfolge zu erhalten.
OCR (Texterkennung)
Wenn die PDFs, mit denen Sie arbeiten, Bilder mit Text enthalten, können Sie den Text mithilfe der optischen Zeichenerkennung extrahieren. Die folgenden Beispiele zeigen, wie das mit Docotic.Pdf und Tesseract geht:
Weitere Einzelheiten finden Sie im Artikel OCR PDF in .NET.
Laden von Schriftarten in Cloud-Umgebungen
Die obigen Beispiele funktionieren in jeder Umgebung einwandfrei – unter Windows, Linux, macOS. Auf Cloud-Plattformen wie AWS Lambda müssen Sie möglicherweise einen zusätzlichen Konfigurationsschritt durchführen.
Es gibt PDF-Dokumente, die nicht eingebettete Schriftarten verwenden. Standardmäßig lädt
Docotic.Pdf solche Schriftarten aus der Schriftartensammlung des Systems (z. B. C:/Windows/Fonts
oder /usr/share/fonts
). Cloud-Plattformen können jedoch den Zugriff auf diese
Schriftartensammlungen einschränken.
Sie können Ihre eigene Sammlung beliebter Schriftarten mit Ihrer Anwendung bereitstellen. Suchen
und kopieren Sie öffentliche Schriftartdateien in Ihr Projekt. Markieren Sie alle Schriftartdateien
in Ihrem .NET-Projekt mit CopyToOutputDirectory = Always
. Um die Sammlung zu verwenden,
initialisieren Sie PdfDocument
mit einem benutzerdefinierten
DirectoryFontLoader:
PdfConfigurationOptions config = PdfConfigurationOptions.Create();
config.FontLoader = new DirectoryFontLoader(new[] { "path_to_your_font_collection" }, true);
using (PdfDocument pdf = new PdfDocument("your_document.pdf", config))
{
...
}
Abschluss
Sie können die Docotic.Pdf-Bibliothek verwenden, um einfachen oder formatierten Text aus PDF in C# und VB.NET zu extrahieren. Sie können auch detaillierte Informationen zu jedem Textblock extrahieren. Sie können Docotic.Pdf hier herunterladen.
Schauen Sie sich C#- und VB.NET-Beispiele zum Extrahieren von Text aus PDF an: