Vai al contenuto
PDFLove

come funziona l'ocr

Come l'OCR trasforma una scansione in testo

L'OCR non è un'operazione. È una catena di cinque, e quasi ogni risultato deludente si può ricondurre a quale fase è andata storta.

01

Fase uno: ripulire l'immagine

Il riconoscimento lavora sulle forme, quindi tutto ciò che le distorce deve sparire per primo. La pagina viene raddrizzata — una scansione è di rado in squadra, e una rotazione di due gradi basta a sbavare la ricerca delle righe che viene dopo. Poi viene binarizzata: ogni pixel diventa bianco o nero, con la soglia scelta in modo adattivo perché una pagina più chiara su un bordo che sull'altro non perda metà del testo.

Poi la rimozione dei granelli toglie le macchioline isolate di rumore, che altrimenti verrebbero riconosciute come punti e virgole.

Questa fase è il motivo per cui la qualità della scansione domina l'accuratezza dell'OCR molto più del riconoscitore. Un'ombra sulla pagina manda in crisi la sogliatura, e una pagina incurvata da un libro rilegato non si può raddrizzare perché la distorsione non è una rotazione.

02

Fase due: capire l'impaginato

Il motore trova le componenti connesse — tratti contigui di pixel neri — e le raggruppa. Componenti vicine su una linea di base condivisa diventano una parola; parole in fila diventano una riga; righe impilate con spaziatura costante diventano un blocco di testo. Ampi corridoi bianchi dividono la pagina in colonne.

È anche qui che immagini, filetti e tabelle vengono individuati e messi da parte, così al riconoscitore non si chiede di leggere una fotografia come se fosse testo.

L'analisi dell'impaginato decide l'ordine di lettura, e l'ordine di lettura è ciò che la maggior parte delle persone nota quando fallisce. Un notiziario con una citazione in rilievo in mezzo a una colonna, o una fattura in cui i totali stanno in un riquadro flottante, è dove un motore tarato su una pagina di prosa comincia a produrre testo in un ordine che nessuno ha scritto.

03

Fase tre: riconoscere i caratteri

L'OCR di una volta confrontava la forma di ogni carattere con una libreria di modelli, caratteristica per caratteristica: contare i buchi, trovare gli incroci dei tratti, misurare le proporzioni. Era veloce, fragile e richiedeva un insieme di modelli distinto per ogni carattere tipografico.

I motori moderni fanno passare una rete neurale sull'intera riga — tipicamente una LSTM, che legge una sequenza di sottili fette verticali da sinistra a destra ed emette una sequenza di caratteri. Questo conta perché elimina la necessità di segmentare i caratteri prima di riconoscerli. Decidere dove finisce una lettera e comincia la successiva è di per sé difficile: `rn` e `m` sono quasi identici a bassa risoluzione, e lettere che si toccano in un font stretto non hanno alcun varco dove tagliare. Un modello di sequenza aggira il problema semplicemente non facendo mai quel taglio.

Ogni carattere esce con un punteggio di confidenza, che è ciò che un buon strumento di OCR espone e ciò che la fase successiva usa.

04

Fase quattro: usare la lingua per correggere ciò che la vista ha sbagliato

Il riconoscitore vede forme e nient'altro, quindi restituirà con sicurezza `l\/lanager`, `0ffice` o `rnoderno`. Un dizionario e un modello di sequenza di caratteri intercettano questi casi: il motore sa che in italiano `rn` a inizio parola è rarissimo mentre `m` è comune, e sa che `moderno` è una parola mentre `rnoderno` non lo è.

È per questo che impostare la lingua giusta conta tanto, ed è la singola regolazione più efficace a disposizione. Un motore impostato sull'inglese che legge una pagina italiana ha un dizionario che combatte ogni accento. Ed è anche per questo che nomi propri, codici articolo, numeri di serie e indirizzi sono le cose meno accurate di qualsiasi pagina — sono esattamente le stringhe con cui il modello linguistico non può aiutare, e a volte le corregge attivamente in qualcosa di sbagliato.

05

Fase cinque: riscriverlo in modo invisibile

Ecco la parte che fa funzionare un PDF ricercabile, ed è un trucco davvero elegante.

Il PDF ha un operatore per la modalità di resa del testo, `Tr`. La modalità 0 riempie i glifi normalmente. La modalità 3 non disegna nulla — il testo viene posato sulla pagina, occupa la sua posizione ed è completamente invisibile.

Quindi l'uscita dell'OCR viene scritta nella pagina come testo vero in modalità 3, posizionato in modo che ogni parola riconosciuta stia esattamente sopra i pixel da cui proviene, con l'immagine scansionata originale ancora disegnata sotto. La pagina appare precisamente com'era prima. Ma la ricerca trova le parole, la selezione le evidenzia nei punti giusti, la copia restituisce caratteri veri e un lettore di schermo può leggere il documento ad alta voce.

È per questo che una scansione ricercabile è appena più grande della scansione da cui viene: lo strato di testo aggiunto è di qualche kilobyte contro megabyte di immagine. Ed è per questo che selezionare il testo su una scansione passata all'OCR a volte evidenzia un rettangolo leggermente sbagliato — la parola invisibile è posizionata secondo la stima del riconoscitore su dove fossero i pixel.

L'immagine resta
Conservi l'aspetto esatto della scansione originale. Nulla viene ridisegnato.
Il testo è vero
Ricerca, copia, selezione e lettori di schermo funzionano tutti su di esso.
Gli errori restano nascosti
Una parola riconosciuta male è invisibile, quindi la pagina non sembra mai sbagliata — semplicemente non viene trovata dalla ricerca.
La dimensione cambia appena
Kilobyte di testo contro megabyte di immagine.

Domande

Domande collegate

Perché il testo dell'OCR sembra corretto sulla pagina ma la ricerca fallisce?

Perché quello che stai guardando è l'immagine scansionata originale, e quello che la ricerca interroga è lo strato di testo invisibile scritto sotto. Quando il riconoscitore legge male una parola, la pagina continua a mostrare i pixel corretti mentre il testo ricercabile dice altro.

Che accuratezza devo aspettarmi?

Una scansione pulita a 300 DPI di testo stampato ordinario supera il 98% per carattere. Una foto da telefono con luce uniforme sta poco sotto. Un fax o una fotocopia di terza generazione crolla, e la scrittura a mano è un altro problema, che l'OCR standard non risolve.

L'OCR cambia l'aspetto del mio documento?

No. L'immagine originale resta esattamente com'era e il testo riconosciuto viene aggiunto invisibilmente dietro di essa. Se uno strumento restituisce una pagina dall'aspetto diverso, l'ha ridisegnata invece di sovrapporre uno strato.

Perché l'OCR è molto più lento delle altre operazioni sui PDF?

Perché è l'unica che fa analisi d'immagine. Unire o dividere riorganizza oggetti e non tocca quasi nessun pixel. L'OCR esegue cinque fasi di elaborazione su ogni pixel di ogni pagina, e una rete neurale su ogni riga.