perché il mio ocr è impreciso
Che cosa sbaglia l'OCR, e come rimediare
L'OCR è riconoscimento, non conversione, quindi ha un tasso di accuratezza e non un risultato. Gran parte di ciò che determina quel tasso è stato deciso prima che il file arrivasse a un qualsiasi programma: allo scanner.
01
Che cosa sta facendo l'OCR
Il riconoscimento ottico dei caratteri prende l'immagine di una pagina, individua le forme che sembrano testo e decide a quale carattere ciascuna forma somiglia di più. I motori moderni poi confrontano il risultato con un modello linguistico, ed è per questo che una "rn" letta come "m" viene di solito corretta in silenzio dentro una parola reale e lasciata così com'è dentro un codice prodotto.
Quest'ultimo punto è quello da capire. L'OCR è più accurato proprio dove serve meno — la prosa ordinaria, dove il contesto lo salva — e meno accurato su numeri di serie, riferimenti di conto e importi, dove non c'è contesto che salvi nulla e dove un errore costa di più.
02
Che cosa rovina l'accuratezza
Risoluzione sotto i 300 DPI. È il fattore singolo più importante. A 300 DPI un carattere da 10 punti è alto circa 40 pixel ed è inequivocabile. A 150 DPI ne è alto 20 e il motore tira a indovinare tra forme simili. Scansionare oltre i 400 DPI serve raramente e rallenta tutto.
Inclinazione. Una pagina scansionata un paio di gradi storta è molto più difficile da leggere, perché il rilevamento delle righe presuppone linee di base orizzontali. Due gradi bastano a creare problemi e sfuggono facilmente a occhio nudo.
Contrasto scarso. Fotocopie sbiadite, sfondi grigiastri, carta colorata e evidenziatore sopra il testo riducono la separazione tra inchiostro e carta da cui il motore dipende.
Artefatti JPEG. Comprimere troppo una scansione prima di eseguire l'OCR sfoca i bordi dei caratteri. Se devi fare entrambe le cose, prima l'OCR e poi la compressione.
Impaginazione. Testo su più colonne, tabelle, riquadri e note a piè di pagina costringono il motore a capire l'ordine di lettura prima di leggere qualsiasi cosa, e sbagliare quello scombina un riconoscimento per il resto perfetto.
03
Che cosa l'OCR non farà
La scrittura a mano, in generale. Riconoscere il corsivo è un problema molto più difficile che riconoscere lo stampato tipografico, e l'OCR generico va male. Lo stampatello maiuscolo scritto con cura a volte funziona.
Ricostruire una tabella per bene. Spesso legge correttamente ogni cella e produce comunque una tabella strutturalmente sbagliata, perché decidere dove iniziano le colonne è un'inferenza separata dalla lettura dei caratteri.
Recuperare informazione che non c'è. Se la scansione è troppo sbiadita perché tu possa leggere una cifra con certezza, nessun motore farà meglio — e, a differenza tua, si impegnerà su una risposta senza segnalare il dubbio.
04
Come ottenere un risultato migliore
Riscansiona, se puoi. Trenta secondi a 300 DPI, dritta, con buon contrasto, battono qualsiasi quantità di post-elaborazione su una scansione scadente. Se il documento serve davvero, è tempo speso bene.
Raddrizza prima di riconoscere. Anche un allineamento approssimativo recupera molto su una pagina entrata storta.
Converti in scala di grigi invece che in bianco e nero aggressivo. La conversione a due soli livelli con la soglia sbagliata mangia i tratti sottili e chiude gli occhielli delle lettere, e entrambe le cose danneggiano il riconoscimento.
Imposta la lingua. Un motore che si aspetta l'inglese su un documento in italiano correggerà fino ad arrivare a un'assurdità convinta.
Poi controlla il risultato — in particolare i numeri. Leggi gli importi confrontandoli con l'originale invece di scorrere la prosa. È lì che si nascondono gli errori sopravvissuti, e una cifra letta male sembra del tutto plausibile sulla pagina.