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.

Docotic.Pdf-Bibliothek 9.5.17664-dev Regressionstests 14,820 bestanden NuGet-Downloads insgesamt 4,998,853

Sie 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.

Text aus PDF extrahieren

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:

Ergebnis der Nur-Text-Extraktion aus einem 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);
    }
}

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: Ergebnis der formatierten Textextraktion aus einem PDF-Dokument in C# .NET

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: Ergebnis der Textextraktion aus einem bestimmten Bereich in C# .NET

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

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

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: