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žiteTextAbsorberpre extrakciu čistého textu. - Prijmite absorbér na jednej stránke pre rýchlejšie výsledky, alebo na
doc.Pagespre 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ém | Príčina | Riešenie |
|---|---|---|
| Extrahovaný text je skomolený | PDF používa neštandardové kódovanie alebo mapovanie CID písma | Skontrolujte vloženie písma; niektoré naskenované PDF vyžadujú OCR |
| Nenašli sa žiadne textové fragmenty | Obsah stránky je obrázok, nie text | Použite OCR nástroj na konverziu stránok s obrázkom na text najprv |
| Regex nevracia žiadne zhody | Vzor neberie do úvahy medzery vložené rozložením textu v PDF | Normalizujte medzery alebo použite voľnejší vzor |
TextState.Font je null | Zdroj písma chýba v PDF | Spracujte 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óda | Popis |
|---|---|
TextAbsorber | Extrahuje celý text ako jeden reťazec |
TextFragmentAbsorber | Extrahuje štruktúrované fragmenty textu s informáciami o pozícii a písme |
TextFragment | Úsek textu s pozíciou, stavom textu a segmentmi |
TextFragment.Text | Extrahovaný textový reťazec |
TextFragment.Position | Súradnice na stránke |
TextFragment.TextState | Informácie o fonte, veľkosti a farbe |
TextFragment.Segments | Podúseky v rámci fragmentu |
TextParagraph | Staviteľ pre viacriadkové textové bloky |
TextState | Názov fontu, veľkosť, farba a vlastnosti štýlu |
FontRepository | Statické vyhľadávanie a načítanie fontu |
FontRepository.FindFont | Nájsť font podľa názvu |