Per quanto riguarda il cuore dellapplicazione, cioè la parte di AI, abbiamo deciso di utilizzare un tipo di architettura che ci ha particolarmente attirato, cioè quella degli auto-encoders affiancati a dei classici classificatori (che realizzano la selezione a torneo). Da un punto di vista funzionale invece, si è cercato di dare a jino delle caratteristiche che possano renderlo più ultile/interessante dei molti ocr basati sull AI che si possono trovare su internet (Jino is not ocr, appunto.. ) Proprio per questo linput dei file da processare viene da immagini o da webcam, e non da unarea di testo in cui scrivere come avviene in molti sw di questo tipo.
Utilizzo del linguaggio java [portabilità - esperienze personali] Librerie ausiliari: Joone [neural netowork management] JAI [Image Prepocessing] JMF [Webcam acquisition]
Character recognition Auto-encodersTwo way classifiers Preprocessing Image manipulationSegmentation Data acquisition WebcamFile
Come già detto lacquisizione dati da file(momentaneamente solo immagini) e da webcam vuole essere un modo di aumentare lutilità del software. Al momento lacquisizione da webcam è funzionante solo sotto Windows (a causa di problemi legati alla libreria Java V4L) ed è possibile solo con alcuni modelli di webcam.
Attualmente si limita alla conversione in bianco e nero (basata sul canale dei rossi). Aggiunte utili allacquisizione da webcam sarebbero filtering (pulizia, etc..) e allineamento(fondamentale in fase di segmentazione)
Analisi dellimmagine: In lunghezza [per distinguere le varie righe] In larghezza [per distinguere le lettere] Entrambe le suddivisoni sono basate sulla somma di pixel e utilizzano più soglie. NOTA: Ogni pixel è memorizzato come un intero che va da 0(nero) a 255(Bianco)
Pulizia del carattere (vengono eliminati gli spazi bianchi)
Scaling del carattere a 50x50 pixel ( proportional resize in modo che la dimensione più grande arrivi a 50 pixel, dopodichè padding sullaltra ) Desampling del carattere a 10x10 Samples [ognuno costituito da 5x5 = 25 pixels] Normalizzazione e codifica: sample –> double tra 0 e 1 [Numero di pixel neri /25]
Architettura software costituita da: Auto-encoders [riconoscimento dei singoli caratteri] (esempio: il carattere in ingresso è/non è una a) Classificatori [distinzione tra due caratteri specifici] (esempio: il carattere in ingresso è una a/è una b) Gli ingressi [100 double (10x10 samples) che variano da 0.00 ad 1.00]
I.Si attiva la rete neurale dandole in ingresso tutte le lettere riconosciute, una ad una. II.Gli ingressi sono collegati ad ogni singolo auto-encoder (full synapse), che torna in uscita un errore [scarto quadratico medio di (uscita meno ingresso)] III.Se questultimo è minore di una certa soglia il carattere in ingresso appartiene alla classe di cui lauto-encoder si occupa –> Lauto-encoder risuona. IV.Se più auto encoder risuonano viene avviato il cosiddetto torneo, vengono cioè attivati i classificatori (a due uscite) delle classi che risuonano. Viene così decisa la classe a cui il carattere in ingresso appartiene V.Le lettere vengono scritte su un file di uscita (appare un nuovo tab), che può essere salvato in formato testo.
Auto-encoders Sanno dire bene se è una B o no, ma cè il rischio che gli vada bene anche un 8 (target=ingresso -> non gli do mai esempi che non siano B!) Two Way Classifiers Distinguono bene gli 8 dalle B, ma devono essere sicuri che lingresso sia un 8 o una B -> complementari degli auto-encoders!
… … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … … 100 Auto Encoder Classe 1 Auto Encoder classe 2 Auto Encoder classe 3 Auto Encoder classe n Classificatore classi 3/n Risuona! no Classe 3! Classificatore classi 1/2 Classificatore classi (n-1)/n
La selezione a torneo è utilizzata per semplificare e rendere più efficienti le operazioni nel caso in cui risuonino più di due classi. Si confrontano le classi risuonate a due a due (esattamente come un campionato) e si dà loro un punteggio in base alluscita del classificatore(se il classificatore richiesto non è presente si assegna un pareggio), la classe che al termine otterrà il maggior numero di punti è quella a cui realmente appartiene il carattere.
Classificatore M/N Classificatore N/K Classificatore M/K M: 0,81 - N: 0,19N: 0,51 - K: 0,49 M: 0,72 - K: 0,28
Acquisizione da pdf/altro.. Supporto webcam su linux (e migliorare su win) Testing Supporto divisione spazi e parole (in fase di segmentazione) Maniploare le immagini (filtering, pulizia, roation, allineamento, etc..) per migliorare la qualità dellimmagine acquisita da webcam Gestione di vari Layout di pagina
Attualmente le funzioni di JInO sono abbastanza limitate, ma le possibili migliorie son molte, come molte sono le possibili applicazioni. In generale ci sentiamo di dire che se fosse migliorato lintero processo di acquisizione da webcam, il software potrebbe avere una reale utilità nella virtualizzazione di documenti