minilogo.gif (2094 bytes)

Reti neurali e riconoscimento di caratteri

left.gif (1019 bytes) up.gif (1014 bytes) right.gif (1020 bytes)

Introduzione

La fase di inserimento dei dati riveste senza alcun dubbio un ruolo di fondamentale importanza e di estrema delicatezza nel corso dell'esecuzione di un processo computazionale, poiché la validità dei risultati del processo è necessariamente legata alla correttezza, alla coerenza e alla consistenza dei dati da esso usati come input; è del tutto evidente come anche un solo errore nei dati di ingresso di un programma per calcolatore possa comportare inconvenienti di varia entità, dallo spreco di tempo macchina (sovente prezioso) fino addirittura al danneggiamento di cose o persone.

Molti sistemi di elaborazione sono in grado di accettare dati di input da altre apparecchiature, ma nella grandissima maggioranza dei casi le informazioni da sottoporre ad elaborazione vengono introdotte manualmente nel sistema, solitamente facendo ricorso a tastiere e a personale più o meno specializzato nel loro impiego. Tale processo, noto come manual data entry, si svolge apparentemente secondo linee piuttosto semplici, ma non è difficile rendersi conto che la sua esecuzione richiede tempi solitamente di gran lunga maggiori di quelli necessari per l'elaborazione dei dati stessi. Quando poi un tale compito viene affidato a personale esperto, con l'obiettivo di ridurre al minimo possibile i tempi di inserimento, si arriva rapidamente a scoprire che i costi dell'operazione possono lievitare in maniera imprevedibile, senza peraltro arrivare a garantire la totale assenza di errori.

Assistiamo così ad una situazione paradossale e per certi versi preoccupante: mentre da un lato i costi di immagazzinamento delle informazioni sui supporti elettronici disponibili vanno progressivamente diminuendo e i tempi di esecuzione delle elaborazioni seguitano a ridursi con l'evoluzione della tecnologia, dall'altro l'inserimento manuale dei dati esige livelli di costo sempre più elevati che tuttavia non consentono di ridurre i tempi di inserimento in maniera veramente significativa.

Un'analisi accurata delle problematiche del data entry, però, mostra come la grandissima maggioranza delle operazioni di inserimento di dati possano in realtà essere più correttamente classificate come operazioni di copiatura di informazioni testuali (numeriche o alfanumeriche) da un supporto cartaceo, sia esso un libro, un tabulato, un modulo e così via. Alla luce di questa circostanza, e con l'obiettivo di ridurre al minimo indispensabile l'intervento umano, è dunque sembrato ragionevole investire risorse anche notevoli nel tentativo di sviluppare tecnologie specifiche per l'automatizzazione pressoché completa delle tre fasi essenziali identificabili nel processo di copiatura di dati testuali, e cioè:

Per via dell'evidente analogia con le operazioni svolte da un soggetto umano, tali tecnologie vengono genericamente classificate come riconoscimento ottico di caratteri1 (Optical Character Recognition, OCR).

Un sistema per il riconoscimento ottico di caratteri usa tecniche opto-elettroniche per eseguire la scansione di una o più pagine di testo, e converte le informazioni ivi contenute in uno o più file direttamente utilizzabili da software. La fase di scansione viene realizzata mediante appositi dispositivi periferici detti scanner (dei quali parleremo nella Sez. 2), che hanno il compito di esplorare otticamente un foglio di carta e convertirne le informazioni in un'immagine digitalizzata (normalmente a due soli livelli, bianco e nero) rappresentata come una matrice di pixel; per inciso, va sottolineato come la diffusione dei sistemi OCR sia in larga misura da ascrivere alla sempre maggiore disponibilità di scanner veloci, efficienti ed economici.

La matrice di pixel così ottenuta viene poi sottoposta ad opportuni algoritmi per la rivelazione e l'isolamento di blocchi di testo e per il riconoscimento dei singoli caratteri mediante tecniche di pattern recognition (riconoscimento di configurazioni) opportunamente adattate al caso specifico. Al termine del processo di riconoscimento, i caratteri estratti vengono ordinatamente assemblati in uno o più file, che vengono infine memorizzati all'interno del calcolatore.

I file di uscita possono avere formato ASCII puro oppure formati compatibili con i word processor (programmi di videoscrittura) o con gli spreadsheet (fogli elettronici), pacchetti software commerciali oggigiorno largamente usati negli ambienti d'ufficio. Quest'ultima soluzione viene di solito preferita poiché l'utente ha così la possibilità di continuare ad operare nel proprio ambiente software preferito riutilizzando in maniera diretta ed immediata le informazioni estratte dal foglio originale e trattandole come porzioni di un lavoro più vasto. L'economia di tempi e di costi che ne consegue è nella gran parte dei casi notevole, dal momento che, allo stato attuale della tecnologia, un buon sistema OCR può risultare decine di volte più veloce ed affidabile di un operatore umano.

I sistemi OCR attualmente presenti sul mercato si collocano in un range di prezzi e di prestazioni molto vasto; ai nostri fini, essi possono utilmente essere classificati entro tre grandi categorie in base al loro costo (Tav. I). Come avremo modo di vedere più avanti nella Sez. 5, un'accurata analisi delle prestazioni dei sistemi OCR commerciali consente di concludere che esse sono in generale fortemente correlate al costo del prodotto: di conseguenza, una classificazione legata al costo di un sistema è di solito immediatamente riconducibile ad una classificazione basata sulle prestazioni.

Tav. I
Classi di prezzo dei sistemi OCR commerciali
Classe del sistema

Prezzo ($)

High-end

maggiore di 10-12 000

Mid-range

da 2-3 000 a 10-12 000

Low-end

minore di 2-3 000

La categoria superiore è costituita dai sistemi high-end, con prezzi superiori ai 10-12000 dollari, un esempio classico dei quali è il Kurzweil 4000 della Kurzweil Computer Products, del costo di circa $ 35000. Questo sistema, in grado di leggere con relativa facilità numerosissimi tipi di caratteri da libri, riviste e giornali, offre prestazioni tali che il nome di Sistema Intelligente di Scansione (Intelligent Scanning System) con cui viene reclamizzato dal fabbricante non sembra essere soltanto un'esagerazione pubblicitaria.

Nella categoria successiva ricadono i sistemi mid-range, con prezzi compresi tra i 2-3000 e i 10-12000 dollari, espressamente progettati per la lettura intensiva di grandi quantità di testi dattiloscritti o comunque di buona qualità sotto l'aspetto tipografico. I sistemi appartenenti a questa categoria sono ben lontani dalla sofisticazione raggiunta dai modelli high-end, pur tuttavia l'odierno interesse nella tecnologia del riconoscimento ottico di caratteri è senz'altro da ascrivere alla loro capacità di offrire prestazioni relativamente alte a prezzi ragionevoli, una combinazione che solo in tempi recenti sembrava pressoché impossibile da conseguire.

L'ultima categoria è infine costituita dai sistemi low-end, con prezzi inferiori ai 2-3000 dollari, implementati solitamente in puro software senza l'ausilio di hardware dedicato. La diffusione odierna degli economicissimi scanner manuali ha dato notevole impulso ai sistemi OCR che ricadono all'estremo basso di questa fascia: pur senza essere dotati della velocità, della flessibilità e dell'affidabilità tipiche delle due categorie precedenti, essi offrono tuttavia su scala opportunamente ridotta le medesime caratteristiche di base.

Come avremo modo di vedere nei capitoli seguenti, una pagina stampata può tuttavia presentare, sotto l'aspetto del riconoscimento del testo, un grado di complessità talmente elevato che neanche i migliori sistemi OCR disponibili possono essere ritenuti totalmente esenti da errori. In molti sistemi, ad esempio, i tassi di errore nominali dichiarati si aggirano attorno all'1%; tassi del genere, su una tipica pagina di testo costituita da 50 righe da 60 caratteri ciascuna, per un totale di 3000 caratteri, corrispondono a circa 30 errori per pagina. Per di più, i tassi di errore dichiarati sono da considerare validi solo in condizioni controllate: sulla quasi totalità dei sistemi OCR, ad esempio, una rotazione del foglio di anche soltanto 5-6 gradi rispetto al posizionamento nominale (situazione difficilmente evitabile nel corso della scansione di un libro piuttosto voluminoso) comporta spesso aumenti disastrosi del tasso di errore. Una conseguenza immediata di questa sensibilità dei sistemi OCR è che l'utente deve sempre essere preparato ad affrontare un numero imprecisato di errori di riconoscimento, e ad intervenire manualmente per le relative correzioni. La scarsa dimestichezza degli utenti di un sistema di lettura non sufficientemente sofisticato con fattori di questo tipo può comportare perciò una pericolosa sottovalutazione dei costi di esercizio del sistema, con pesanti e a volte intollerabili ripercussioni sui cicli produttivi.

Il prossimo obiettivo della tecnologia OCR è dunque un miglioramento significativo delle prestazioni che non penalizzi i tempi di esecuzione. Soltanto se e quando un simile obiettivo verrà raggiunto, potrà avere inizio, ad esempio, l'opera di costruzione di un gigantesco database di tutte le conoscenze attualmente disponibili su carta, e i sistemi OCR potranno così divenire la chiave per l'affermazione definitiva dei sistemi esperti, strumenti software che usano tecniche di intelligenza artificiale. Come sottoprodotto immediato di un tale obiettivo avremo per di più la disponibilità di prestazioni high-end in sistemi dal costo classificabile come mid-range. In un ambiente di ufficio, i costi di esercizio possono diminuire solo se il tasso di errore, oltre a diventare il più basso possibile, riesce a non discostarsi eccessivamente dai valori nominali anche in presenza di forti variazioni delle condizioni di scansione; a sua volta, il tasso di errore può essere abbassato e reso meno sensibile solo se vengono fortemente migliorate le prestazioni degli algoritmi di riconoscimento, senza però con questo compromettere la velocità di esecuzione. A nostro avviso, è possibile compiere un passo significativo verso il conseguimento di entrambi questi risultati solo sfruttando i più recenti progressi nelle tecniche di pattern recognition, che consistono essenzialmente nell'impiego delle cosiddette reti neurali, strutture computazionali la cui architettura si ispira a quella del sistema nervoso animale anziché a quella dei calcolatori convenzionali; lo scopo che il presente rapporto si prefigge è dunque la giustificazione di un simile convincimento attraverso la descrizione di un ipotetico sistema OCR avanzato e la discussione di alcuni risultati preliminari conseguiti.

Il presente rapporto è organizzato in tre parti. La prima parte è dedicata ad alcuni brevi cenni sull'evoluzione della tecnologia dei sistemi OCR e sulle sue applicazioni, all'analisi delle problematiche che si possono presentare nel corso del processo di lettura di un testo, e ad una breve panoramica su alcuni sistemi OCR commerciali, sui loro pregi e sulle loro limitazioni tipiche. La seconda parte è dedicata alla discussione delle architetture neurali più importanti e più significative ai fini del riconoscimento di caratteri, mentre l'ultima parte del rapporto è invece dedicata alla descrizione di un ipotetico sistema OCR facente uso di reti neurali per la segmentazione e il riconoscimento del testo ed alla definizione delle corrispondenti specifiche operative.


(1)   L'aggettivo ottico nella locuzione distingue questo tipo di riconoscimento da quello magnetico, molto usato in passato soprattutto in applicazioni bancarie come la lettura automatica dei numeri di assegno, e ancor oggi non del tutto scomparso.

minilogo.gif (2094 bytes)

Reti neurali e riconoscimento di caratteri

left.gif (1019 bytes) up.gif (1014 bytes) right.gif (1020 bytes)

© 1997-2003 Paolo Marincola (Rome, Italy)
e-mail:
pmaNOSPAM@acm.org (eliminare i caratteri "NOSPAM" per ottenere l'indirizzo esatto)
Commenti, osservazioni e suggerimenti sono estremamente graditi.

Last revised: 2003-11-09 00:29