Estrazione del testo

Estrazione del testo

Aspose.PDF FOSS per .NET fornisce diversi meccanismi per estrarre il testo dalle pagine PDF. TextFragmentAbsorber è lo strumento principale — scansiona il contenuto della pagina e restituisce oggetti TextFragment strutturati con informazioni su posizione, carattere e stile.


Estrazione di testo di base

TextAbsorber estrae tutto il testo da una pagina o documento come una singola stringa.

using var doc = Document.Open(pdfBytes);

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

string pageText = absorber.Text;

Estrazione di frammenti di testo

TextFragmentAbsorber fornisce risultati strutturati. Ogni TextFragment include il testo estratto, la sua posizione sulla pagina e i dettagli del carattere.

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

Ricerca con espressioni regolari

Passa un pattern regex a TextFragmentAbsorber per trovare testo specifico.

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

Segmenti di testo

Ogni TextFragment può contenere più oggetti TextSegment quando il testo attraversa diverse esecuzioni di font.

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

Gestione dei font

FontRepository fornisce metodi per trovare e caricare i font.

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

Creazione di paragrafi di testo

TextParagraph consente di costruire blocchi di testo multilinea per l’inserimento in una pagina.

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

Suggerimenti e buone pratiche

  • Usa TextFragmentAbsorber quando hai bisogno di dati di posizione e carattere; usa TextAbsorber per l’estrazione del testo semplice.
  • Accetta l’assorbitore su una singola pagina per risultati più rapidi, oppure su doc.Pages per cercare l’intero documento.
  • La ricerca con espressioni regolari è sensibile al maiuscolo/minuscolo per impostazione predefinita — usa il prefisso (?i) per corrispondenze senza distinzione di maiuscole.
  • Controlla TextState.Font.IsEmbedded per determinare se un carattere è incorporato nel PDF.
  • Per documenti di grandi dimensioni, elabora le pagine una alla volta per gestire l’uso della memoria.

Problemi comuni

ProblemaCausaCorrezione
Il testo estratto è illeggibileIl PDF utilizza una codifica non standard o una mappatura dei font CIDVerifica l’incorporazione dei font; alcuni PDF scansionati richiedono OCR
Nessun frammento di testo trovatoIl contenuto della pagina è un’immagine, non testoUtilizza uno strumento OCR per convertire le pagine immagine in testo prima
Regex non restituisce corrispondenzeIl modello non tiene conto degli spazi inseriti dal layout del testo PDFNormalizza gli spazi o usa un modello più permissivo
TextState.Font è nulloLa risorsa del font manca nel PDFGestisci i controlli di nullità quando ispezioni le proprietà del font

FAQ

Posso estrarre testo da una regione specifica di una pagina?

Sì. Imposta TextFragmentAbsorber.TextSearchOptions.Rectangle per limitare la ricerca a un’area specifica della pagina.

L’estrazione del testo preserva l’ordine di lettura?

La libreria restituisce il testo nell’ordine del flusso di contenuto. Per layout a più colonne, potresti dover ordinare i frammenti per posizione.

Posso estrarre il testo da tutte le pagine in una volta?

Sì. Chiama doc.Pages.Accept(absorber) per cercare ogni pagina nel documento.


API Reference Sommario

Classe / MetodoDescrizione
TextAbsorberEstrae tutto il testo come una singola stringa
TextFragmentAbsorberEstrae frammenti di testo strutturati con dati di posizione e font
TextFragmentUna sequenza di testo con posizione, stato del testo e segmenti
TextFragment.TextLa stringa di testo estratta
TextFragment.PositionCoordinate nella pagina
TextFragment.TextStateInformazioni su carattere, dimensione e colore
TextFragment.SegmentsSotto-run all’interno del frammento
TextParagraphBuilder per blocchi di testo multilinea
TextStateNome del font, dimensione, colore e proprietà di stile
FontRepositoryRicerca statica e caricamento del font
FontRepository.FindFontTrova un font per nome

Vedi anche

 Italiano