Per quanto riguarda il “cuore” dell’applicazione, 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 l’input dei file da processare viene da immagini o
da webcam, e non da un’area 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]
Data acquisition
Webcam
File
Preprocessing
Image manipulation
Segmentation
Character recognition
Auto-encoders
Two way classifiers
Come già detto l’acquisizione dati da
file(momentaneamente solo immagini) e da
webcam vuole essere un modo di aumentare
l’utilità del software.
Al momento l’acquisizione 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 all’acquisizione da webcam sarebbero
filtering (pulizia, etc..) e
allineamento(fondamentale in fase di
segmentazione)

Analisi dell’immagine:
 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 sull’altra)

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 quest’ultimo è minore di una certa soglia il carattere in ingresso appartiene
alla classe di cui l’auto-encoder si occupa –> L’auto-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 l’ingresso sia un 8 o una B ->
complementari degli auto-encoders!
Classe 3!
Classificatore
classi 1/2
no
Classificatore classi 3/n
Classificatore
classi (n-1)/n
no
Risuona!
Risuona!
Auto
Auto
Encoder Encoder
classe
Classe
2
1
1
2
Auto
Encoder
classe
3
3
Auto
Encoder
classe
n
... ... … … … … … … ... ... … … … … … … … … … … … …
... … … … … … … ... ... … … … … … … … … … … … … … 100
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 all’uscita 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.
M
N
Classificatore
M/N
TOT
0,81
0,72
1,53
N
0,19 -------------
0,51
0,7
K
0,28
0,49 -------------
0,77
M -------------
M: 0,81 - N: 0,19
K
N: 0,51 - K: 0,49
Classificatore
N/K
M: 0,72 - K: 0,28
Classificatore
M/K
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à dell’immagine 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 l’intero processo di acquisizione da
webcam, il software potrebbe avere una reale
utilità nella virtualizzazione di documenti
Scarica

Il Progetto