Diese Seite kann automatisch übersetzten Text enthalten.

Text aus PDF in C# und VB.NET extrahieren

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 Zeilen Code unter Windows, Linux, macOS, Android, iOS oder in einer Cloud-Umgebung zu extrahieren.

Sie benötigen die Docotic.Pdf-Bibliothek, um den Beispielcode auszuprobieren. Holen Sie sich die Bibliothek und einen kostenlosen zeitlich begrenzten Lizenzschlüssel auf der C# .NET-PDF-Bibliothek herunterladen-Seite.

Es gibt verschiedene Ansätze zur Textextraktion. Sehen wir uns einige praktische Beispiele an.

Text aus PDF extrahieren

PDF in Klartext konvertieren

Sie können Klartext für die Indizierung, zum Lesen oder für eine Art der Analyse von PDF-Inhalten verwenden. Dieses Beispiel zeigt, wie Sie PDF in C# in Text konvertieren:

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:

Ergebnis der Klartextextraktion aus dem PDF-Dokument in C# .NET

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);
}

Zugehörige C#- und VB.NET-Beispiele sind auf GitHub verfügbar.

PDF in formatierten Text konvertieren

Sie können formatierten Text verwenden, um einige strukturierte Textdaten zu analysieren oder den Text in einem menschenlesbaren Format anzuzeigen. Dieses Beispiel zeigt, wie Sie PDF in C# in formatierten Text konvertieren:

using var pdf = new PdfDocument("your_document.pdf");
string formattedText = pdf.GetTextWithFormatting();

// ein alternativer seitenweiser Ansatz
_ = pdf.Pages[0].GetTextWithFormatting();

Console.WriteLine(formattedText);

PdfDocument.GetTextWithFormatting() liefert das folgende Ergebnis für das Beispieldokument:
Ergebnis der Extraktion formatierten Texts aus dem PDF-Dokument in C# .NET

Klartext oder formatierten Text aus einem bestimmten Bereich extrahieren

Möglicherweise müssen Sie Text nur aus einem bestimmten Teil einer PDF-Seite extrahieren. Beispielsweise, um nur den Text im Seitenkopf zu analysieren. Die Bibliothek unterstützt dies ebenfalls. 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: Ergebnis der Textextraktion aus einem bestimmten Bereich in C# .NET

Detaillierte Textinformationen extrahieren

Sie können auch detaillierte Informationen zu jedem Textabschnitt für eine umfassende Analyse erhalten. Docotic.Pdf bietet Methoden zum Extrahieren von Text unverändert, nach Wörtern oder nach Zeichen. Für jeden Textabschnitt extrahiert die Bibliothek:

  • Unicode-Text
  • Begrenzungen auf der Seite
  • Schriftart
  • Schriftgröße
  • Transformationsmatrix, die für skalierten und gedrehten Text nützlich ist
  • Rendermodus
  • Füllfarbe, Deckkraft, Muster
  • Konturstil
  • Detaillierte Informationen zu jedem Zeichen

Dieses Beispiel zeigt, wie Sie Text nach Wörtern aus einer PDF-Seite in C# extrahieren:

using var 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: Ergebnis der detaillierten Textextraktion aus PDF in C# .NET

Sie können die folgenden Docotic.Pdf-Methoden verwenden, um detaillierte Textinformationen zu erhalten:

Zugehörige GitHub-Beispiele:

Docotic.Pdf extrahiert Arabisch, Hebräisch und Persisch aus PDF-Dokumenten korrekt.

Intern speichern PDF-Dokumente Text entsprechend der visuellen Reihenfolge. Das bedeutet, dass Text in Sprachen mit Rechts-nach-links-Schriften umgekehrt gespeichert wird. Docotic.Pdf ordnet extrahierten Text entsprechend seiner logischen Reihenfolge neu. Das ist das, was Leser von Rechts-nach-links-Text normalerweise erwarten.

Sie müssen nichts Besonderes tun. Verwenden Sie einfach die oben stehenden Codeausschnitte, um 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 dies mit Docotic.Pdf und Tesseract geht:

Laden von Schriftarten in Cloud-Umgebungen

Die obigen Beispiele funktionieren in jeder Umgebung gut - unter Windows, Linux, macOS. Auf Cloud-Plattformen wie AWS Lambda müssen Sie möglicherweise einen zusätzlichen Konfigurationsschritt ausführen.

Es gibt PDF-Dokumente, die nicht eingebettete Schriftarten verwenden. Standardmäßig lädt Docotic.Pdf solche Schriftarten aus der systemweiten Schriftartensammlung (z. B. C:/Windows/Fonts oder /usr/share/fonts). Cloud-Plattformen können jedoch den Zugriff auf diese Schriftartensammlungen einschränken.

Sie können mit Ihrer Anwendung eine eigene Sammlung beliebter Schriftarten 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(["path_to_your_font_collection"], true);

using var pdf = new PdfDocument("your_document.pdf", config);
// ...

Abschluss

Sie können die Docotic.Pdf-Bibliothek verwenden, um Klartext oder formatierten Text aus PDF in C# und VB.NET zu extrahieren. Sie können auch detaillierte Informationen zu jedem Textabschnitt extrahieren. Sie können Docotic.Pdf hier herunterladen.

Sehen Sie sich die C#- und VB.NET-Beispiele zum Extrahieren von Text aus PDF an: