Extrahování textu

Extrahování textu

Aspose.PDF FOSS pro .NET poskytuje několik mechanismů pro extrahování textu z PDF stránek. TextFragmentAbsorber je primární nástroj — skenuje obsah stránky a vrací strukturované objekty TextFragment s informacemi o pozici, fontu a stylu.


Základní extrahování textu

TextAbsorber extrahuje veškerý text z stránky nebo dokumentu jako jediný řetězec.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Extrahování fragmentů textu

TextFragmentAbsorber poskytuje strukturované výsledky. Každý TextFragment obsahuje extrahovaný text, jeho pozici na stránce a podrobnosti 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}");
}

Vyhledávání pomocí regulárních výrazů

Předávejte regulární výraz do TextFragmentAbsorber, aby našel konkrétní text.

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 obsahovat více objektů TextSegment, pokud text zahrnuje různé běhy fontů.

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

Správa fontů

FontRepository poskytuje metody pro vyhledávání a načítání fontů.

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

Vytváření textových odstavců

TextParagraph umožňuje vytvářet víceliniové textové bloky pro vložení na stránku.

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

Tipy a osvědčené postupy

  • Použijte TextFragmentAbsorber, když potřebujete data o pozici a fontu; použijte TextAbsorber pro extrakci prostého textu.
  • Přijměte absorbera na jedné stránce pro rychlejší výsledky, nebo na doc.Pages pro prohledání celého dokumentu.
  • Vyhledávání regulárních výrazů je ve výchozím nastavení citlivé na velikost písmen — použijte prefix (?i) pro necitlivé vyhledávání.
  • Zkontrolujte TextState.Font.IsEmbedded, abyste zjistili, zda je font vložen v PDF.
  • U velkých dokumentů zpracovávejte stránky po jedné, abyste řídili využití paměti.

Časté problémy

ProblémPříčinaOprava
Extrahovaný text je poškozenýPDF používá nestandardní kódování nebo mapování CID fontuZkontrolujte vložení fontů; některé naskenované PDF vyžadují OCR
Nebyly nalezeny žádné textové fragmentyObsah stránky je obrázek, ne textNejprve použijte OCR nástroj k převodu obrazových stránek na text
Regex nevrací žádné shodyVzor nebere v úvahu mezery vložené rozložením textu v PDFNormalizujte mezery nebo použijte volnější vzor
TextState.Font je nullZdroj písma chybí v PDFZpracovávejte kontroly na null při inspekci vlastností písma

FAQ

Mohu extrahovat text z konkrétní oblasti stránky?

Ano. Nastavte TextFragmentAbsorber.TextSearchOptions.Rectangle, aby omezil hledání na konkrétní oblast stránky.

Zachovává extrakce textu pořadí čtení?

Knihovna vrací text v pořadí proudu obsahu. U rozvržení s více sloupci může být nutné třídit fragmenty podle pozice.

Mohu extrahovat text ze všech stránek najednou?

Ano. Zavolejte doc.Pages.Accept(absorber), aby prohledal každou stránku v dokumentu.


API Reference Shrnutí

Třída / MetodaPopis:
TextAbsorberExtrahuje celý text jako jeden řetězec
TextFragmentAbsorberExtrahuje strukturované textové fragmenty s údaji o pozici a fontu
TextFragmentBěh textu s polohou, stavem textu a segmenty
TextFragment.TextExtrahovaný řetězec textu
TextFragment.PositionSouřadnice na stránce
TextFragment.TextStateInformace o fontu, velikosti a barvě
TextFragment.SegmentsPodběhy v rámci fragmentu
TextParagraphStavitel pro víceřádkové textové bloky
TextStateVlastnosti názvu, velikosti, barvy a stylu písma
FontRepositoryStatické vyhledávání a načítání písma
FontRepository.FindFontNajděte písmo podle názvu

Viz také:

 Čeština