Szövegkinyerés

Szövegkinyerés

Aspose.PDF FOSS for .NET több mechanizmust biztosít a PDF oldalak szövegének kinyerésére. TextFragmentAbsorber az elsődleges eszköz — beolvassa az oldal tartalmát, és strukturált TextFragment objektumokat ad vissza pozícióval, betűtípussal és stílusinformációval.


Alap szövegkinyerés

TextAbsorber kinyeri az összes szöveget egy oldalról vagy dokumentumról egyetlen karakterláncként.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Szövegrészletek kinyerése

TextFragmentAbsorber strukturált eredményeket biztosít. Minden TextFragment tartalmazza a kinyert szöveget, annak pozícióját az oldalon, valamint a betűtípus részleteit.

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}");
}

Keresés reguláris kifejezésekkel

Adjon át egy regex mintát a TextFragmentAbsorber-nek, hogy megtalálja a konkrét szöveget.

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}");
}

Szövegszegmensek

Minden TextFragment több TextSegment objektumot tartalmazhat, ha a szöveg különböző betűtípus-futamokban terjed.

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

Betűkészlet‑kezelés

FontRepository módszereket biztosít a betűtípusok kereséséhez és betöltéséhez.

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

Szöveges bekezdések létrehozása

TextParagraph lehetővé teszi több soros szöveges blokkok létrehozását egy oldalba való beszúráshoz.

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

Tippek és legjobb gyakorlatok

  • Használja a TextFragmentAbsorber jelölőt, ha pozíció- és betűtípusadatokra van szükség; használja a TextAbsorber jelölőt egyszerű szöveg kinyeréséhez.
  • Fogadja el az abszorbert egyetlen oldalon a gyorsabb eredményekért, vagy a doc.Pages jelölővel a teljes dokumentum kereséséhez.
  • A reguláris kifejezés keresés alapértelmezés szerint kis- és nagybetű érzékeny — használja a (?i) előtagot a kis- és nagybetű érzéketlen egyezéshez.
  • Ellenőrizze a TextState.Font.IsEmbedded jelölőt, hogy megállapítsa, be van-e ágyazva egy betűtípus a PDF-ben.
  • Nagy dokumentumok esetén dolgozza fel az oldalakat egyesével a memóriahasználat kezeléséhez.

Gyakori problémák

ProblémaOkMegoldás
A kinyert szöveg torzA PDF nem szabványos kódolást vagy CID betűkészlet leképezést használEllenőrizze a betűkészlet beágyazását; egyes beolvasott PDF-ekhez OCR szükséges
Nem találhatók szövegrészekAz oldal tartalma kép, nem szövegHasználjon OCR eszközt a képes oldalakat először szöveggé konvertálni
A reguláris kifejezés nem ad egyezéstA minta nem veszi figyelembe a PDF szövegelrendezés által beillesztett szóközöketNormalizálja a szóközöket, vagy használjon lazább mintát
TextState.Font nullA betűkészlet erőforrás hiányzik a PDF-bőlVégezzen null-ellenőrzéseket a betűkészlet tulajdonságainak vizsgálatakor

GYIK

Kivonhatok szöveget egy oldal egy meghatározott területéről?

Igen. Állítsa be TextFragmentAbsorber.TextSearchOptions.Rectangle-t, hogy a keresést a lap egy meghatározott területére korlátozza.

Megőrzi a szövegkinyerés az olvasási sorrendet?

A könyvtár a szöveget a tartalomfolyam sorrendjében adja vissza. Többoszlopos elrendezéseknél előfordulhat, hogy a töredékeket pozíció szerint kell rendezni.

Kivonhatok szöveget az összes oldalról egyszerre?

Igen. Hívja meg doc.Pages.Accept(absorber) a dokumentum minden oldalának kereséséhez.


API Referencia Összefoglaló

Osztály / MetódusLeírás
TextAbsorberKivonja az összes szöveget egyetlen karakterláncként
TextFragmentAbsorberKivonja a strukturált szövegrészleteket pozíció- és betűtípusadatokkal
TextFragmentEgy szövegszakasz pozícióval, szövegállapottal és szegmensekkel
TextFragment.TextA kivont szöveges karakterlánc
TextFragment.PositionKoordináták az oldalon
TextFragment.TextStateBetűtípus, méret és szín információ
TextFragment.SegmentsAl-szakaszok a részleten belül
TextParagraphÉpítő több soros szövegtömbök számára
TextStateBetűtípus neve, mérete, színe és stílus tulajdonságai
FontRepositoryStatikus betűtípus keresés és betöltés
FontRepository.FindFontBetűtípus keresése név alapján

Lásd még

 Magyar