Extracció de text

Extracció de text

Aspose.PDF FOSS for .NET proporciona diversos mecanismes per extreure text de
les pàgines PDF. TextFragmentAbsorber és l’eina principal — escaneja el contingut de la pàgina
i retorna objectes estructurats TextFragment amb informació de posició, tipografia i estil
informació.


Extracció de text bàsica

TextAbsorber extreu tot el text d’una pàgina o document com una única cadena.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Extracció de fragments de text

TextFragmentAbsorber proporciona resultats estructurats. Cada TextFragment inclou el text extret, la seva posició a la pàgina i els detalls de la font.

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

Cerca amb expressions regulars

Passa un patró regex a TextFragmentAbsorber per trobar text específic.

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

Segments de text

Cada TextFragment pot contenir múltiples objectes TextSegment quan el text s’estén per diferents execucions de tipografia.

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

Gestió de fonts

FontRepository proporciona mètodes per trobar i carregar fonts.

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

Construint paràgrafs de text

TextParagraph permet construir blocs de text multilínia per inserir‑los en una pàgina.

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

Consells i bones pràctiques

  • Utilitzeu TextFragmentAbsorber quan necessiteu dades de posició i de tipografia; utilitzeu TextAbsorber per a l’extracció de text pla.
  • Accepteu l’absorbedor en una sola pàgina per a resultats més ràpids, o a doc.Pages per cercar tot el document.
  • La cerca d’expressions regulars és sensible a majúscules per defecte — utilitzeu el prefix (?i) per a coincidències sense distinció de majúscules.
  • Comproveu TextState.Font.IsEmbedded per determinar si una tipografia està incrustada al PDF.
  • Per a documents grans, processa les pàgines una a una per gestionar l’ús de memòria.

Problemes comuns

ProblemaCausaSolució
El text extret és il·legibleEl PDF utilitza una codificació no estàndard o un mapatge de fonts CIDComproveu la incrustació de fonts; alguns PDFs escanejats requereixen OCR
No s’han trobat fragments de textEl contingut de la pàgina és una imatge, no textUtilitzeu una eina OCR per convertir primer les pàgines d’imatge a text
L’expressió regular no retorna coincidènciesEl patró no té en compte els espais inserits per la disposició del text del PDFNormalitzeu els espais o utilitzeu un patró més flexible
TextState.Font és nulFalta el recurs de font al PDFGestioneu les comprovacions de nul·litat en inspeccionar les propietats de la font

PMF

Puc extreure text d’una regió específica d’una pàgina?

Sí. Estableix TextFragmentAbsorber.TextSearchOptions.Rectangle per limitar la cerca a una àrea específica de la pàgina.

L’extracció de text conserva l’ordre de lectura?

La biblioteca retorna text en l’ordre del content-stream. Per a disposicions de diverses columnes, pot ser necessari ordenar els fragments per posició.

Puc extreure text de totes les pàgines alhora?

Sí. Crida doc.Pages.Accept(absorber) per cercar cada pàgina del document.


Resum de la referència de l’API

Classe / MètodeDescripció
TextAbsorberExtreu tot el text com una única cadena
TextFragmentAbsorberExtreu fragments de text estructurat amb posició i dades de tipografia
TextFragmentUna seqüència de text amb posició, estat del text i segments
TextFragment.TextLa cadena de text extreta
TextFragment.PositionCoordenades a la pàgina
TextFragment.TextStateInformació de tipografia, mida i color
TextFragment.SegmentsSubseqüències dins del fragment
TextParagraphConstructor per a blocs de text multilínia
TextStateNom de la tipografia, mida, color i propietats d’estil
FontRepositoryCerca i càrrega estàtica de tipografies
FontRepository.FindFontTroba una tipografia per nom

Vegeu també

 Català