Vai al contenuto
FileTinker

Come estrarre il testo da un’immagine o da un PDF scansionato utilizzando la tecnologia OCR, direttamente nel browser.

Dal team di FileTinker7 min di lettura

Hai una foto di un documento, uno screenshot o un file PDF scansionato e hai bisogno di estrarre il testo contenuto in modo da poterlo modificare, cercare o incollare altrove. Questa operazione si chiama OCR, ovvero riconoscimento ottico dei caratteri, e non è più necessario utilizzare un software per computer o caricare il file su un sito web: i browser moderni possono eseguire un motore OCR completo direttamente sul dispositivo. Tuttavia, l’OCR non è una magia. In caso di scansione di buona qualità, riesce a riconoscere quasi tutti i caratteri; con una foto scattata con un telefono e di qualità inferiore, produce risultati insoddisfacenti, e la differenza dipende quasi interamente dalla qualità dell’immagine di input. Questa guida spiega cosa fa effettivamente l’OCR, come capire quando non è nemmeno necessario utilizzarlo, cosa ne compromette il funzionamento, perché l’impostazione della lingua è più importante di quanto si pensi e cosa fa esattamente uno strumento integrato nel browser e cosa non invia attraverso la rete.

OCR in un paragrafo: pixel in, indovinelli fuori

Una pagina digitalizzata non contiene testo. Per un computer, si tratta semplicemente di una griglia di pixel colorati, proprio come una fotografia di una spiaggia. L’OCR è un software che analizza questa griglia, individua le forme che assomigliano a lettere e produce una stima, cercando di identificare i caratteri reali. La parola «stima» è importante: il programma confronta i modelli di pixel con ciò che ha appreso riguardo all’aspetto del testo stampato, quindi il risultato è una ricostruzione statistica, non una copia esatta.

Ecco perché lo stesso strumento può ottenere risultati quasi perfetti con un determinato file, ma essere del tutto inutile con un altro. Se gli si fornisce una scansione nitida, ad alto contrasto, di un testo stampato, un buon motore di riconoscimento ottico dei caratteri (OCR) lo elabora con pochi errori. Se invece gli si fornisce una foto scattata con un telefono, con scarsa illuminazione e angolazione errata, di un testo di piccole dimensioni, ogni fase del processo di elaborazione si deteriora: individua righe inesistenti, divide i caratteri in punti sbagliati e produce con sicurezza lettere errate. Considerate quindi l’output dell’OCR come una bozza preliminare che necessita di una revisione, e non come una fonte di verità assoluta, soprattutto quando si tratta di numeri.

Innanzitutto, controlla se ti serve davvero l'OCR.

Esistono due tipi di file PDF e, sullo schermo, appaiono identici. Un file PDF creato in formato digitale, ovvero esportato da Word, Google Docs o da un sito web, memorizza il testo come una sequenza di caratteri. Aprendolo con qualsiasi programma di visualizzazione PDF, è possibile selezionare il testo con il cursore, cercarlo e copiarlo. Questa copia è immediata e accurata al 100%, cosa che nessun software OCR potrà mai eguagliare. Un file PDF ottenuto tramite scansione è diverso: ogni pagina è una fotografia di una pagina cartacea e non contiene caratteri selezionabili.

Quindi, prima di applicare la tecnologia OCR a un file PDF, prova a selezionare una parola al suo interno o a cercarne una. Se questa operazione funziona, copia semplicemente il testo direttamente e salta del tutto la fase di OCR. Applicare la tecnologia OCR a un PDF creato in formato digitale significa trasformare un testo perfettamente leggibile in un’immagine e poi cercare di ricostruirlo, il che è più lento e meno preciso rispetto al testo originale. La tecnologia OCR è utile nei casi in cui la selezione del testo non riesce: ad esempio, per documenti scansionati, fax, foto di documenti cartacei e screenshot.

Cosa rende la tecnologia OCR precisa e cosa ne compromette segretamente l’efficacia?

I motori OCR vengono addestrati su testi stampati di alta qualità, quindi la precisione diminuisce allontanandosi da questo standard ideale: una pagina piatta, una messa a fuoco nitida, un testo scuro su uno sfondo chiaro, un carattere normale. Il fattore più importante è la risoluzione. La regola empirica consolidata prevede di eseguire la scansione a 300 DPI, il che, nel caso di una foto o di uno screenshot, significa che le lettere avranno un’altezza di circa 20 pixel o più. Al di sotto di questa soglia, i tratti che distinguono una 8 da una B o una e da una c sono larghi solo uno o due pixel, e le informazioni di cui il motore ha bisogno semplicemente non sono presenti nell’immagine. Aumentare la risoluzione di un’immagine a bassa risoluzione in un secondo momento non la riporterà alla qualità desiderata.

I killer comuni vale la pena conoscerli per nome, perché ognuno è evitabile al momento della cattura:

  • Effetto sfocato e vibrazioni della fotocamera: i contorni poco definiti rendono le forme delle lettere meno chiare.
  • Quando un testo viene fotografato o digitalizzato con un angolo di inclinazione, il sistema di riconoscimento delle linee smette di funzionare.
  • Testo di piccole dimensioni: le immagini di schermata contenenti testo di piccole dimensioni o caratteri minuti rientrano nella soglia minima di circa 20 pixel.
  • Basso contrasto: testo grigio su sfondo grigio, oppure testo sovrapposto a foto o a sfondi colorati.
  • Riflessi e ombre: in una foto scattata con il telefono, la presenza della propria ombra sulla pagina può compromettere intere sezioni dell’immagine.
  • Calligrafia: i comuni motori di riconoscimento ottico dei caratteri (OCR) sono progettati per elaborare testi stampati; la scrittura corsiva viene interpretata come rumore.
  • Caratteri decorativi: caratteri eccessivamente stilizzati o compressi si discostano troppo dai dati di addestramento.
  • Layout complessi: pagine e tabelle con più colonne potrebbero essere visualizzate con l’ordine di lettura alterato.

Come acquisire un documento in modo che possa essere letto correttamente da un software OCR.

Cinque minuti di cura al momento della cattura ti risparmiano trenta minuti per correggere un output distorto. Se hai uno scanner, scansiona i documenti di testo a 300 DPI; il bianco e nero va bene e mantiene i file più piccoli rispetto al colore. Se usi il telefono, appoggia la pagina su una superficie piana in luce uniforme, tieni la fotocamera direttamente sopra e non di lato, riempi l'inquadratura con la pagina e assicurati che la tua ombra non copra il testo. Tocca lo schermo per mettere a fuoco il testo prima di scattare.

Quindi, ritaglia l’immagine. Se il testo che desideri estrarre è presente nella stessa inquadratura di un bordo di tabella, di una mano o di uno sfondo troppo affollato, ritaglia l’immagine in modo da includere solo la porzione contenente il testo, prima di avviare il processo di riconoscimento ottico dei caratteri (OCR). Tutto il resto presente nell’inquadratura potrebbe essere interpretato erroneamente dal motore come testo. Ognuna di queste operazioni corrisponde direttamente a una delle possibili cause di errore elencate in precedenza: risoluzione, inclinazione, contrasto e presenza di elementi di disturbo.

Lingue: l’impostazione che gli utenti tendono a ignorare.

I motori OCR utilizzano un modello specifico e addestrato per ogni lingua, poiché il modello codifica sia la forma delle lettere sia le statistiche della lingua, ovvero le sequenze di caratteri che possono formare parole valide. Se si seleziona la lingua sbagliata, non si otterranno semplicemente risultati leggermente peggiori, ma un output insensato: un modello inglese, analizzando un testo cinese, restituirà diligentemente le lettere latine che più si avvicinano a quei caratteri. Se l’output OCR sembra composto da caratteri casuali, la prima cosa da controllare è l’impostazione della lingua, prima di attribuire la colpa alla qualità dell’immagine.

La funzione OCR di FileTinker supporta 17 lingue: inglese, cinese tradizionale e cinese semplificato, francese, tedesco, spagnolo, italiano, portoghese, olandese, russo, giapponese, coreano, arabo, hindi, polacco, turco e vietnamita, oltre a una modalità combinata inglese + cinese per i documenti che contengono effettivamente entrambe le lingue, una combinazione comune nelle ricevute e nei moduli provenienti da Taiwan e Hong Kong. I dati di ciascuna lingua vengono scaricati solo la prima volta che la si utilizza. Utilizzare la modalità combinata solo per le pagine che contengono effettivamente entrambe le lingue: fornire al motore due alfabeti da considerare in una pagina scritta in una sola lingua non fa altro che aumentare le possibilità di errore.

Cosa fa esattamente uno strumento di riconoscimento ottico dei caratteri (OCR) integrato nel browser con il tuo file.

Lo strumento «Da immagine a testo» di FileTinker utilizza il motore open source Tesseract, compilato in WebAssembly, all’interno di un processo in background nella scheda del browser. È sufficiente selezionare una lingua, caricare un file e osservare la barra di avanzamento durante l’elaborazione. Accetta i formati di immagine più comuni, come JPG, PNG, WebP e altri, oltre ai PDF. Le immagini vengono inviate direttamente al motore.

I file PDF acquisiti tramite scansione prevedono una fase aggiuntiva: lo strumento prima converte ogni pagina in un’immagine con una risoluzione doppia rispetto a quella originale, utilizzando pdf.js, quindi invia le pagine al motore una alla volta, mostrando un indicatore di avanzamento simile a «pagina 2 di 5». Le pagine riconosciute vengono unite, separate da una riga vuota, in un unico risultato. Si noti che questo processo viene applicato a tutti i file PDF, compresi quelli creati in formato digitale, ed è proprio per questo che è consigliabile eseguire prima il controllo di selezione e copia menzionato in precedenza.

Il risultato viene visualizzato in una casella di testo modificabile, in modo da poter correggere immediatamente eventuali errori di riconoscimento, per poi copiarlo o scaricarlo come file .txt. Se il motore non trova nulla, lo comunica esplicitamente invece di inventare del testo. E se si desidera ottenere nuovamente il testo corretto in formato documento, lo strumento di FileTinker che converte il testo in PDF trasformerà il file .txt in un PDF con testo selezionabile, che di solito è l’obiettivo finale della scansione.

Le clausole relative alla privacy, esposte in modo chiaro e semplice.

«Funziona direttamente nel browser»: questa affermazione è vera, ma non significa che non ci sia alcuna attività di rete; è importante precisare la differenza. La tua immagine o il tuo file PDF non vengono mai caricati: vengono decodificati, elaborati e riconosciuti interamente sul tuo dispositivo, e nessun server li riceve. Ciò che viene trasmesso sulla rete è il software. Al primo utilizzo, lo strumento scarica il motore OCR (il componente principale e il suo nucleo WebAssembly, forniti tramite la rete CDN jsDelivr) e i dati addestrati per la lingua selezionata (forniti dall'host standard dei dati Tesseract). Si tratta di un download unico: pochi megabyte per il motore, più il modello linguistico, che varia da pochi megabyte per l'inglese a decine di megabyte per lingue come il cinese o il giapponese. Il browser memorizza questi dati nella cache, in modo che le successive esecuzioni siano molto più rapide.

In sintesi: il codice viene eseguito localmente e il file non viene mai caricato. Questa differenza è ciò che rende l’OCR eseguito direttamente nel browser una soluzione valida per materiali sensibili come contratti, documenti d’identità e referti medici, in cui l’invio del documento a un server esterno è proprio ciò che si cerca di evitare. Un osservatore sulla rete potrebbe accorgersi che hai utilizzato un software OCR, ma non potrebbe vedere su quali dati lo hai applicato.

Correggere e migliorare il risultato ottenuto con l’OCR.

Anche un buon risultato va revisionato. L'OCR ha confusioni tipiche: la "l" minuscola, la cifra "1" e la "I" maiuscola; la "O" e lo "0"; "rn" letto come "m". Controlla con cura i numeri, perché una cifra sbagliata in un numero di telefono o nel totale di una fattura è sia probabile sia invisibile all'ortografico. Anche le stranezze strutturali sono normali: spesso otterrai un a capo alla fine di ogni riga stampata invece che di ogni paragrafo, e le parole spezzate con il trattino rimarranno divise.

Poiché la casella di output è modificabile, esegua questa operazione di pulizia prima di copiare o scaricare il testo. Per una lettera di una sola pagina, ci vuole circa un minuto. Questo minuto, unito a una buona acquisizione, fa la differenza tra l’OCR che è semplicemente una curiosità e l’OCR che è il metodo più rapido per trasformare un documento cartaceo in un documento digitale utilizzabile.

Domande frequenti

È possibile estrarre il testo da un file PDF scansionato senza doverlo caricare da nessuna parte?

Sì. Gli strumenti OCR integrati nel browser, come «Image to Text» di FileTinker, utilizzano il motore Tesseract in formato WebAssembly direttamente sul dispositivo dell’utente: ogni pagina del PDF viene convertita in un’immagine all’interno del browser, viene riconosciuto il testo sulla macchina dell’utente e il file non viene mai inviato a un server. I PDF scansionati con più pagine vengono elaborati pagina per pagina e restituiti come un unico file di testo.

Perché l’output del mio software OCR è incomprensibile?

La causa più frequente è un’impostazione errata della lingua: i modelli OCR sono specifici per ogni lingua, quindi un modello inglese che elabora il cinese (o viceversa) produce risultati privi di significato anziché un testo leggermente meno preciso. Successivamente, verificare la qualità dell’immagine: un testo con dimensioni inferiori a circa 20 pixel in altezza, immagini sfocate, inclinate o con scarso contrasto, compromettono le prestazioni del motore, facendolo operare al di sotto della soglia necessaria per distinguere le lettere.

Il software OCR funziona anche con la scrittura a mano?

In generale, no. I comuni motori di riconoscimento ottico dei caratteri (OCR), tra cui Tesseract, sono addestrati per riconoscere il testo stampato, quindi la scrittura corsiva viene interpretata come rumore e persino le lettere maiuscole ben formate generano molti errori. Per quanto riguarda le note scritte a mano, è consigliabile trascriverle manualmente o utilizzare un servizio specializzato per il riconoscimento della scrittura, piuttosto che un sistema OCR tradizionale.

Quale risoluzione devo impostare per ottenere risultati accurati con l’OCR?

Scansiona i documenti a una risoluzione di 300 DPI oppure assicurati che le lettere in una foto o in uno screenshot siano alte almeno 20 pixel. Se la risoluzione è inferiore, i tratti che distinguono i caratteri simili saranno larghi solo uno o due pixel e le informazioni risulteranno incomplete. Ingrandire un’immagine a bassa risoluzione in un secondo momento non ripristinerà i dettagli mancanti.

Quando utilizzo la funzione OCR integrata nel browser, vengono scaricati dei file?

Sì, ma si tratta del software, non del tuo file. La prima volta che lo utilizzi, il motore OCR e i dati linguistici che hai selezionato vengono scaricati da una rete di distribuzione di contenuti (CDN): pochi megabyte per il motore, più un modello linguistico che varia da pochi megabyte (inglese) a decine di megabyte (cinese, giapponese, coreano). Tutti questi dati vengono memorizzati nella cache del tuo browser per utilizzi successivi. La tua immagine o il tuo file PDF non vengono mai caricati; il processo di riconoscimento avviene interamente sul tuo dispositivo.

Quali lingue sono supportate dalla funzione OCR di FileTinker?

Diciassette lingue: inglese, cinese tradizionale, cinese semplificato, francese, tedesco, spagnolo, italiano, portoghese, olandese, russo, giapponese, coreano, arabo, hindi, polacco, turco e vietnamita, oltre a una modalità combinata inglese + cinese per documenti misti. I dati di addestramento per ciascuna lingua vengono scaricati al primo utilizzo e successivamente memorizzati nella cache.