Ekstrakcija teksta

Ekstrakcija teksta

Ekstrakcija teksta

Aspose.PDF FOSS za .NET pruža nekoliko mehanizama za izdvajanje teksta iz PDF stranica. TextFragmentAbsorber je primarni alat — on skenira sadržaj stranice i vraća strukturirane TextFragment objekte sa informacijama o položaju, fontu i stilu.


Osnovno izvlačenje teksta

TextAbsorber izvlači sav tekst sa stranice ili dokumenta kao jedan niz.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Izvlačenje tekstualnih fragmenata

TextFragmentAbsorber pruža strukturirane rezultate. Svaki TextFragment uključuje izvučeni tekst, njegov položaj na stranici i detalje o fontu.

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

Pretraga regularnim izrazima

Prosledite regex obrazac TextFragmentAbsorber da biste pronašli određeni 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}");
}

Текстуални сегменти

Svaki TextFragment može sadržati više TextSegment objekata kada tekst obuhvata različite font‑runove.

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

Upravljanje fontovima

FontRepository pruža metode za pronalaženje i učitavanje fontova.

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

Izgradnja tekstualnih odlomaka

TextParagraph omogućava konstruisanje višerednih tekstualnih blokova za umetanje u stranicu.

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

Saveti i najbolje prakse

  • Koristite TextFragmentAbsorber kada su vam potrebni podaci o položaju i fontu; koristite TextAbsorber za izdvajanje običnog teksta.
  • Prihvatite apsorber na jednoj stranici za brže rezultate, ili na doc.Pages da pretražite ceo dokument.
  • Pretraga regularnim izrazom je po podrazumevanju osetljiva na veličinu slova — koristite prefiks (?i) za podudaranje neosetljivo na veličinu slova.
  • Proverite TextState.Font.IsEmbedded da biste utvrdili da li je font ugrađen u PDF.
  • Za velike dokumente, obrađujte stranice po jednu kako biste upravljali upotrebom memorije.

Česti problemi

IssueCauseFix
Izvučeni tekst je iskrivljenPDF koristi nestandardno kodiranje ili CID mapiranje fontovaProverite ugrađivanje fontova; neki skenirani PDF‑ovi zahtevaju OCR
Nisu pronađeni fragmenti tekstaSadržaj stranice je slika, a ne tekstKoristite OCR alat da prvo pretvorite stranice slike u tekst
Regex ne vraća podudaranjaŠablon ne uzima u obzir razmake koje ubacuje PDF raspored tekstaNormalizujte razmake ili koristite labaviji šablon
TextState.Font je nullResurs fonta nedostaje u PDF‑uObradite provere null vrednosti prilikom ispitivanja svojstava fonta

Često postavljana pitanja

Mogu li da izvučem tekst iz određenog područja stranice?

Да. Поставите TextFragmentAbsorber.TextSearchOptions.Rectangle да ограничите претрагу на одређено подручје странице.

Da li ekstrakcija teksta očuva redosled čitanja?

Biblioteka vraća tekst u redosledu content‑stream‑a. Za rasporede sa više kolona, možda ćete morati da sortirate fragmente po položaju.

Mogu li izvući tekst sa svih stranica odjednom?

Da. Pozovite doc.Pages.Accept(absorber) da pretražite svaku stranicu u dokumentu.


Sažetak API referencije

Class / MethodDescription
TextAbsorberIzvlači sav tekst kao jedan string
TextFragmentAbsorberIzvlači strukturirane fragmente teksta sa podacima o položaju i fontu
TextFragmentTekstualni niz sa položajem, stanjem teksta i segmentima
TextFragment.TextIzvlačeni tekstualni string
TextFragment.PositionKoordinate na stranici
TextFragment.TextStateInformacije o fontu, veličini i boji
TextFragment.SegmentsPod‑nizovi unutar fragmenta
TextParagraphGraditelj za višeredne blokove teksta
TextStateNaziv fonta, veličina, boja i svojstva stila
FontRepositoryStatičko pretraživanje i učitavanje fonta
FontRepository.FindFontPronađi font po imenu

Vidi takođe

 Српски