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; izmantojiet TextAbsorber teksta 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ēmaIemeslsRisinājums
Izvilktais teksts ir saputītsPDF izmanto nestandarta kodējumu vai CID fontu kartējumuPārbaudiet fontu iekļaušanu; dažiem skenētiem PDF ir nepieciešams OCR
Nav atrasti teksta fragmentiLapas saturs ir attēls, nevis tekstsIzmantojiet OCR rīku, lai vispirms pārvērstu attēlu lapas tekstā
Regulārā izteiksme neatgriež atbilstībasParaugs neņem vērā atstarpes, ko ievieto PDF teksta izkārtojumsNormalizējiet atstarpes vai izmantojiet brīvāku paraugu
TextState.Font ir nullFonta resurss trūkst PDFVeiciet 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 / MetodeApraksts
TextAbsorberIzvelk visu tekstu kā vienu virkni
TextFragmentAbsorberIzvelk strukturētus teksta fragmentus ar pozīcijas un fonta datiem
TextFragmentTeksta sekvence ar pozīciju, teksta stāvokli un segmentiem
TextFragment.TextIzvelktā teksta virkne
TextFragment.PositionKoordinātes lapā
TextFragment.TextStateFonta, izmēra un krāsas informācija
TextFragment.SegmentsApakšsekvences fragmentā
TextParagraphBūvētājs daudzrindu teksta blokiem
TextStateFonta nosaukums, izmērs, krāsa un stila īpašības
FontRepositoryStatiska fonta meklēšana un ielāde
FontRepository.FindFontAtrast fontu pēc nosaukuma

Skatiet arī

 Latviešu