Extracție de text

Extracție de text

Aspose.PDF FOSS for .NET provides several mechanisms for extracting text from Pagini PDF. TextFragmentAbsorber este instrumentul principal scanează conținutul paginii și rentabilitate structurată TextFragment Obiecte cu poziție, font și stil informaţii.


Extractarea de text de bază

TextAbsorber extrage tot textul dintr-o pagină sau document ca un singur șir.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Extractarea fragmentelor de text

TextFragmentAbsorber fiecare dintre ele oferă rezultate structurate. TextFragment include textul extras, poziția sa pe pagină și detaliile fontului.

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

Căutare cu expresii regulate

Treci un model regex la: TextFragmentAbsorber să găsească un text specific.

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

Segmente de text

Fiecare TextFragment poate conține mai multe: TextSegment Obiecte atunci când textul acoperă diferite tipuri de font.

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

Gestionarea fontelor

FontRepository oferă metode de a găsi și încărca fonturi.

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

Paragrafe de text constructiv

TextParagraph permite construirea de blocuri de text multi-linee pentru inserare în O pagină.

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

Sfaturi şi cele mai bune practici

  • Utilizare: TextFragmentAbsorber când aveți nevoie de date privind poziția și fontul; utilizați TextAbsorber pentru extracția textului simplu.
  • Acceptă absorberul pe o singură pagină pentru rezultate mai rapide sau pe un singur suport. doc.Pages să căutăm întregul document.
  • Căutarea expresiei regulate este sensibilă la case prin implicare utilizare (?i) prefix pentru corespondența fără sensibilitate la case.
  • Verifică. TextState.Font.IsEmbedded pentru a determina dacă un font este încorporat în PDF.
  • Pentru documente mari, procesați paginile una câte una pentru a gestiona utilizarea memoriei.

Probleme comune

Numărul de dateCauzaFixare
Textul extragit este încurcat.PDF folosește o codificare nestandardă sau maparea fontului CIDVerificați încorporarea fontului; unele PDF-uri scanate necesită OCR
Fragmente de text nu au fost găsite.Conținutul paginii este o imagine, nu text.Folosiți un instrument OCR pentru a converti paginile de imagini în text mai întâi
Regex nu returnează corespondențeModelul nu ține cont de spațiu alb introdus prin layout-ul textului PDF.Normalizați spațiul alb sau utilizați un model mai liber
TextState.Font este nulă.Fontul de resurse lipsește din PDF-ulVerificarea caracteristicilor de tip nul atunci când se verifică proprietățile fontului

FAQ

Pot extrage text dintr-o anumită regiune a paginii?

Da, e gata. TextFragmentAbsorber.TextSearchOptions.Rectangle Pentru a limita căutarea . la o anumită zonă a paginii.

Extractarea textului păstrează ordinea de citire?

Biblioteca returnează textul în ordinea fluxului de conținut. Pentru layout-urile cu mai multe coloane, este posibil să fie necesar să sortați fragmentele după poziție.

Pot extrage text de pe toate paginile odată?

Da, sună-mă. doc.Pages.Accept(absorber) să caute în fiecare pagină a documentului.


Rezultatele de la data aplicării.

Clasa / metodaDescriere:
TextAbsorberExtrage tot textul ca un singur șir
TextFragmentAbsorberExtrage fragmente de text structurat cu date privind poziția și fontul
TextFragmentUn text rulează cu poziție, starea de text și segmente
TextFragment.TextSârmă de text extragită
TextFragment.PositionCoordonatele de pe pagină
TextFragment.TextStateInformații despre font, dimensiune și culoare
TextFragment.SegmentsSub-runde în interiorul fragmentului
TextParagraphConstructor pentru blocuri de text cu mai multe linii
TextStateNumele fontului, dimensiunea, culoarea și stilul proprietăților
FontRepositoryCăutare și încărcare a fontului static
FontRepository.FindFontGăsiți o fontă după nume

Vezi și:

 Română