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žijteTextAbsorberpro extrakci prostého textu. - Přijměte absorbera na jedné stránce pro rychlejší výsledky, nebo na
doc.Pagespro 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ém | Příčina | Oprava |
|---|---|---|
| Extrahovaný text je poškozený | PDF používá nestandardní kódování nebo mapování CID fontu | Zkontrolujte vložení fontů; některé naskenované PDF vyžadují OCR |
| Nebyly nalezeny žádné textové fragmenty | Obsah stránky je obrázek, ne text | Nejprve použijte OCR nástroj k převodu obrazových stránek na text |
| Regex nevrací žádné shody | Vzor nebere v úvahu mezery vložené rozložením textu v PDF | Normalizujte mezery nebo použijte volnější vzor |
TextState.Font je null | Zdroj písma chybí v PDF | Zpracová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 / Metoda | Popis: |
|---|---|
TextAbsorber | Extrahuje celý text jako jeden řetězec |
TextFragmentAbsorber | Extrahuje strukturované textové fragmenty s údaji o pozici a fontu |
TextFragment | Běh textu s polohou, stavem textu a segmenty |
TextFragment.Text | Extrahovaný řetězec textu |
TextFragment.Position | Souřadnice na stránce |
TextFragment.TextState | Informace o fontu, velikosti a barvě |
TextFragment.Segments | Podběhy v rámci fragmentu |
TextParagraph | Stavitel pro víceřádkové textové bloky |
TextState | Vlastnosti názvu, velikosti, barvy a stylu písma |
FontRepository | Statické vyhledávání a načítání písma |
FontRepository.FindFont | Najděte písmo podle názvu |