Estrarre il testo da un PDF, e cosa gli fa l'impaginazione
Pubblicato il 11/08/2026 · 15 min di lettura · Strumenti per file
Daniel Okonkwo — Sviluppatore front-end e redattore Tech presso OneKitly
Performance web · Formati di file
Verificato su 3 fonti
Un PDF non memorizza righe, né paragrafi, né un ordine di lettura. Memorizza glifi a coordinate di una pagina: ogni estrazione è quindi una ricostruzione, e sono le regole applicate dallo strumento a decidere il risultato. Questo strumento raggruppa in righe i glifi che condividono la stessa linea di base, poi offre due modi: «Mantieni le righe» riproduce la pagina così com'è impaginata, «Unisci in paragrafi» ricongiunge le righe spezzate, prendendo il primo quartile delle distanze fra linee di base come interlinea normale della pagina e ogni scarto superiore a 1,35 volte quel valore come fine paragrafo. Misurato su file reali: una pagina a due colonne esce intrecciata in entrambi i modi — la riga di sinistra e quella di destra condividono la linea di base, vengono unite da uno spazio e la prosa diventa illeggibile. Una tabella conserva le righe ma perde le colonne; le celle restano separate da un solo spazio e una cella vuota sparisce del tutto, così una riga a quattro colonne arriva con tre valori e nulla segnala quale manchi. Le parole spezzate da un trattino vengono ricongiunte in modo paragrafo («con-» più «cluded» dà «concluded»), ma la regola è incondizionata: anche un vero trattino di parola composta a fine riga viene unito, e «long-» più «term» dà «longterm». Le legature invece sono trattate bene: fi e fl tornano come coppie di lettere normali, non come carattere unico di legatura. Intestazioni e piè di pagina ricorrenti vengono estratti su ogni pagina: un decreto di 44 pagine ha prodotto 44 copie della sua intestazione, inserite nel testo. Un PDF scansionato non contiene alcun testo. Lo strumento non restituisce nulla e lo dice chiaramente. Non fa OCR, e non c'è alcun passaggio di OCR nascosto.
Un PDF memorizza glifi a coordinate: non righe, non paragrafi, non un ordine di lettura. L'estrazione ricostruisce il testo da quelle posizioni, ed è per questo che due colonne escono intrecciate, una tabella perde le celle e una scansione non dà nulla. Misurato eseguendo lo strumento.
Un PDF non ha righe — solo glifi a coordinate
È il fatto da cui discende tutto il resto, e quasi nessuna guida lo dice chiaramente. Una pagina PDF è un elenco di istruzioni di disegno. Una di esse dice: metti questo glifo in questo punto, con questo font, a questa dimensione. Nel file non esiste alcun oggetto che significhi «paragrafo», nessuno che significhi «riga» e nessuno che registri quale blocco di testo vada letto per primo. Il formato è definito dalla norma ISO 32000, e l'ordine di lettura semplicemente non fa parte di ciò che una descrizione di pagina ordinaria porta con sé.
Estrarre è dunque ricostruire, ed è qui che ogni strumento differisce. Questo prende la sequenza di glifi restituita da pdf.js, ciascuno con la propria posizione, e raggruppa in una riga quelli le cui linee di base distano meno di mezza altezza di glifo. All'interno di una riga ordina da sinistra a destra e inserisce uno spazio dove lo scarto orizzontale supera un quinto dell'altezza del glifo, perché un PDF che spazia le parole spostando il cursore non emette alcun carattere di spazio. Quella ricostruzione è buona. Ed è anche il motivo per cui i cedimenti qui sotto hanno la forma che hanno: sono tutti casi in cui la geometria della pagina e la logica del documento si contraddicono.
Due colonne: il cedimento che incontrerai per primo
È stata composta una pagina a due colonne con quattro righe per colonna e poi estratta. Il risultato comincia così: «Revenue for the quarter rose by four Costs grew more slowly, at two per cent,». La prima metà è la riga iniziale della colonna di sinistra; la seconda, quella della colonna di destra. Condividono la linea di base, quindi per la ricostruzione sono un'unica riga e vengono unite da uno spazio.
Passare a «Unisci in paragrafi» peggiora le cose invece di sistemarle. Le righe intrecciate vengono ora incollate in un unico blocco di prosa in cui ogni frase è tagliata a metà da un frammento dell'altra colonna. Peggio ancora: la ricongiunzione delle parole spezzate smette di funzionare. La colonna di sinistra chiudeva una riga con «sub-», ma quando la logica di paragrafo guarda il buffer il trattino non è più l'ultimo carattere — il testo della colonna di destra si è infilato dopo. L'uscita recita «by the sub- reclassification of contractors into the scription business». La parola «subscription» è stata strappata in due e le metà distano undici parole.
Non c'è impostazione che risolva questo, perché risolverlo significa rilevare le colonne, e il rilevamento delle colonne è un problema davvero difficile che lo strumento non tenta. Il rimedio pratico è estrarre una pagina alla volta e tagliare il risultato a mano, oppure accettare che un articolo accademico a due colonne o una legge stampata richiederanno una revisione dopo l'estrazione, non prima.
Le tabelle mantengono le righe e perdono le colonne
Una tabella a quattro colonne è stata estratta in modo pulito a livello di riga: «Region Revenue Cost Margin», poi «North 1,240 980 21%». Ogni riga sta sulla propria linea e nell'ordine giusto. Ciò che è sparito è il confine di colonna: le celle sono separate da un solo spazio, esattamente come le parole, quindi nulla nell'uscita distingue una fine di cella da una fine di parola. Incolla il risultato in un foglio di calcolo e ottieni una sola colonna.
Il problema più acuto è la cella vuota. Una tabella con una «Nota» vuota su una riga e un «Fornitore» vuoto su un'altra ha prodotto «Chair Nordia 89.00» e «Desk back-order 240.00»: quattro colonne che arrivano come tre valori, due volte, senza nulla che dica quale colonna sia stata saltata. Un lettore che ricostruisse quella tabella a occhio metterebbe «back-order» nella colonna Fornitore. Nulla nel testo dice il contrario. E una cella il cui contenuto va a capo diventa una riga a sé: la nota «discontinued, replacement pending» è uscita come «Lamp Vela discontinued, 15.00» seguita da una riga che dice solo «replacement pending».
In modo paragrafo la tabella smette del tutto di essere una tabella. Il tutto è tornato come un'unica frase: «Region Revenue Cost Margin North 1,240 980 21% South 870 910 -5% East 2,310 1,760 24%». Se il tuo documento contiene una tabella a cui tieni, usa «Mantieni le righe» — e mettiti in conto di ricostruire le colonne da solo.
Trattini, legature e l'intestazione su ogni pagina
La sillabazione è gestita, con una riserva. In modo paragrafo, una riga che termina con un trattino perde quel trattino e la riga successiva viene incollata subito dopo, così «con-» e «cluded» danno «concluded», e «re-» e «vised» danno «revised». Entrambi i casi sono stati verificati su una pagina a una colonna. Ma la regola è incondizionata: scatta su qualsiasi trattino a fine riga, compreso quello che appartiene alla parola. Su una pagina di prova «long-» a fine riga più «term» ha prodotto «longterm», ed «e-» più «mail» ha prodotto «email». Nessuno dei due è un refuso nell'originale: è la riparazione che scatta di troppo.
Le legature sono la buona notizia, e vale la pena capirle perché rompono la ricerca negli strumenti che le trattano male. Il fi di un tipografo è spesso un singolo carattere nel font, e un font sottoinsieme lo riporta a Unicode tramite una tabella che il PDF porta con sé. Estrai in modo ingenuo e ottieni U+FB01, identico a schermo e senza corrispondenze quando cerchi «file». Il motore sotto questo strumento normalizza per impostazione predefinita: lo stesso file di prova restituisce «confirmed» e «fluently» come lettere normali. Rieseguendo il file identico con la normalizzazione disattivata sono tornati i caratteri di legatura — ed è così che sappiamo che è la normalizzazione a fare il lavoro.
Intestazioni e piè di pagina ricorrenti vengono estratti su ogni singola pagina, e nulla li rimuove. Un decreto consolidato spagnolo di 44 pagine ha reso esattamente 44 copie di «LEGISLACIÓN CONSOLIDADA» e 44 righe di numero di pagina, depositate in mezzo al testo corrente. Nel file estratto una frase si interrompe a metà proposizione in fondo a pagina 5, seguono un piè di pagina, un separatore e due righe di intestazione, e riprende a pagina 6. Non è un difetto della ricostruzione — l'intestazione è davvero sulla pagina — ma significa che ogni documento lungo richiede un passaggio di trova-e-sostituisci per togliere l'arredo prima che il testo sia utilizzabile.
Un PDF scansionato non contiene testo, e l'OCR è un'altra operazione
È la delusione più comune, e merita una risposta netta. Quando una pagina viene scansionata o fotografata, il PDF che ne risulta contiene un'immagine e nient'altro. Non ci sono glifi, né font, né codici di carattere: solo pixel che a te sembrano lettere. L'estrazione non ha nulla da trovare, e scegliere un'altra impaginazione non cambia niente.
Lo strumento lo dice, cosa che non tutti fanno. Alimentato con una pagina che contiene solo un'immagine, ha restituito la stringa vuota e mostrato una frase che spiega come il file non abbia testo selezionabile e sia con ogni probabilità una scansione senza livello di testo. Non restituisce in silenzio un'area di testo vuota, né un'area che contenga solo separatori di pagina: il vuoto è verificato sul corpo delle pagine, non sulla stringa assemblata. Trasformare una scansione in testo richiede il riconoscimento ottico dei caratteri, che legge i pixel e indovina le lettere. Questo strumento non lo fa, e nulla al suo interno lo fa di nascosto in secondo piano.
Due modi in cui una pagina torna vuota, e che cosa ti viene detto
Primo: un intervallo che nomina pagine che il file non ha. Digita 99 su un documento di due pagine e l'analizzatore dell'intervallo scarta il numero fuori limite, così non resta nulla da estrarre. Non è la stessa cosa di una pagina senza testo, e non riceve più la stessa risposta: il messaggio dice quante pagine il documento ha davvero e ti chiede di correggere l'intervallo o di svuotarlo. Misurato su un file di due pagine a cui si chiede la pagina 99: «Nessuna delle pagine richieste esiste in questo documento: ne ha 2.» Un intervallo che sfora la fine invece di cominciare dopo di essa viene semplicemente tagliato: chiedere 1-3 sullo stesso file estrae entrambe le pagine senza dire nulla.
Secondo: un documento che mescola pagine composte con un foglio scansionato — una pagina firmata, un fax, un certificato fotografato e inserito. Quella pagina non porta alcun livello di testo, quindi torna vuota mentre il resto del documento si estrae benissimo. È il caso che passava in silenzio, perché il vuoto era verificato sull'intero documento e le pagine composte bastavano a soddisfarlo: la pagina scansionata si riduceva a un separatore senza nulla sotto, e a nulla del tutto con i separatori disattivati. Il vuoto è ora misurato pagina per pagina. Su un file di prova di quattro pagine la cui seconda era un'immagine, l'estrazione ha restituito le altre tre e, sopra, una riga ambra che diceva «1 pagina/e non portano testo selezionabile ed escono vuote: 2»; con le pagine 2 e 4 come immagini, la stessa riga ha nominato «2, 4». È un avviso, non un rifiuto: il testo che hai ottenuto resta tuo. Ciò che ti indica è quali pagine richiedono un riconoscimento ottico dei caratteri e non un secondo tentativo.
| Elemento di pagina | «Mantieni le righe» | «Unisci in paragrafi» |
|---|---|---|
| Due colonne | Riga di sinistra e di destra unite da uno spazio, su ogni riga | Stesso intreccio, poi incollato in un blocco continuo |
| Riga di tabella | Una riga per riga, celle separate da un solo spazio | L'intera tabella diventa una sola frase |
| Cella di tabella vuota | Sparisce — una riga a quattro colonne arriva come tre valori | Sparisce, e anche il confine di riga |
| Parola spezzata da un trattino | Resta spezzata: «con-» poi «cluded» | Ricongiunta correttamente: «concluded» |
| Trattino di parola composta a fine riga | Mantenuto com'è | Unita per errore: «long-» + «term» dà «longterm» |
| Legatura fi / fl | Coppie di lettere normali, ricercabili | Coppie di lettere normali, ricercabili |
| Intestazione e piè di pagina ricorrenti | Una copia per pagina, dentro il testo | Una copia per pagina, come paragrafo a sé |
| Pagina scansionata (solo immagine) | Nulla — la pagina è nominata in un avviso sopra il testo | Nulla — lo stesso avviso |
Domande frequenti
- Perché il mio PDF a due colonne esce illeggibile?
- Perché la riga di sinistra e quella di destra sono stampate alla stessa altezza, e la ricostruzione raggruppa per altezza. Non ha modo di sapere che la pagina è divisa in due zone di lettura: un PDF non lo registra. Quindi legge da parte a parte, unisce i due frammenti con uno spazio e scende. Entrambi i modi fanno così; il modo paragrafo poi aggrava incollando le righe intrecciate. Se ti serve testo pulito da un documento a due colonne, estrai una pagina alla volta e separa le colonne a mano, oppure trova una versione del documento mai impaginata in colonne.
- Può leggere un PDF scansionato, e fa OCR?
- No, e no. Un PDF scansionato contiene un'immagine di pagina e nessun oggetto di testo, quindi non c'è nulla da estrarre; lo strumento non restituisce nulla e ti dice che il file è con ogni probabilità una scansione senza livello di testo. Il riconoscimento ottico dei caratteri è un'altra operazione: guarda i pixel e indovina quali lettere rappresentano, per questo può sbagliare e ha bisogno di sapere in che lingua sta leggendo. Questo strumento non lo fa, non lo propone e non lo tenta di nascosto. Una prova rapida prima di caricare: apri il file in un lettore qualsiasi e prova a selezionare una frase. Se l'evidenziazione non segue le parole, nessuno strumento di estrazione aiuterà.
- Dice che non c'è testo, ma nel mio lettore riesco a selezionarlo. Perché?
- Controlla prima l'intervallo di pagine. Il campo accetta qualsiasi cosa e scarta in silenzio i numeri che il documento non ha, quindi chiedere pagina 99 di un file di dieci non lascia nulla da estrarre — e il messaggio che ricevi dice esattamente questo, indicando quante pagine il documento ha davvero, invece di chiamare scansione il tuo file. Svuota il campo e riprova. L'altra possibilità è che le pagine selezionate siano proprio quelle scansionate: un documento può mescolare pagine composte con un foglio scansionato, e se hai chiesto solo quel foglio, non c'è nulla sopra. Chiedi piuttosto l'intero documento. Ogni pagina che porta testo viene estratta, e quelle tornate vuote sono nominate in un avviso sopra il risultato, così vedi quali richiedono un riconoscimento ottico dei caratteri.
- Quale modo di impaginazione devo scegliere?
- Scegli «Mantieni le righe» ogni volta che la disposizione della pagina porta significato: tabelle, moduli, fatture, tutto ciò che ha colonne e ogni documento che intendi controllare riga per riga. Scegli «Unisci in paragrafi» solo per prosa corrente a una colonna che stai per incollare in un documento, dove le righe spezzate sono un fastidio più che un'informazione. Il modo paragrafo è quello che ripara le parole spezzate, quindi produce prosa davvero migliore — sul tipo di pagina giusto. Su quello sbagliato distrugge la struttura in modo irreversibile, e dall'uscita non la recuperi: devi rieseguire l'estrazione.
- Toglie l'intestazione e il piè di pagina che si ripetono su ogni pagina?
- No. Ogni elemento ripetuto esce una volta per pagina, e su un documento lungo è molto rumore: un decreto di 44 pagine ha prodotto 44 copie della sua riga di intestazione e 44 righe di numero di pagina, poste fra le frasi che interrompono. Toglierle in modo affidabile richiederebbe di riconoscere che una riga è arredo e non contenuto, un giudizio che lo strumento non dà. Il rimedio pratico è un trova-e-sostituisci in un editor di testo dopo l'estrazione: l'intestazione è una stringa ripetuta identica, quindi una sola sostituzione le cancella tutte. Fallo prima di contare le parole o di dare il testo in pasto ad altro, altrimenti l'arredo ripetuto verrà contato come contenuto.
Articoli che potrebbero interessarti
Tutte le guide →Strumenti correlati
Tutto ciò che è descritto qui è stato misurato ad agosto 2026 eseguendo questi strumenti su file reali, non dedotto da ciò che uno strumento PDF dovrebbe fare. Il comportamento dei PDF non è uniforme: il formato è definito dalla norma ISO 32000, ma l'ordine di lettura, le convenzioni sui metadati e i riquadri di pagina sono tutti punti in cui due strumenti apparentemente corretti divergono, e un file scritto da un produttore insolito può comportarsi diversamente da tutti quelli provati qui. Prima di applicare uno di questi trattamenti a un documento che non puoi sostituire, lavora su una copia e apri il risultato in un lettore di cui ti fidi.
Fonti
Hai notato un errore in questo articolo?