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:
TextFragmentAbsorbercând aveți nevoie de date privind poziția și fontul; utilizațiTextAbsorberpentru extracția textului simplu. - Acceptă absorberul pe o singură pagină pentru rezultate mai rapide sau pe un singur suport.
doc.Pagessă 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.IsEmbeddedpentru 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 date | Cauza | Fixare |
|---|---|---|
| Textul extragit este încurcat. | PDF folosește o codificare nestandardă sau maparea fontului CID | Verificaț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țe | Modelul 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-ul | Verificarea 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 / metoda | Descriere: |
|---|---|
TextAbsorber | Extrage tot textul ca un singur șir |
TextFragmentAbsorber | Extrage fragmente de text structurat cu date privind poziția și fontul |
TextFragment | Un text rulează cu poziție, starea de text și segmente |
TextFragment.Text | Sârmă de text extragită |
TextFragment.Position | Coordonatele de pe pagină |
TextFragment.TextState | Informații despre font, dimensiune și culoare |
TextFragment.Segments | Sub-runde în interiorul fragmentului |
TextParagraph | Constructor pentru blocuri de text cu mai multe linii |
TextState | Numele fontului, dimensiunea, culoarea și stilul proprietăților |
FontRepository | Căutare și încărcare a fontului static |
FontRepository.FindFont | Găsiți o fontă după nume |