Tekstextractie

Tekstextractie

Aspose.PDF FOSS for .NET biedt verschillende mechanismen voor het extraheren van tekst uit PDF-pagina’s. TextFragmentAbsorber is de primaire tool — het scant paginainhoud en retourneert gestructureerde TextFragment objecten met positie-, lettertype- en stijlgegevens.


Basis tekstextractie

TextAbsorber extraheert alle tekst van een pagina of document als één enkele tekenreeks.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Tekstfragmenten extraheren

TextFragmentAbsorber levert gestructureerde resultaten. Elke TextFragment bevat de geëxtraheerde tekst, de positie op de pagina en de lettertype‑details.

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

Zoeken met reguliere expressies

Geef een regex‑patroon door aan TextFragmentAbsorber om specifieke tekst te vinden.

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

Tekstsegmenten

Elke TextFragment kan meerdere TextSegment objecten bevatten wanneer de tekst zich uitstrekt over verschillende lettertype‑reeksen.

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

Lettertypebeheer

FontRepository biedt methoden om lettertypen te vinden en te laden.

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

Tekstparagrafen bouwen

TextParagraph maakt het mogelijk om meerregelige tekstblokken te construeren voor invoeging in een pagina.

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

Tips en Best Practices

  • Gebruik TextFragmentAbsorber wanneer u positie- en lettertypegegevens nodig hebt; gebruik TextAbsorber voor platte‑tekstextractie.
  • Accepteer de absorber op één enkele pagina voor snellere resultaten, of op doc.Pages om het hele document te doorzoeken.
  • Reguliere‑expressie zoeken is standaard hoofdlettergevoelig — gebruik het (?i)‑voorvoegsel voor hoofdletterongevoelig zoeken.
  • Controleer TextState.Font.IsEmbedded om te bepalen of een lettertype in de PDF is ingebed.
  • Voor grote documenten, verwerk pagina’s één voor één om het geheugenverbruik te beheersen.

Veelvoorkomende problemen

IssueCauseFix
Uitgehaalde tekst is onleesbaarPDF gebruikt een niet-standaard codering of CID-lettertypekoppelingControleer of lettertypen zijn ingesloten; sommige gescande PDF’s vereisen OCR
Geen tekstfragmenten gevondenPaginainhoud is een afbeelding, geen tekstGebruik een OCR‑tool om afbeeldingspagina’s eerst naar tekst te converteren
Regex geeft geen overeenkomsten terugPatroon houdt geen rekening met witruimte die door de PDF-tekstlay-out wordt ingevoegdNormaliseer witruimte of gebruik een lossere patroon
TextState.Font is nullLettertypebron ontbreekt in de PDFVoer null‑controles uit bij het inspecteren van lettertype‑eigenschappen

Veelgestelde vragen

Kan ik tekst extraheren uit een specifiek gebied van een pagina?

Ja. Stel TextFragmentAbsorber.TextSearchOptions.Rectangle in om de zoekopdracht te beperken tot een specifiek gebied van de pagina.

Behoudt tekstextractie de leesvolgorde?

De bibliotheek retourneert tekst in content‑stream volgorde. Voor meerkolomindelingen moet u mogelijk fragmenten sorteren op positie.

Kan ik tekst van alle pagina’s in één keer extraheren?

Ja. Roep doc.Pages.Accept(absorber) aan om elke pagina in het document te doorzoeken.


API-referentieoverzicht

Klasse / MethodeBeschrijving
TextAbsorberHaalt alle tekst op als één enkele string
TextFragmentAbsorberHaalt gestructureerde tekstfragmenten op met positie- en lettertypegegevens
TextFragmentEen tekstreeks met positie, tekststatus en segmenten
TextFragment.TextDe opgehaalde tekststring
TextFragment.PositionCoördinaten op de pagina
TextFragment.TextStateLettertype-, grootte- en kleurinformatie
TextFragment.SegmentsSub‑reeksen binnen het fragment
TextParagraphBouwer voor meerregelige tekstblokken
TextStateLettertype‑naam, grootte, kleur en stijl‑eigenschappen
FontRepositoryStatische lettertype‑opzoeking en -laden
FontRepository.FindFontZoek een lettertype op naam

Zie ook

 Nederlands