Optical Character Recognition (OCR)
Il riconoscimento ottico dei caratteri (OCR) converte il testo di scansioni e foto in caratteri leggibili dalle macchine. Scopri le fasi di rilevamento e riconoscimento, con codice.
Il riconoscimento ottico dei caratteri (OCR) converte il testo presente nelle immagini, come pagine scansionate, foto, screenshot e fotogrammi video, in caratteri leggibili dalla macchina che il software può cercare, modificare e analizzare. I primi sistemi confrontavano ogni carattere con modelli memorizzati di caratteri noti. I sistemi OCR moderni usano il deep learning per trovare testo in qualsiasi punto di un'immagine e leggere intere parole e righe in una volta sola, gestendo così caratteri variabili, bassa risoluzione, prospettiva e sfondi disordinati. L'OCR comprende sia il testo nei documenti, come fatture e libri, sia il testo nelle scene, come cartelli, etichette di prodotti e targhe.
Come funziona l'OCR#
La maggior parte dei sistemi OCR esegue due modelli in sequenza:
- Rilevamento del testo: un rilevatore individua le regioni dell'immagine che contengono testo e restituisce un riquadro o un poligono per ogni parola o riga. I rilevatori di testo nelle scene, come EAST, CRAFT e DBNet, predicono le regioni di testo pixel per pixel, gestendo anche testo curvo e ruotato.
- Riconoscimento del testo: ogni regione viene ritagliata, raddrizzata e ridimensionata a un'altezza fissa, quindi un riconoscitore ne legge i caratteri. L'architettura CRNN passa il ritaglio attraverso una CNN, legge da sinistra a destra le colonne di caratteristiche risultanti con una LSTM bidirezionale e le decodifica con la classificazione temporale connessionista (CTC), che allinea le predizioni per colonna a una stringa di caratteri senza indicare dove inizia ciascun carattere. I riconoscitori Transformer, come TrOCR di Microsoft, generano invece i caratteri con un decoder testuale.
La preelaborazione, come la binarizzazione e la correzione dell'inclinazione, è ancora utile con scansioni di scarsa qualità; la postelaborazione confronta l'output con dizionari, formati previsti o un modello linguistico. EasyOCR include entrambe le fasi, un rilevatore CRAFT e un riconoscitore CRNN, per oltre 80 lingue:
import easyocr
# Load EasyOCR's CRAFT text detector and English CRNN text recognizer
reader = easyocr.Reader(["en"])
# Detect every text region in the photo, then read the characters inside it
results = reader.readtext("https://ultralytics.com/images/bus.jpg")
# Each result holds a 4-corner box, the recognized string, and a confidence score
for box, text, confidence in results:
if confidence > 0.5:
print(f"{text}: {confidence:.2f}")Stampa cero: 0.95 e emisiones: 0.99, le parole dipinte sul fianco dell'autobus. Il rilevatore individua anche il display a matrice di punti della destinazione dell'autobus e le scritte in piccolo sui finestrini, ma il riconoscitore restituisce stringhe illeggibili con livelli di confidenza inferiori a 0,5, quindi la soglia le scarta.
I documenti richiedono una fase di impaginazione prima del riconoscimento. Un modello di impaginazione suddivide la pagina in blocchi, applica a ciascun tipo di blocco un trattamento specifico e ricompone i risultati nell'ordine di lettura, così un articolo a due colonne viene letto una colonna alla volta:
La precisione si misura con il tasso di errore sui caratteri (CER), ovvero il numero di inserimenti, eliminazioni e sostituzioni di caratteri necessari per trasformare l'output nel testo corretto, diviso per la lunghezza del testo corretto; si misura anche con il tasso di errore sulle parole (WER), calcolato allo stesso modo sulle parole.
Motori e modelli OCR#
Il motore open source Tesseract è nato presso Hewlett-Packard negli anni Ottanta, è stato rilasciato come open source nel 2005 e si è sviluppato con il sostegno di Google dal 2006 al 2018; la versione 4 ha introdotto un motore di riconoscimento basato su una rete LSTM. I servizi cloud, come Google Cloud Vision e Amazon Textract, aggiungono l'estrazione di layout, tabelle e moduli. I modelli visione-linguaggio leggono sempre più spesso i documenti dall'inizio alla fine: olmOCR dell'Allen Institute for AI converte le pagine PDF in testo pulito con un modello visione-linguaggio ottimizzato, mentre i modelli documentali senza OCR rispondono alle domande su una pagina senza produrre prima una trascrizione separata.
OCR a confronto con termini correlati#
- Riconoscimento della scrittura a mano: chiamato anche riconoscimento del testo manoscritto (HTR) o riconoscimento intelligente dei caratteri (ICR), legge la scrittura a mano, in cui le forme delle lettere variano molto più che nella stampa e i caratteri spesso sono uniti.
- Rilevamento di oggetti: un rilevatore può individuare un segnale di stop come oggetto, mentre l'OCR legge le lettere S-T-O-P stampate sul segnale. La fase di rilevamento dell'OCR individua il testo senza leggerlo.
- Classificazione delle immagini: assegna un'unica etichetta all'intera immagine, ad esempio "fattura", mentre l'OCR estrae la sequenza di caratteri al suo interno.
- Elaborazione intelligente dei documenti: estende l'OCR con l'analisi dell'impaginazione e il riconoscimento di entità nominate (NER) per estrarre campi specifici, come la data, il fornitore e il totale di una fattura, e inserirli nei sistemi aziendali.
Applicazioni nel mondo reale#
- Riconoscimento delle targhe: i sistemi di pedaggio, parcheggio e controllo del traffico rilevano ogni targa e poi la leggono. Un modello YOLO26 addestrato su riquadri di targhe gestisce la fase di rilevamento; la sua variante con riquadri di delimitazione orientati si adatta alle targhe inclinate, così ogni ritaglio può essere raddrizzato prima del riconoscimento.
- Digitalizzazione dei documenti: Banche, compagnie assicurative e governi trasformano moduli, ricevute e archivi in testo consultabile, mentre le biblioteche digitalizzano libri stampati su larga scala.
- Accessibilità e traduzione: Gli screen reader e le app di traduzione tramite fotocamera leggono ad alta voce cartelli, menu ed etichette oppure sovrappongono una traduzione all’immagine in tempo reale.
- Produzione e logistica: Le telecamere leggono codici di lotto, date di scadenza e numeri di serie sulle linee di produzione. I codici dei container per le spedizioni seguono la norma ISO 6346: gli 11 caratteri terminano con una cifra di controllo calcolata sui primi 10, consentendo a un lettore di rifiutare automaticamente la maggior parte dei codici letti in modo errato.










