Textextraktion

Textextraktion

Aspose.PDF FOSS for .NET bietet mehrere Mechanismen zum Extrahieren von Text aus PDF‑Seiten. TextFragmentAbsorber ist das primäre Werkzeug — es scannt den Seiteninhalt und gibt strukturierte TextFragment‑Objekte mit Positions‑, Schrift‑ und Stilinformationen zurück.


Grundlegende Textextraktion

TextAbsorber extrahiert den gesamten Text von einer Seite oder einem Dokument als einzelne Zeichenkette.

using var doc = Document.Open(pdfBytes);

var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);

string pageText = absorber.Text;

Extrahieren von Textfragmenten

TextFragmentAbsorber liefert strukturierte Ergebnisse. Jeder TextFragment enthält den extrahierten Text, seine Position auf der Seite und Schriftartdetails.

using var doc = Document.Open(pdfBytes);

var absorber = new TextFragmentAbsorber();
doc.Pages[1].Accept(absorber);

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Text: {fragment.Text}");
    Console.WriteLine($"Position: ({fragment.Position.XIndent}, {fragment.Position.YIndent})");
    Console.WriteLine($"Font: {fragment.TextState.Font.FontName}");
}

Suche mit regulären Ausdrücken

Übergeben Sie ein Regex‑Muster an TextFragmentAbsorber, um bestimmten Text zu finden.

var absorber = new TextFragmentAbsorber(@"\d{3}-\d{2}-\d{4}");
doc.Pages.Accept(absorber);  // Search all pages

foreach (var fragment in absorber.TextFragments)
{
    Console.WriteLine($"Found: {fragment.Text}");
}

Textabschnitte

Jedes TextFragment kann mehrere TextSegment‑Objekte enthalten, wenn der Text verschiedene Schriftlaufabschnitte umfasst.

foreach (var fragment in absorber.TextFragments)
{
    foreach (var segment in fragment.Segments)
    {
        Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
    }
}

Font-Verwaltung

FontRepository bietet Methoden zum Suchen und Laden von Schriftarten.

var font = FontRepository.FindFont("Helvetica");

Erstellung von Textabsätzen

TextParagraph ermöglicht das Erstellen von mehrzeiligen Textblöcken zum Einfügen in eine Seite.

var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));

Tipps und bewährte Verfahren

  • Verwenden Sie TextFragmentAbsorber, wenn Sie Positions‑ und Schriftartdaten benötigen; verwenden Sie TextAbsorber für die reine Text‑Extraktion.
  • Akzeptieren Sie den Absorber auf einer einzelnen Seite für schnellere Ergebnisse oder auf doc.Pages, um das gesamte Dokument zu durchsuchen.
  • Die reguläre Ausdruckssuche ist standardmäßig case-sensitive — verwenden Sie das Präfix (?i) für case-insensitive Übereinstimmungen.
  • Überprüfen Sie TextState.Font.IsEmbedded, um festzustellen, ob eine Schriftart im PDF eingebettet ist.
  • Bei großen Dokumenten verarbeiten Sie die Seiten einzeln, um den Speicherverbrauch zu steuern.

Allgemeine Probleme

IssueCauseFix
Extrahierter Text ist unleserlichPDF verwendet eine nicht standardmäßige Kodierung oder CID-SchriftzuordnungÜberprüfen Sie die Schriftart‑Einbettung; einige gescannte PDFs erfordern OCR
Keine Textfragmente gefundenSeiteninhalt ist ein Bild, kein TextVerwenden Sie ein OCR‑Tool, um Bildseiten zuerst in Text zu konvertieren
Regex liefert keine TrefferMuster berücksichtigt nicht die durch das PDF‑Textlayout eingefügte LeerzeichenNormalisieren Sie Leerzeichen oder verwenden Sie ein lockeres Muster
TextState.Font ist nullSchriftressource fehlt im PDFFühren Sie Nullprüfungen durch, wenn Sie Schriftarteigenschaften untersuchen

FAQ

Kann ich Text aus einem bestimmten Bereich einer Seite extrahieren?

Ja. Setzen Sie TextFragmentAbsorber.TextSearchOptions.Rectangle, um die Suche auf einen bestimmten Bereich der Seite zu beschränken.

Bewahrt die Textextraktion die Lesereihenfolge?

Die Bibliothek gibt Text in Content-Stream-Reihenfolge zurück. Für mehrspaltige Layouts müssen Sie möglicherweise Fragmente nach Position sortieren.

Kann ich Text von allen Seiten auf einmal extrahieren?

Ja. Rufen Sie doc.Pages.Accept(absorber) auf, um jede Seite im Dokument zu durchsuchen.


API-Referenzübersicht

Klasse / MethodeBeschreibung
TextAbsorberExtrahiert gesamten Text als einzelne Zeichenkette
TextFragmentAbsorberExtrahiert strukturierte Textfragmente mit Positions- und Schriftartdaten
TextFragmentEin Textlauf mit Position, Textstatus und Segmenten
TextFragment.TextDer extrahierte Textstring
TextFragment.PositionKoordinaten auf der Seite
TextFragment.TextStateSchriftart, Größe und Farbinformation
TextFragment.SegmentsUnterläufe innerhalb des Fragments
TextParagraphBuilder für mehrzeilige Textblöcke
TextStateSchriftname, Größe, Farbe und Stileigenschaften
FontRepositoryStatischer Schriftart-Lookup und Laden
FontRepository.FindFontFinde eine Schriftart nach Namen

Siehe auch

 Deutsch