Textutdrag

Textutdrag

Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from PDF sidor . TextFragmentAbsorber är det primära verktyget – det skannar innehåll på sidan och återvänder strukturerat TextFragment objekt med position, font och stil Information om .


Bas text extraktion

TextAbsorber extraherar hela texten från en sida eller dokument som ett enda sträng.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Extract text fragment

TextFragmentAbsorber Det finns strukturerade resultat. varje TextFragment Innehåller den extraherade texten, dess position på sidan och teckensnitt detaljer.

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

Sök med vanliga uttryck

Passera ett regex-mönster till TextFragmentAbsorber att hitta en specifik text.

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

Text segment

Each TextFragment kan innehålla flera TextSegment Om objektet när texten Spänning olika font runs.

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

Fonthantering

FontRepository ger metoder för att hitta och ladda font.

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

Skapa textparagrafer

TextParagraph tillåter att bygga flerlinje textblock för insättning i En sida .

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

Tips och bästa praxis

  • Användning TextFragmentAbsorber när du behöver position och fontdata; använd TextAbsorber för platt textutvinning.
  • Acceptera absorberaren på en enda sida för snabbare resultat, eller på doc.Pages Sök hela dokumentet.
  • Regelbunden uttryckssökning är fallsensitiv på grund av standard - användning (?i) Förskott för fallsensitiv matchning.
  • Check TextState.Font.IsEmbedded för att avgöra om ett tecken är inbäddat i PDF.
  • För stora dokument, behandla sidor en gång för att hantera minnesanvändning.

Vanliga frågor

IssueCauseFixar
Text som extraheras är förskjutetPDF använder en icke-standardkodning eller CID fontmappningKontrollera font-inbyggnad; vissa skannade PDF-filer kräver OCR
Inga textfragment hittadeInnehållet är en bild, inte textAnvänd ett OCR-verktyg för att konvertera bildsidor till text först
Regex återvänder inga matcherPattern räknar inte för vitutrymme som läggs in i PDF-text layoutNormalisera vitrum eller använda en looser mönster
TextState.Font är nollFontresurs saknas från PDF-filenHandla nollcheck när du granskar fontegenskaper

FAQ

Kan jag extrahera text från en viss region av en sida?

Ja, Set TextFragmentAbsorber.TextSearchOptions.Rectangle Begränsa sökningen till ett specifikt område på sidan.

Skall textutvinning behålla läsordningen?

Biblioteket returnerar text i innehållsström ordning. För flerkolumns layouter kan du behöva sortera fragment per position.

Kan jag extrahera text från alla sidor på en gång?

Ja, ringa till doc.Pages.Accept(absorber) Sök efter varje sida i dokumentet.


API Referens sammanfattning

Klass / MetodBeskrivning
TextAbsorberExtraherar hela texten som en enda sträng
TextFragmentAbsorberExtraherar strukturerade textfragment med position och fontdata
TextFragmentEn text som körs med position, textstatus och segment
TextFragment.TextDen extraherade textringen
TextFragment.PositionKoordinatorer på sidan
TextFragment.TextStateFont, storlek och färginformation
TextFragment.SegmentsSub-rundar inom fragmentet
TextParagraphByggare för flerlinje textblock
TextStateFontnamn, storlek, färg och stil egenskaper
FontRepositoryStatisk font lookup och laddning
FontRepository.FindFontHitta en font per namn

Se även

 Svenska