Teksta izguve
Teksta izguve
Aspose.PDF FOSS for .NET nodrošina vairākus mehānismus teksta izguvei no
PDF lapām. TextFragmentAbsorber ir galvenais rīks — tas skenē lapas saturu
un atgriež strukturētus TextFragment objektus ar pozīcijas, fonta un stila
informāciju.
Pamata teksta izguve
TextAbsorber izgūst visu tekstu no lapas vai dokumenta kā vienu virkni.
using var doc = Document.Open(pdfBytes);
var absorber = new TextAbsorber();
doc.Pages[1].Accept(absorber);
string pageText = absorber.Text;Teksta fragmentu izgūšana
TextFragmentAbsorber nodrošina strukturētus rezultātus. Katrs TextFragment ietver izvilkto tekstu, tā pozīciju lapā un fonta informāciju.
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}");
}Meklēšana ar regulārajām izteiksmēm
Pārsūtiet regex paraugu uz TextFragmentAbsorber, lai atrastu konkrētu tekstu.
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}");
}Teksta segmenti
Katrs TextFragment var saturēt vairākus TextSegment objektus, kad teksts aptver dažādus fonta posmus.
foreach (var fragment in absorber.TextFragments)
{
foreach (var segment in fragment.Segments)
{
Console.WriteLine($"Segment: {segment.Text}, Font: {segment.TextState.Font.FontName}");
}
}Fontu pārvaldība
FontRepository nodrošina metodes, lai atrastu un ielādētu fontus.
var font = FontRepository.FindFont("Helvetica");Teksta rindkopu veidošana
TextParagraph ļauj izveidot vairāku rindu teksta blokus, lai ievietotu tos lapā.
var paragraph = new TextParagraph();
paragraph.AppendLine(new TextFragment("First line"));
paragraph.AppendLine(new TextFragment("Second line"));Padomi un labākās prakses
- Izmantojiet
TextFragmentAbsorber, ja nepieciešami pozīcijas un fonta dati; izmantojietTextAbsorberteksta izguvei. - Pieņemiet absorbciju vienā lapā, lai iegūtu ātrākus rezultātus, vai uz
doc.Pages, lai meklētu visā dokumentā. - Regulāro izteiksmju meklēšana pēc noklusējuma ir reģistrjūtīga — izmantojiet
(?i)prefiksu, lai veiktu reģistrneatkarīgu atbilstību. - Pārbaudiet
TextState.Font.IsEmbedded, lai noteiktu, vai fonts ir iekļauts PDF. - Lieliem dokumentiem apstrādājiet lapas pa vienai, lai pārvaldītu atmiņas patēriņu.
Biežāk sastopamās problēmas
| Problēma | Iemesls | Risinājums |
|---|---|---|
| Izvilktais teksts ir saputīts | PDF izmanto nestandarta kodējumu vai CID fontu kartējumu | Pārbaudiet fontu iekļaušanu; dažiem skenētiem PDF ir nepieciešams OCR |
| Nav atrasti teksta fragmenti | Lapas saturs ir attēls, nevis teksts | Izmantojiet OCR rīku, lai vispirms pārvērstu attēlu lapas tekstā |
| Regulārā izteiksme neatgriež atbilstības | Paraugs neņem vērā atstarpes, ko ievieto PDF teksta izkārtojums | Normalizējiet atstarpes vai izmantojiet brīvāku paraugu |
TextState.Font ir null | Fonta resurss trūkst PDF | Veiciet null pārbaudes, pārbaudot fonta īpašības |
BUJ
Vai varu izvilkt tekstu no konkrēta lapas reģiona?
Jā. Iestatiet TextFragmentAbsorber.TextSearchOptions.Rectangle, lai ierobežotu meklēšanu uz konkrētu lapas apgabalu.
Vai teksta izguve saglabā lasīšanas secību?
Bibliotēka atgriež tekstu satura plūsmas secībā. Daudzkolonu izkārtojumos var būt nepieciešams kārtot fragmentus pēc pozīcijas.
Vai varu izvilkt tekstu no visām lapām vienlaicīgi?
Jā. Izsauciet doc.Pages.Accept(absorber), lai meklētu katru lapu dokumentā.
API Atsauces kopsavilkums
| Klase / Metode | Apraksts |
|---|---|
TextAbsorber | Izvelk visu tekstu kā vienu virkni |
TextFragmentAbsorber | Izvelk strukturētus teksta fragmentus ar pozīcijas un fonta datiem |
TextFragment | Teksta sekvence ar pozīciju, teksta stāvokli un segmentiem |
TextFragment.Text | Izvelktā teksta virkne |
TextFragment.Position | Koordinātes lapā |
TextFragment.TextState | Fonta, izmēra un krāsas informācija |
TextFragment.Segments | Apakšsekvences fragmentā |
TextParagraph | Būvētājs daudzrindu teksta blokiem |
TextState | Fonta nosaukums, izmērs, krāsa un stila īpašības |
FontRepository | Statiska fonta meklēšana un ielāde |
FontRepository.FindFont | Atrast fontu pēc nosaukuma |