minilogo.gif (2094 bytes)

Reti neurali e riconoscimento di caratteri

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

2. Architettura dei sistemi OCR

La struttura funzionale di un tipico sistema OCR è in larga misura indipendente dall'hardware su cui esso è implementato, dal momento che la sequenza delle operazioni richieste per la conversione della pagina stampata presentata al lettore è in linea di principio identica in pressoché tutti i sistemi, qualunque sia il loro grado di sofisticazione (Fig. 4); la standardizzazione della sequenza di operazioni è anche dovuta al fatto che oggigiorno qualunque sistema OCR è supportato da un calcolatore, esterno e di tipo general purpose per i sistemi più economici, incorporato e di tipo specializzato per i sistemi più sofisticati. Nei lettori di classe mid-range si va peraltro sempre più affermando una implementazione ibrida, basata sull'uso di un calcolatore per usi generali -- solitamente della classe di un personal computer -- per la gestione del sistema e per il controllo dei flussi di dati, accoppiato ad uno o più moduli hardware intelligenti dotati di capacità autonoma di calcolo, a cui vengono assegnati i compiti più pesanti sotto l'aspetto computazionale e più critici sotto l'aspetto dei tempi di esecuzione.

Fig. 4

Sequenza delle operazioni in un tipico sistema OCR.

I dettagli della tecnologia e delle modalità operative di vari sistemi OCR commerciali sono in buona parte reperibili in letteratura (Badoux, 1985; Beckmann, 1985; Cawkell, 1988; Crider, 1986; Govindan, 1988; Ishiguro et al., 1986; Kauch & Lincke, 1985; Kurzweil, 1984; Matsumura et al., 1986; McCormick, 1987a, 1987b; Nakamura et al., 1987; Suen & Mori, 1982; Vossen, 1986), anche se molte informazioni relative agli algoritmi utilizzati non vengono rese pubbliche oppure vengono mascherate dai produttori sotto denominazioni fantasiose e spesso improbabili.1

Dopo una fase preliminare di messa a punto del sistema e di impostazione dei parametri operativi, la pagina che contiene il testo da convertire viene sottoposta a scansione ottica mediante un dispositivo di input, detto scanner, in grado di digitalizzare l'immagine presente sul foglio convertendola in una matrice di valori numerici associati all'intensità della luce riflessa da ciascun punto del foglio. La matrice così ottenuta viene sottoposta ad algoritmi di segmentazione, che procedono all'identificazione di blocchi di testo sempre più piccoli all'interno della pagina e hanno come obiettivo finale l'isolamento di una serie di sottomatrici contenenti ciascuna l'immagine digitalizzata di un singolo carattere; ciascuna di queste sottomatrici viene quindi sottoposta ad un processo di classificazione mediante il quale il carattere in essa contenuto viene analizzato e identificato. A seguito di una opportuna riaggregazione delle informazioni ricavate mediante la segmentazione e la classificazione, vengono infine generati uno o più file di uscita, aventi opportuno formato e contenenti il testo grezzo, solitamente depurato delle informazioni non rilevanti ai fini del riconoscimento, quali la forma e la dimensione dei caratteri, la forma e la posizione del blocco di testo, e così via. Al completamento delle operazioni, l'utente può intervenire manualmente sulle informazioni estratte dal sistema, sia per la correzione degli eventuali errori generati nel corso del processo, sia per la manipolazione e l'adattamento del testo estratto.

Sebbene l'estrazione del testo grezzo costituisca l'obiettivo primario di un lettore OCR, la qualità di un sistema va misurata però non solo in base al tasso di errore che esso è in grado di garantire nelle varie condizioni operative, ma anche in funzione della quantità di informazioni aggiuntive che esso è capace di estrarre dalla pagina presentata in ingresso e di mettere a disposizione dell'utente. Ad esempio, alcuni sistemi OCR sono in grado di estrarre, tra l'altro, anche informazioni relative allo stile del carattere (diritto, corsivo, grassetto, sottolineato, etc.) usato nelle varie porzioni di testo; è evidente che, qualora l'utente intenda riutilizzare all'interno di un word processor il testo estratto, tali informazioni supplementari, se organizzate in maniera adeguata, possono rivestire notevole importanza ai fini della produttività.

Il presente capitolo è focalizzato sui dettagli delle varie fasi sopra descritte e sulle problematiche che si possono incontrare nel corso della loro esecuzione. L'aspetto preso in considerazione è solamente quello funzionale, dal momento che una discussione sulle implementazioni delle varie fasi del processo di lettura è chiaramente al di là degli obiettivi del presente rapporto (e sarebbe comunque fortemente limitata dalla scarsità di informazioni strettamente tecniche rilasciate dai produttori di sistemi OCR), mentre l'analisi degli aspetti teorici di alcuni algoritmi utilizzati nelle varie fasi del processo di lettura e delle loro implicazioni viene rimandata alla Sez. 4.

Digitalizzazione del documento

Sia i lettori OCR che i lettori di codice a barre ricorrono a tecniche di scansione ottica per la conversione dell'intensità luminosa in livelli logici binari; tuttavia, mentre per questi ultimi è significativa soltanto l'unica dimensione corrispondente alla larghezza delle barre, nei lettori OCR assumono importanza essenziale sia l'altezza che la larghezza. In un tipico scanner per OCR, una sorgente di luce illumina un'area orizzontale della pagina, e una porzione di tale area, corrispondente ad una linea, viene focalizzata su una serie di fotorivelatori, solitamente fotodiodi oppure dispositivi ad accoppiamento di carica (Charge Coupled Device, CCD) disposti in un'organizzazione lineare, in modo che su ciascun fotorivelatore venga focalizzata una determinata areola puntiforme della linea. La tensione in uscita da ciascun fotorivelatore, proporzionale all'intensità della luce incidente, viene quindi quantizzata in un valore digitale; nella quasi totalità degli scanner, la quantizzazione viene semplicemente ridotta al confronto della tensione generata dal fotorivelatore con una soglia e alla sua conversione in un 1 o in uno 0 logico, valori corrispondenti rispettivamente ad un'areola piuttosto scura, quindi coperta da inchiostro sul foglio di carta originale, oppure ad un'areola relativamente luminosa, corrispondente al colore di sfondo del foglio. In tal modo, facendo avanzare in direzione verticale l'area illuminata, l'intero foglio viene esplorato e convertito in una matrice di pixel,2 cioè di elementi di immagine, a ciascuno dei quali viene assegnato valore 1 oppure 0.

Sebbene il principio di funzionamento di tutti gli scanner sia pressoché identico a quello descritto, esistono tuttavia diverse altre particolarità, soprattutto di tipo meccanico, che inducono a suddividerli in varie classi. I tipi di scanner più noti sono probabilmenti quelli di tipo flat-bed (ossia a letto piatto), molto simili alle comuni macchine fotocopiatrici, in cui il foglio di carta viene posto su un pianale trasparente, col testo rivolto verso l'interno della macchina, e opportuni meccanismi provvedono a deflettere sia la sorgente di illuminazione sia le ottiche associate ai fotorivelatori sulle zone della pagina via via sottoposte a ripresa. Questo tipo di scanner, sebbene relativamente complesso sotto l'aspetto meccanico, presenta tuttavia diversi vantaggi, tra cui vanno citati la possibilità di riprendere pagine da libri o da documenti voluminosi e la capacità di eseguire più scansioni dell'originale senza che questo debba essere ogni volta riposizionato.

Considerazioni legate all'affidabilità o all'economia delle parti meccaniche spingono poi alcuni costruttori a preferire la movimentazione del foglio di carta anziché quella dell'illuminatore e dell'ottica. Questi ultimi elementi sono in tal caso fissi, mentre la pagina da scandire viene infilata in una fessura, trascinata a velocità costante sotto la zona di ripresa, e viene infine riemessa fuori dallo scanner attraverso una seconda fessura. Accanto a una evidente maggior semplicità ed economicità della meccanica, va sottolineato come gli scanner di questa classe possano acquisire solo documenti costituiti da fogli singoli, e ripetere la scansione del medesimo originale soltanto reinserendolo il numero di volte necessario.

Va poi osservato come in molti scanner flat-bed di una certa classe i costruttori tendano ad incorporare meccanismi per la movimentazione della carta, utilizzati principalmente per l'espulsione del foglio a scansione avvenuta; tali meccanismi sono di solito associati alla presenza di un feeder, cioè di un serbatoio in grado di accettare un pacco di fogli con cui alimentare costantemente lo scanner. Mentre nei lettori economici può essere tollerato l'inserimento manuale dei fogli da sottoporre a scansione, l'opzione dell'alimentazione continua diventa una necessità irrinunciabile nei sistemi di lettura dedicati al trattamento intensivo di grandi quantità di documenti.

Un'altra classe di scanner, estremamente economica, è poi quella degli scanner hand-held (manuali), di tipo portatile, talmente compatti e leggeri da poter essere tenuti in una mano, che incorporano praticamente solo i fotorivelatori, l'illuminatore e le relative ottiche col minimo indispensabile di elettronica: il movimento verticale di scansione è generato manualmente dall'utente stesso, appoggiando lo scanner sul foglio da riprendere e facendolo scivolare in direzione verticale.

In alcuni sistemi OCR speciali è anche possibile trovare lo scanner sostituito da una telecamera; questa soluzione è particolarmente comoda quando, per via dei grandi formati dei fogli da riprendere o della loro ampia variabilità, sia la soluzione flat-bed che quella a movimentazione del foglio sarebbero antieconomiche e difficili da realizzare; l'adattamento al formato del foglio viene allora realizzato semplicemente regolando l'ottica della telecamera e la sua distanza rispetto al foglio. In un'implementazione di questo tipo, naturalmente, non è possibile usare telecamere standard per via della loro bassa risoluzione; vengono invece usati solitamente dei fotorivelatori CCD lineari ad alta risoluzione che vengono movimentati micrometricamente in direzione verticale. Accanto al vantaggio di poter trattare fogli di dimensioni anomale, vanno considerati peraltro gli svantaggi dovuti agli ingombri dell'apparato e alla bassa velocità di scansione.

Un'ultima possibilità offerta da molti sistemi OCR è quella di eseguire il processo di riconoscimento su un'immagine contenuta in un file, anziché generata mediante acquisizione ottica. Diventa in tal modo possibile elaborare immagini riprese in luoghi fisicamente diversi, oppure trasmesse da località remote attraverso un canale per telecomunicazioni.

Tornando al processo di acquisizione, ogni elemento del fotorivelatore contribuisce dunque per un pixel dell'immagine in cui viene convertita la pagina; in particolare, il numero di elementi del fotorivelatore è pari al numero di pixel per ciascuna riga della matrice. Il numero di pixel contenuti in un segmento orizzontale di lunghezza unitaria è la cosiddetta risoluzione orizzontale della scansione, solitamente misurata in punti per pollice (dots per inch, abbreviato in dpi). Un foglio di carta di formato standard 8.5 ´ 11 pollici, esplorato con un fotorivelatore a 1728 elementi, produce pertanto una matrice di pixel avente risoluzione orizzontale di 1728 / 8.5 punti per pollice, cioè circa 200 dpi.

Il numero di righe della matrice di pixel è legato invece alla risoluzione verticale della scansione, anch'essa misurata in punti per pollice, e dipende evidentemente dalla distanza tra due successive linee di scansione. In generale, tutti i lettori OCR tendono a mantenere quanto più possibile identiche la risoluzione orizzontale e quella verticale, facendo in modo che ogni pixel corrisponda ad un'areola di forma approssimativamente quadrata. In tali condizioni, la scansione del foglio standard poc'anzi portato ad esempio genererà una matrice di pixel da  200 ´ 11 = 2200 righe. La quantità totale di dati prodotta dalla scansione sarà pertanto pari a

1728 ´ 2200 = 3 801 600 bit = 475 200 byte

La matrice di pixel assemblata nel corso del processo di scansione viene quindi memorizzata all'interno del calcolatore che supporta il processo di segmentazione e classificazione.

Il processo di scansione descritto è pressoché identico in tutti i sistemi di lettura, anche se non è raro trovare delle varianti più o meno importanti. Una prima difficoltà nell'acquisizione della pagina è costituita dalla scelta del valore di soglia; negli scanner economici tale valore rimane fisso per tutta la scansione di una pagina, ma può essere alterato manualmente dall'operatore e deve in pratica essere di volta in volta regolato al variare del tipo di carta, del colore dello sfondo su cui è stampato il testo, e così via. Gli scanner più sofisticati, invece, sono solitamente in grado di adattare il valore di soglia alle caratteristiche del foglio di carta; molti scanner di questa classe, in effetti, come pure molte macchine fotocopiatrici, usano le prime linee di scansione come riferimento per la determinazione del valore ottimale di soglia. In realtà, nel caso della lettura di testi, anche questa soluzione può delle volte porre problemi, poiché non è raro trovare nella pagina delle aree contenenti testi su sfondi aventi colore diverso da quello dello sfondo generale del foglio; la soluzione ideale sarebbe quella di eseguire una prima scansione della pagina per determinare l'andamento locale dell'intensità dello sfondo area per area, e quindi procedere ad una seconda scansione che usi in maniera adattativa per ciascuna area il valore di soglia localmente ottimale. Questa soluzione, tuttavia, può risultare eccessivamente penalizzante sia per la notevole quantità di elaborazioni necessarie, sia per il tempo di scansione che risulta almeno raddoppiato, e viene di conseguenza scartata nella grandissima maggioranza dei casi. Una soluzione di compromesso, utile per gli scanner dotati di feeder automatici, potrebbe essere quella di assumere che fogli successivi possano essere acquisiti usando valori di soglia simili; in tal modo, una strategia che consentirebbe di evitare la doppia scansione potrebbe essere quella di utilizzare l'unica scansione di ciascun foglio per calcolarne anche la soglia ottimale, ed utilizzare quest'ultima nella scansione del foglio successivo.

Una volta completata la digitalizzazione e la quantizzazione della pagina, occorre di solito affrontare un secondo problema costituito dal rumore di tipo salt-and-pepper (sale e pepe), ossia da una distribuzione casuale di punti isolati bianchi o neri sovrapposti all'immagine. Questo effetto è dovuto sia al rumore di quantizzazione che ha luogo quando la soglia è lontana dai valori ottimali per una data area della pagina, sia alle imperfezioni (rugosità, pieghe, etc.) del foglio di carta sottoposto a scansione, sia alla replica di rumore analogo già presente sulla pagina acquisita (come accade, ad esempio, quando essa non è un originale ma una fotocopia). Come vedremo, gli algoritmi di riconoscimento e classificazione dei caratteri sono insensibili a questo tipo di rumore solo se i pixel alterati sono molto rari; in alternativa, sarebbe auspicabile -- e molti sistemi di lettura in realtà lo fanno -- eseguire una qualche operazione di filtraggio sull'immagine per ridurre quanto più possibile gli effetti del rumore salt-and-pepper.

Segmentazione della pagina

Al completamento dell'eventuale pre-elaborazione dell'immagine, comincia una lunga serie di passi per l'esecuzione della lettura vera e propria. In primo luogo, vanno identificate sulla pagina quelle aree omogenee, o segmenti, che contengono solo testo oppure solo grafica. Questa è una decisione molto complessa se deve essere presa autonomamente dal lettore senza alcun ausilio da parte dell'operatore, tanto è vero che molti lettori low-end esigono che sia l'operatore stesso a determinare manualmente le varie aree presenti sulla pagina, mentre diversi lettori di classe mid-range richiedono che l'operatore specifichi almeno il numero di colonne su cui è organizzato il testo. I vari segmenti sono di solito delimitati da spazi bianchi piuttosto consistenti, ma, come ad esempio accade in molti quotidiani, le colonne di testo possono anche essere separate da linee nere.

Un segmento di testo deve poter essere ulteriormente suddiviso in altri segmenti, uno per ciascuna riga di testo; in altri termini, nel caso di testo organizzato su più colonne, ciascuna colonna va trattata come segmento a sé. Sulla base di tale ipotesi, un segmento grafico può essere definito come una regione non vuota che non contenga testo. Molti lettori economici si trovano in difficoltà in presenza di segmenti grafici, altri semplicemente li ignorano, mentre i lettori più sofisticati li trattano in maniera separata, come vedremo più avanti.

Una volta isolata, la singola area di testo deve essere ulteriormente partizionata in righe, in parole e infine in caratteri. Il processo di segmentazione progressiva deve allora partire dalla sub-immagine che rappresenta il segmento e costruire tante sub-immagini quante sono le righe di testo, basandosi sul fatto che due righe di testo sono sempre separate da un'interlinea orizzontale bianca relativamente spessa. A ciascuna sub-immagine corrispondente a una riga, viene poi applicata l'operazione di segmentazione in parole e caratteri, basata anche questa sulla separazione dei simboli tramite spazi bianchi, dove le parole vengono identificate sfruttando il fatto che lo spazio tra parole contigue è quasi sempre maggiore che non lo spazio tra caratteri contigui della stessa parola. Nella separazione in parole giocano tuttavia diversi fattori, alcuni dei quali, come la suddivisione mediante trattino di una parola su due righe diverse o addirittura su due segmenti di testo diversi (come avviene per una parola che comincia alla fine di una colonna o di una pagina e prosegue all'inizio di un'altra colonna o di un'altra pagina), vengono presi in considerazione solo dopo il completamento della classificazione dei caratteri, in una fase che possiamo dire di post-elaborazione. La separazione dei caratteri mediante l'analisi attraverso gli spazi bianchi tra di essi può tuttavia trarre in inganno, come vedremo alla Sez. 6, per cui una separazione sicura può in genere essere ottenuta solo mediante la concorrenza di più algoritmi diversi.

La necessità di dover ricostruire il testo alla fine del processo richiede che, accanto alle sub-immagini citate, venga anche costruita una adeguata struttura di dati, solitamente organizzata ad albero, con cui tener conto delle relazioni tra le righe di testo che costituiscono il segmento, tra le parole che costituiscono le righe, e tra i caratteri che costituiscono le parole. I lettori più sofisticati sono in grado di mantenere informazioni anche sulle relazioni tra i vari segmenti della pagina.

Classificazione del carattere

Una volta identificata ed estratta la sub-immagine che contiene il singolo carattere, il lettore procede alla classificazione del relativo pattern, cioè della configurazione di pixel binari che costituisce la sub-immagine. I metodi usati dai lettori OCR per la classificazione del carattere sono diversissimi nei dettagli, ma tutti ricadono essenzialmente in due grandi classi: il template matching, usato nei lettori più economici, e la feature analysis, usata nei sistemi di maggiore sofisticazione.

Il metodo del template matching prevede la presenza in memoria di una serie di template (prototipi), uno per ciascun carattere da riconoscere, sotto forma di pattern inclusi in sub-immagini. La classificazione del pattern relativo a un carattere incognito consiste nell'eseguirne la correlazione con ciascuno dei pattern prototipo: il prototipo che presenta il maggior grado di correlazione viene allora assunto come esemplare del carattere incognito (ulteriori dettagli matematici su questo processo verranno dati nella Sez. 4); se nessun prototipo dà luogo a un grado di correlazione sufficiente, il pattern incognito viene ritenuto non classificabile o sconosciuto; infine, quando si ottiene un grado di correlazione sufficientemente alto con due o più prototipi, il sistema rimanda la decisione alla fase di post-processing.

L'operazione di correlazione tra il pattern incognito e il pattern prototipo presenta una certa complessità computazionale, come vedremo alla Sez. 4, ma può essere eseguita in tempi ragionevolmente brevi se adeguatamente implementata. Tuttavia, quando il numero di prototipi diventa molto alto, come accade quando il sistema deve essere capace di riconoscere un gran numero di font (stili) e/o un gran numero di corpi (dimensioni) dei caratteri, i tempi di classificazione possono diventare eccessivamente e intollerabilmente lunghi. Sebbene la tecnica del template matching risulti relativamente insensibile al rumore, purché questo sia presente in quantità limitata, essa presenta tuttavia un grave inconveniente -- indipendente peraltro dall'implementazione -- legato alla sua sostanziale incapacità di "generalizzare": in altri termini, il template impone una struttura ben precisa al singolo carattere, e può benissimo accadere che variazioni relativamente piccole rispetto alla forma del prototipo, dovute ad esempio a una leggera inclinazione o ad un aumento di dimensioni o a distorsioni stilistiche, rendano il carattere inclassificabile. In genere, i lettori che usano questa tecnica sono in grado di riconoscere solo un numero relativamente limitato di font e di corpi ma comunque sempre specificato con precisione; essi offrono le migliori prestazioni su testi a spaziatura costante, come i dattiloscritti, mentre difficilmente riescono ad evitare errori su testi a spaziatura proporzionale.

La tecnica della feature analysis consiste invece nell'estrarre una serie di feature, o caratteristiche, dal pattern incognito (ad esempio, la presenza di tratti orizzontali o verticali o inclinati, il loro punto d'incontro, la presenza di curve o di cuspidi, e via dicendo), nel descriverne le relazioni (vicinanza, contatto, attraversamento, etc.) e nel confrontare questa descrizione strutturale con quella dei caratteri prototipo. Un carattere viene così classificato in base a un criterio di massima somiglianza tra la sua descrizione strutturale e quella di uno dei prototipi. L'operazione di generazione della descrizione strutturale può tuttavia essere lunga e complessa, poiché l'unico fattore veramente critico della feature analysis è costituito proprio dalla scelta delle feature e delle relazioni che costituiscono la descrizione strutturale; d'altra parte, contrariamente a quanto avviene nel pattern matching, l'insieme degli elementi che costituiscono la descrizione è in genere piuttosto piccolo, e quindi l'operazione di confronto con le descrizioni dei template può essere resa molto veloce. Inoltre, il feature matching è capace per sua natura di "generalizzare"; di conseguenza, non sarà necessario includere nel set dei template tutti i font di cui si desidera il riconoscimento, ma solo quelli le cui descrizioni strutturali sono sufficientemente dissimili. Il sistema diventa così in grado di riconoscere caratteri anche fortemente distorti o rumorosi, purché la degradazione del pattern non comporti un'alterazione eccessiva della sua descrizione strutturale. Se l'insieme dei template e le caratteristiche che intervengono nella descrizione strutturale sono scelti con accortezza, il sistema sarà in grado di classificare virtualmente qualunque carattere di qualunque font con qualunque dimensione; da qui la denominazione di omnifont per questo tipo di tecnica di classificazione e per i sistemi che la utilizzano. Va tuttavia sottolineato come a tutt'oggi il problema della scelta ottimale dei template da memorizzare e delle feature da estrarre dai pattern non può ancora dirsi risolto in maniera soddisfacente, e rimane ancora aperto sotto l'aspetto teorico.

I costruttori di lettori OCR che usano il template matching hanno dunque dovuto affrontare il problema di come, una volta determinato l'insieme standard dei template, dare al cliente la possibilità di riconoscere ulteriori font, e l'hanno risolto fornendo a corredo del sistema delle procedure di training (addestramento). Nell'ambito di tali procedure vengono sottoposti a scansione uno o più testi contenenti i caratteri incogniti, i cui pattern vengono analizzati e integrati in modo da generarne automaticamente i rispettivi template; l'utente ha solamente il compito di notificare alla procedura di training a quale carattere deve essere associato un dato template. Quando i nuovi template vengono aggiunti a quelli standard, il sistema diviene in grado di riconoscere anche il nuovo font. Come non è difficile immaginare, le procedure di training sono di solito piuttosto lente e richiedono un intervento continuo da parte dell'operatore.

Viceversa, i lettori omnifont non prevedono di norma la possibilità di training, dal momento che l'insieme di font riconoscibili è molto più vasto che non quello di un lettore a template matching; tuttavia, specifiche esigenze di massima accuratezza hanno spinto i costruttori di taluni sistemi di classe piuttosto elevata a sviluppare apposite procedure di training, opportunamente adattate alla tecnologia omnifont, e a renderle opzionalmente disponibili agli utenti.

Correzione degli errori

Al completamento delle operazioni di classificazione dei singoli caratteri, entra in attività una fase di post-elaborazione che non solo deve provvedere a raggruppare i caratteri in parole, ma deve anche risolvere gli eventuali casi in cui il classificatore non è stato in grado di prendere una decisione, e deve infine tentare di individuare e correggere gli inevitabili errori generati nel corso della classificazione; il tutto, naturalmente, limitando al minimo indispensabile l'intervento manuale da parte dell'operatore.

Mentre la classificazione di un carattere di solito prescinde dai pattern circostanti al carattere stesso, la fase di post-elaborazione è invece pesantemente basata sull'analisi del contesto, e in linea generale si risolve essenzialmente in un processo di spell-checking (controllo ortografico) delle singole parole, supportato da un dizionario nel caso di sistemi di una certa classe, o da una tavola di frequenze dei caratteri o di combinazioni di caratteri nel caso di sistemi economici.

Nello spell-checking, ogni parola estratta dal testo viene usata come chiave di accesso a un dizionario; se la parola è quivi esattamente contenuta, viene assunta corretta, altrimenti si procede ad una esplorazione del dizionario alla ricerca della parola più somigliante a quella errata, ricorrendo ad algoritmi specifici per il calcolo della "distanza" tra stringhe di caratteri. I sistemi di classe molto elevata possono perfino ricorrere all'analisi sintattica, usando come contesto non soltanto la parola da correggere, ma anche le parole contigue e addirittura gran parte della frase in cui la parola si trova. Il metodo delle tavole di frequenza invece si basa sulla maggiore o minore frequenza di determinati gruppi di caratteri contigui rispetto a certi altri; in caso di errore o di incertezza, quindi, il metodo porta a sostituire gruppi a bassa probabilità con gruppi a probabilità maggiore. Pur se molto veloce ed economico, questo metodo poggia su basi statistiche anziché analitiche e tende spesso a fornire prestazioni scarsamente accettabili.

Quasi tutti i sistemi di lettura prevedono poi, come post-elaborazione finale, la possibilità di intervento manuale da parte dell'operatore per la verifica del testo e la correzione degli errori ritenuti non recuperabili, mediante l'accesso a un programa di utilità simile a un editor. L'operatore viene guidato nei vari punti irrisolti del testo ed ha la possibilità di decidere il tipo di correzione anche verificando, in un'apposita regione grafica del monitor del sistema, la struttura del pattern originale imperfettamente classificato.

Generazione dei file di uscita

Dopo aver ricostruito il testo e corretti tutti gli errori, eventualmente con l'ausilio dell'operatore, il sistema di lettura genera dei file di uscita contenenti il testo ricostruito; nei casi in cui sia prevista l'identificazione e l'estrazione dei segmenti grafici, esso genera anche dei file grafici in cui codificare le informazioni contenute in tali aree.

I file di testo sono di solito o in formato ASCII puro, immediatamente riutilizzabile da qualunque calcolatore e da qualunque programma applicativo, ovvero in un formato compatibile con i più diffusi word processor commerciali. Quest'ultima opzione tiene conto del fatto che la gran parte delle applicazioni della tecnologia OCR prevede un'ulteriore manipolazione del testo estratto, che in genere si riduce al suo inserimento all'interno di altri testi in preparazione. Quanto ai file grafici, non esistendo a tutt'oggi un formato standard universalmente accettato, le informazioni in essi contenute vengono codificate in formati compatibili con i più diffusi pacchetti software commerciali dedicati all'editing grafico.

Come abbiamo accennato in precedenza, alcuni sistemi sono anche in grado di ritenere informazioni aggiuntive sulle caratteristiche del testo estratto, come ad esempio il corpo dei caratteri, l'ampiezza del margine, il valore dell'interlinea, e così via. Tali informazioni possono essere codificate in maniera specifica nei file di testo quando questi sono compatibili con un word processor, ovvero possono entrare a far parte di un file speciale detto style sheet (foglio di stile); è appena il caso di notare come gli style sheet siano sempre più correntemente usati sia dai word processor che dai pacchetti di desktop publishing (editoria elettronica).

Interfaccia con l'utente

L'interfaccia con l'utente riveste una certa importanza nella fase iniziale e in quella finale del processo di lettura; solo i lettori meno sofisticati richiedono l'intervento dell'operatore nelle fasi intermedie, mentre gli altri si basano sul principio che il processo di lettura deve svolgersi quanto più possibile al di fuori di ogni supervisione diretta. Nella fase iniziale, o di setup (inizializzazione), l'operatore sceglie i valori da assegnare a una serie di parametri (livello di contrasto nominale dello scanner, numero di colonne su cui è organizzato il testo, aree della pagina da ignorare oppure da prendere in considerazione, e così via). E' naturalmente possibile che, al variare del tipo e della classe del lettore, alcuni parametri non vengano richiesti perché determinati automaticamente dal sistema, oppure che ne vengano richiesti altri legati a specifiche condizioni di lettura.

Nella fase finale, come abbiamo anticipato poc'anzi, l'operatore è di solito chiamato a intervenire manualmente per la correzione degli errori che il lettore non è in grado di risolvere autonomamente; in questo caso, il software di gestione del lettore cede il controllo a un editor speciale attraverso cui l'operatore introduce correzioni e modifiche al testo estratto.

Il software di controllo di quasi tutti i lettori presenti sul mercato è di tipo fortemente interattivo, e, uniformandosi a quella che è ormai la moda corrente nelle user interface, è basato sull'impiego sistematico di menù a barre, finestre di selezione e dispositivi analoghi, con in certi casi -- soprattutto nelle interazioni grafiche, ad esempio nel processo di delimitazione di particolari regioni della pagina -- un uso intensivo del mouse. Molti sistemi ricorrono anche a funzioni di preview, in cui è possibile visualizzare l'intera pagina oppure una sua porzione su un monitor grafico, in modo che l'utente possa rendersi conto in anticipo di eventuali anomalie presenti sul documento, o possa delimitare in tutta comodità aree specifiche dell'immagine.

Nei lettori equipaggiati con procedure di training, come abbiamo già accennato, esse sono supportate da un software specifico, inteso a guidare l'utente nella ricerca e nell'estrazione dei pattern da elaborare, nella costruzione dei template da aggiungere all'insieme standard e nell'assegnazione delle corrispondenze tra pattern e template.

Il software di controllo di alcuni sistemi di lettura, infine, può anche essere fornito sotto forma di insiemi di funzioni organizzate in librerie (di solito interfacciabili al linguaggio C), in maniera che l'utente possa incorporare la funzione OCR come porzione di un suo programma applicativo ancora più generale.

Conclusioni

I notevoli progressi conseguiti nella tecnologia OCR non lasciano prevedere significative modifiche a breve termine allo schema di architettura fin qui delineato, ma puntano principalmente ad una maggiore efficienza nel riconoscimento dei caratteri, sotto il duplice aspetto della velocità di elaborazione e dell'accuratezza della classificazione. Probabilmente un passo notevole in questa direzione potrà essere fatto mutuando alcune tecniche dai lettori di caratteri scritti a mano, alcuni esemplari dei quali si trovano peraltro già in esercizio (negli Stati Uniti, ad esempio, l'Internal Revenue Service usa sistemi di questo tipo per l'analisi dei moduli fiscali, riempiti di solito a mano dai contribuenti), ma danno prestazioni soddisfacenti solo a fronte di costi enormi.

Da più parti è stata suggerita l'applicazione di tecniche di intelligenza artificiale (Artificial Intelligence, AI) per migliorare l'accuratezza della classificazione; tuttavia, vent'anni di ricerche nell'AI "classica" non hanno prodotto nulla di veramente significativo nel campo specifico della lettura OCR, mentre è lecito sperare, come si mostrerà nella Sez. 9, in molti sviluppi interessanti qualora venga intrapreso un serio cammino sulla via di una AI "alternativa" che è andata sempre più affermandosi negli ultimi anni, e che ripone in secondo piano l'elaborazione di tipo puramente simbolico per privilegiare paradigmi computazionali più simili a quelli che milioni di anni di selezione naturale hanno scelto per le strutture viventi.

Riferimenti bibliografici

  1. R. D. Badoux, "DELTA [text reader for the blind], Computerized Braille production," Proc. 5th Int. Workshop, Winterthur, Switzerland, 30 Oct.-1 Nov. 1985, pp. 21<196>25.
  2. D. Beckmann, "Creating readable documents [Siemens SLS 9691 OCR]," COM, vol. 20, pp. 44-45, 1985. (In tedesco.)
  3. A. E. Cawkell, "Scanner tutorial and survey," Inf. Media Technol., vol. 21, pp. 19-25, 1988.
  4. B. Crider, "Scanners: gaining recognition," PC World, vol. 4, pp. 230-235, Aug. 1986.
  5. V. K. Govindan, Computer Recognition of Handwritten Characters: An Automated Approach to the Design of Recognizers, Ph.D. Thesis, Dept. of Electrical Communication Engineering, Indian Institute of Science, Bangalore, India, 1988.
  6. L. Grunin, "OCR software moves into mainstream," PC Magazine, vol. 9, no. 18, Oct. 30, 1990.
  7. H. Ishiguro, M. Miyamoto, K. Shigeta, K. Hiromori, A. Fukusawa, Y. Murai, F. Kawamata, K. Kondoh, "N3670G hand printed OCR system," NEC Tech. J., vol. 39, pp. 132-138, 1986. (In giapponese.)
  8. A. Kauch, H. Lincke, "OCR in mail order business," COM, vol. 20, pp. 24-27, 1985. (In tedesco.)
  9. R. C. Kurzweil, "Artificial intelligence program at CORE of scanning system," Graphic Arts Mon., vol. 56, pp. 564-566, 1984.
  10. H. Matsumura, K. Aoki, T. Iwahara, H. Oohama, K. Kogura, "Desktop optical handwritten character reader," Sanyo Tech. Rev., vol. 18, pp. 3-12, 1986. (In giapponese.)
  11. J. McCormick, "Text scanners for the IBM PC," Byte, vol. 12, no. 4, pp. 233-238, April 1987.
  12. J. McCormick, "Saba HandScan," Byte, vol. 12, pp. 165-167, Dec. 1987.
  13. Y. Nakamura, M. Suda, T. Hayashi, A. Tanaka, S. Watanabe, "An optical character recognition system for industrial application: TOSEYE-1000," Proc. Int. Workshop on Industrial Application of Machine Vision and Machine Intelligence, Seiken Symp., Tokyo, Japan, 2<196>5 Feb. 1987, pp. 364-368.
  14. C. Y. Suen, R. D. Mori, Eds., Computer Analysis and Perception. Vol. I: Visual Signals, CRC Press, Boca Raton, FL, 1982.
  15. M. Vossen, "Electronic page reader in use," Office Management, vol. 34, p. 1148, 1986. (In tedesco.)

(1)   Ad esempio, la tecnica di classificazione usata dal sistema Advantex della Solution Technology Inc., appartenente alla fascia low-end, viene reclamizzata come "una combinazione di astrazione spaziale e di riconoscimento olografico" (Grunin, 1990).
(2)   Abbreviazione di picture element.

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