Extrahovanie textu

Extrahovanie textu

Extrahovanie textu

Aspose.PDF FOSS for .NET poskytuje niekoľko mechanizmov na extrahovanie textu z PDF stránok. TextFragmentAbsorber je primárny nástroj — skenuje obsah stránky a vracia štruktúrované TextFragment objekty s informáciami o pozícii, fonte a štýle.


Základné extrahovanie textu

TextAbsorber extrahuje celý text z stránky alebo dokumentu ako jeden reťazec.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Extrahovanie textových fragmentov

TextFragmentAbsorber poskytuje štruktúrované výsledky. Každý TextFragment obsahuje extrahovaný text, jeho polohu na stránke a podrobnosti o fonte.

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

Vyhľadávanie pomocou regulárnych výrazov

Zadajte regexový vzor do TextFragmentAbsorber na vyhľadanie konkrétneho textu.

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

Textové segmenty

Každý TextFragment môže obsahovať viacero TextSegment objektov, keď text zahŕňa rôzne písma.

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

Správa písiem

FontRepository poskytuje metódy na vyhľadávanie a načítanie fontov.

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

Budovanie textových odsekov

TextParagraph umožňuje konštruovať viacriadkové textové bloky na vloženie do stránky.

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

Tipy a osvedčené postupy

  • Použite TextFragmentAbsorber, keď potrebujete údaje o pozícii a písme; použite TextAbsorber pre extrakciu čistého textu.
  • Prijmite absorbér na jednej stránke pre rýchlejšie výsledky, alebo na doc.Pages pre prehľadávanie celého dokumentu.
  • Vyhľadávanie regulárnym výrazom je predvolene citlivé na veľkosť písmen — použite predponu (?i) pre necitlivé na veľkosť písmen.
  • Skontrolujte TextState.Font.IsEmbedded, aby ste zistili, či je písmo vložené v PDF.
  • Pre veľké dokumenty spracovávajte stránky po jednej, aby ste riadili využitie pamäte.

Bežné problémy

ProblémPríčinaRiešenie
Extrahovaný text je skomolenýPDF používa neštandardové kódovanie alebo mapovanie CID písmaSkontrolujte vloženie písma; niektoré naskenované PDF vyžadujú OCR
Nenašli sa žiadne textové fragmentyObsah stránky je obrázok, nie textPoužite OCR nástroj na konverziu stránok s obrázkom na text najprv
Regex nevracia žiadne zhodyVzor neberie do úvahy medzery vložené rozložením textu v PDFNormalizujte medzery alebo použite voľnejší vzor
TextState.Font je nullZdroj písma chýba v PDFSpracujte kontroly null pri skúmaní vlastností písma

Často kladené otázky

Môžem extrahovať text z konkrétnej oblasti stránky?

Áno. Nastavte TextFragmentAbsorber.TextSearchOptions.Rectangle, aby ste obmedzili vyhľadávanie na konkrétnu oblasť stránky.

Zachováva extrakcia textu poradie čítania?

Knižnica vracia text v poradí content-stream. Pre viacstĺpcové rozloženia môžete potrebovať zoradiť fragmenty podľa polohy.

Môžem extrahovať text zo všetkých strán naraz?

Áno. Zavolajte doc.Pages.Accept(absorber) na vyhľadanie každej stránky v dokumente.


Zhrnutie referencie API

Trieda / MetódaPopis
TextAbsorberExtrahuje celý text ako jeden reťazec
TextFragmentAbsorberExtrahuje štruktúrované fragmenty textu s informáciami o pozícii a písme
TextFragmentÚsek textu s pozíciou, stavom textu a segmentmi
TextFragment.TextExtrahovaný textový reťazec
TextFragment.PositionSúradnice na stránke
TextFragment.TextStateInformácie o fonte, veľkosti a farbe
TextFragment.SegmentsPodúseky v rámci fragmentu
TextParagraphStaviteľ pre viacriadkové textové bloky
TextStateNázov fontu, veľkosť, farba a vlastnosti štýlu
FontRepositoryStatické vyhľadávanie a načítanie fontu
FontRepository.FindFontNájsť font podľa názvu

Pozri tiež

 Slovenčina