Tekstin poiminta

Tekstin poiminta

Aspose.PDF FOSS for .NET tarjoaa useita mekanismeja tekstin poimimiseksi PDF-sivuista. TextFragmentAbsorber on ensisijainen työkalu — se skannaa sivun sisällön ja palauttaa rakenteellisia TextFragment-objekteja, joissa on sijainti-, fontti- ja tyylitiedot.


Perustekstin poiminta

TextAbsorber poimii kaiken tekstin sivulta tai asiakirjasta yhtenä merkkijonona.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Tekstin fragmenttien poiminta

TextFragmentAbsorber tarjoaa rakenteellisia tuloksia. Jokainen TextFragment sisältää poimitun tekstin, sen sijainnin sivulla ja fonttitiedot.

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

Haku säännöllisillä lausekkeilla

Syötä regex‑malli TextFragmentAbsorber:iin löytääksesi tiettyä tekstiä.

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

Tekstikatkelmat

Jokainen TextFragment voi sisältää useita TextSegment-objekteja, kun teksti kattaa eri fonttijaksoja.

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

Fonttien hallinta

FontRepository tarjoaa menetelmiä fonttien etsimiseen ja lataamiseen.

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

Tekstikappaleiden rakentaminen

TextParagraph mahdollistaa monirivisten tekstilohkojen rakentamisen sivulle lisättäväksi.

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

Vinkkejä ja parhaita käytäntöjä

  • Käytä TextFragmentAbsorber kun tarvitset sijainti- ja fonttitietoja; käytä TextAbsorber tavallisen tekstin poimintaan.
  • Hyväksy absorberi yhdellä sivulla nopeampien tulosten saamiseksi tai doc.Pages koko asiakirjan hakemiseen.
  • Säännöllinen lausekkeen haku on oletuksena kirjainkoolla riippuva — käytä (?i) -etuliitettä kirjainkoolla riippumattomaan vastaavuuteen.
  • Tarkista TextState.Font.IsEmbedded selvittääksesi, onko fontti upotettu PDF:ssä.
  • Suurille asiakirjoille käsittele sivut yksi kerrallaan muistin käytön hallitsemiseksi.

Yleiset ongelmat

OngelmaSyyKorjaus
Poimittu teksti on sotkuistaPDF käyttää epästandardia koodausta tai CID-fonttien kartoitustaTarkista fontin upotus; jotkut skannatut PDF:t vaativat OCR:n
Tekstikatkelmia ei löytynytSivun sisältö on kuva, ei tekstiKäytä OCR-työkalua muuntaaksesi kuvasivut ensin tekstiksi
Regex ei anna osumiaMallissa ei oteta huomioon PDF-tekstin asettelun lisäämää välilyöntiäNormalisoi välilyönnit tai käytä löysempää mallia
TextState.Font on nullFonttiresurssi puuttuu PDF:stäKäsittele null-tarkistukset fonttien ominaisuuksia tarkasteltaessa

UKK

Voinko poimia tekstiä sivun tietystä alueesta?

Kyllä. Aseta TextFragmentAbsorber.TextSearchOptions.Rectangle rajoittamaan hakua sivun tiettyyn alueeseen.

Säilyttääkö tekstin poiminta lukujärjestyksen?

Kirjasto palauttaa tekstin content‑stream -järjestyksessä. Monisarakkeisissa asetteluissa saatat joutua järjestämään fragmentit sijainnin mukaan.

Voinko poimia tekstiä kaikilta sivuilta kerralla?

Kyllä. Kutsu doc.Pages.Accept(absorber) hakeaksesi jokaisen sivun asiakirjasta.


API-viittauksen yhteenveto

Luokka / MetodiKuvaus
TextAbsorberPoimii kaiken tekstin yhtenä merkkijonona
TextFragmentAbsorberPoimii rakenteellisia tekstikatkelmia, joissa on sijainti- ja fonttitiedot
TextFragmentTekstijakso, jossa on sijainti, tekstin tila ja segmentit
TextFragment.TextPoimittu tekstimerkkijono
TextFragment.PositionKoordinaatit sivulla
TextFragment.TextStateFontti-, koko- ja väritiedot
TextFragment.SegmentsAlijaksoja fragmentissa
TextParagraphRakentaja monirivisille tekstilohkoille
TextStateFontin nimi, koko, väri ja tyyliominaisuudet
FontRepositoryStaattinen fonttihaku ja -lataus
FontRepository.FindFontEtsi fontti nimen perusteella

Katso myös

 Suomi