Tekstudtrækning

Tekstudtrækning

Tekstudtrækning

Aspose.PDF FOSS for .NET leverer flere mekanismer til at udtrække tekst fra PDF‑sider. TextFragmentAbsorber er det primære værktøj — det scanner sideindhold og returnerer strukturerede TextFragment‑objekter med position, skrifttype og stilinformation.


Grundlæggende tekstudtrækning

TextAbsorber udtrækker al tekst fra en side eller dokument som en enkelt streng.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Udtrækning af tekstfragmenter

TextFragmentAbsorber leverer strukturerede resultater. Hver TextFragment indeholder den udtrukne tekst, dens placering på siden og fontdetaljer.

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øgning med regulære udtryk

Send et regex‑mønster til TextFragmentAbsorber for at finde specifik tekst.

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

Tekstsegmenter

Hver TextFragment kan indeholde flere TextSegment-objekter, når teksten strækker sig over forskellige fontkørsler.

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

Fontstyring

FontRepository leverer metoder til at finde og indlæse skrifttyper.

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

Bygge tekstafsnit

TextParagraph tillader konstruktion af flerrækkede tekstblokke til indsættelse i en side.

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

Tips og bedste praksis

  • Brug TextFragmentAbsorber når du har brug for positions- og skrifttypedata; brug TextAbsorber til udtræk af ren tekst.
  • Accepter absorberen på en enkelt side for hurtigere resultater, eller på doc.Pages for at søge i hele dokumentet.
  • Søgning med regulære udtryk er som standard case‑sensitive — brug (?i)‑præfikset for case‑insensitiv matchning.
  • Tjek TextState.Font.IsEmbedded for at afgøre, om en skrifttype er indlejret i PDF‑filen.
  • For store dokumenter, behandl sider én ad gangen for at håndtere hukommelsesforbruget.

Almindelige problemer

ProblemÅrsagLøsning
Uddraget tekst er forvrængetPDF bruger en ikke-standard kodning eller CID-skrifttypekortlægningKontroller skrifttypeindlejring; nogle scannede PDF’er kræver OCR
Ingen tekstfragmenter fundetSideindholdet er et billede, ikke tekstBrug et OCR-værktøj til først at konvertere billedsider til tekst
Regex returnerer ingen matchesMønsteret tager ikke højde for mellemrum indsat af PDF-tekstlayoutNormaliser mellemrum eller brug et mere løst mønster
TextState.Font er nullSkrifttype‑ressource mangler i PDF’enHåndter null‑tjek når du inspicerer skrifttypeegenskaber

Ofte stillede spørgsmål

Kan jeg udtrække tekst fra et specifikt område på en side?

Ja. Indstil TextFragmentAbsorber.TextSearchOptions.Rectangle for at begrænse søgningen til et specifikt område på siden.

Bevarer tekstudtræk læserækkefølgen?

Biblioteket returnerer tekst i content-stream rækkefølge. For flerkolonne‑layout kan du have brug for at sortere fragmenter efter position.

Kan jeg udtrække tekst fra alle sider på én gang?

Ja. Kald doc.Pages.Accept(absorber) for at søge på hver side i dokumentet.


API-referencens oversigt

Klasse / MetodeBeskrivelse
TextAbsorberEkstraherer al tekst som en enkelt streng
TextFragmentAbsorberEkstraherer strukturerede tekstfragmenter med position- og skrifttypeoplysninger
TextFragmentEn tekstkørsel med position, teksttilstand og segmenter
TextFragment.TextDen ekstraherede tekststreng
TextFragment.PositionKoordinater på siden
TextFragment.TextStateSkrifttype, størrelse og farveinformation
TextFragment.SegmentsDelkørsler inden for fragmentet
TextParagraphBuilder til flerrækkede tekstblokke
TextStateSkrifttypenavn, størrelse, farve og stil‑egenskaber
FontRepositoryStatisk skrifttypeopslag og indlæsning
FontRepository.FindFontFind en skrifttype efter navn

Se også

 Dansk