Analisi di Documenti
M. Diligenti
[email protected]
Dipartimento di Ingegneria
dell’Informazione
Università di Siena
Libro di testo
Lawrence O-Gorman e Rangachar Kasturi
Document Image Analysis
Editore:
IEEE COMPUTER SOCIETY PRESS
Introduzione
• I documenti cartacei sono il mezzo principale
per la trasmissione e la memorizzazione di
informazione.
• Rivoluzione informatica non ha rallentato la crescita
della massa di documenti emessi dalle pubbliche
amministrazioni o dalle grandi aziende.
Applicazioni
• Instradamento automatico della posta.
• Lettura automatica di assegni bancari.
• Catalogazione automatica degli archivi di
pubbliche amministrazioni e aziende.
• Creazione di biblioteche digitali partendo dai
dati memorizzati nelle attuali biblioteche.
• Velocizzazione delle operazioni negli uffici.
Problemi da risolvere
Analisi di documenti
Grafica
Testo
Riconoscimento
Analisi di
di caratteri
Layout
Testo
Paragrafi
Estrazione
Linee
immagini
e simboli
Linee
Logo,
immagini
Dalla carta alla comprensione del contenuto
Documento
cartaceo
Acquisizione ottica
Elaborazione a
livello di pixels
107 pixels
Estrazione di caratteristiche
Box di caratteri
Analisi di
Layout
Riconoscimento
di caratteri
Paragrafi
Testo
Campo1
Estrazione
Linee
Campo2
immagini
e simboli
Analisi
Logo,
immagini
semantica
. . .
CampoN
Acquisizione ottica
• In genere si usano scanners a 300 dpi.
• Immagini binarie o 255 livelli di grigio.
• Documento 8.5”x11” è rappresentato da
2550 x 3300 pixels.
• Dati rappresentano i pixels in sequenza, pertanto
per estrarre oggetti con semantica (caratteri, linee)
è necessario elaborare i dati.
Parte 1
Elaborazione di basso livello
dell’immagine del documento
Sommario:
elaborazione di basso livello
• Thresholding
• Filtraggio del rumore
• Thinning
Thresholding
• Trovare la soglia ottimale per decidere se un
pixel è nero o bianco.
• Tale fase è necessaria per passare da
immagine a livelli di grigio ad immagine binaria.
White 0
Black 255
Thresholding statica
Qui sfondo è
scuro
Soglia
bassa
Qui sfondo è
scuro
Qui sfondo è
Qui sfondo è
chiaro
chiaro
Thresholding statica
Qui sfondo è
Soglia
Qui sfondo è
scuro
alta
scuro
Qui sfondo è
Qui sfondo è
chiaro
chiaro
Thresholding statica vs. adattiva
• Soglia statica non riesce a catturare tutti i
dettagli del documento.
SOLUZIONE: thresholding adattiva con analisi
dello sfondo. La soglia viene fissata a seconda
dello sfondo di una regione.
Thresholding adattiva
Qui sfondo è
Qui sfondo è
scuro
scuro
Qui sfondo è
Qui sfondo è
chiaro
chiaro
Riduzione del rumore
• Principale rumore su fotocopie o fax è rumore
sale e pepe o rumore impulsivo.
• Si presenta con dei pixels isolati di colore diverso
dai pixels che lo circondano.
Filtri
• In genere si usano filtri specifici.
ESEMPIO:
Data finestra di dimensione k, decidere
se a tutti i suoi pixels deve essere assegnato il
colore bianco o nero.
Filtri
ESEMPIO: data finestra di dimensione k = 6, decidere
se a tutti i suoi pixels deve essere assegnato il colore
nero eliminando il rumore
sale e pepe dei pixels bianchi.
Pixel di vicinato
Pixel del core
Filtri: esempio
REGOLA. A tutti i pixels di una finestra viene
assegnato il colore nero se:
c=1 AND (n > 3k-4 OR (n=3k-4) AND r=2)
dove,
- c numero componenti connesse in vicinato
- n numero pixel neri in vicinato
- k dimensione finestra in analisi
- r numero pixel neri in angolo
Filtri: esempio
C=1 ==>
riempio
C=2 ==>
non riempio
Thinning
Parte 2
Estrazione di caratteristiche
Introduzione
• Uscita dell’elaborazione di basso livello è una
serie di valori relativi ai singoli pixels.
• Un estrattore di caratteristiche raggruppa i
pixels ed estrae valori relativi ad oggetti
complessi come linee o curve.
• Primo passo verso una rappresentazione più
vicina a quella che verrebbe fornita da un
operatore umano.
Sommario:
estrazione di caratteristiche
• Estrazione contorni
• Rappresentazione degli oggetti:
• Chain coding
• Line adjacency graphs
• Estrazione linee o altre forme
Oggetti elementari
• Ogni oggetto elementare corrisponde ad una componente
connessa: un insieme di pixel neri tra loro contigui.
Seguire un contorno
Algoritmo della tartaruga.
• Trova un pixel di transizione bianco-nero (punto
di partenza di un contorno da seguire).
• While(non si torna al punto di partenza)
• if(pixel == bianco) then gira a sinistra
• if(pixel == nero) then gira a destra
Chain coding
• Dopo estrazione dei contorni, chain code può
rappresentare il contorno di un oggetto.
ESEMPIO
0
1
2
7
X
3
6
5
4
5555555555553333333333
Line adjacency graphs
• Estraggono un grafo rappresentante un oggetto da
un insieme di pixels neri tra loro connessi,
detti anche componente connessa)
Trasformata di Hough
• Usata per scoprire la presenza di oggetti
complessi sul documento.
• Spesso usata per scoprire linee, circonferenze, ecc.
• In generale: un qualsiasi oggetto di cui si conosce
la rappresentazione analitica può essere cercato
tramite la trasformata di Hough.
Trasformata di Hough
• Trasforma il documento da coordinate x,y alle
coordinate dello spazio dei parametri.
ESEMPIO: cercare linee rette.
• Equazione della retta: y = ax + b
• a, b parametri della retta
• Passo da spazio (x,y) a spazio (a,b)
Trasformata di Hough
b
y
y = 2x + 3
3
3
x
2
a
Trasformata di Hough
y
Fascio di rette
per un punto
b
3 - 2a= b
3
3
2
x
3/2
a
Trasformata di Hough
y
b
3
3
3 - 2a= b
1 - a= b
1
2
1
2
x
-1
Retta in comune tra i punti (1,1) e (2,3) è la retta
con parametri a = 2 e b = -1
a
Trasformata di Hough
y
b
3
3
3 - 2a= b
1 - a= b
1
2
1
2
x
-1
Continuo ad accumulare nel punto (2,-1) dello
spazio trasformato.
a
Trasformata di Hough
y
Trovare le circonferenze
3
con centro sull’asse x
che sono sull’immagine.
1
Considerare in particolare
1
3
x
i punti (1,1) e (3,3).
Trasformata di Hough
r2
Cerco curve del tipo:
y2 + x2 -2ax + a2 - r2 = 0
10
9
Per i punti (1,1) e (3,3):
r2 = a2 -2a + 2
r2 = a2 -6a + 18
1
Intersezione in a = 4, r2 = 10.
La curva cercata è:
1 34
y2 + x2 -8x + 6 = 0
a
Parte 3
Analisi di Layout
Analisi di Layout
L’analisi del Layout di una pagina consente di:
• segmentare un documento in gruppi di elementi
omogenei (per esempio contenenti solo testo, per evitare gli
errori di un OCR se gli viene passata una regione priva di testo);
• associare una semantica ad alcuni elementi
(titolo, autore, logo, ecc.) ed ottimizzare il
successivo riconoscimento.
XY-trees
Hi guys, I’m the title
of this article
M. Gori M. Maggini
ABSTRACT
dkpowekfèprekèpfè
Fhnoirfnpfrpjfoprjfèp
Fhnoirfnpfrpjfoprjfèp
cioejcrpiejprojfèoew
cioejcrpiejprojfèoew
nwoeijndewpjpweje
nwoeijndewpjpweje
jdiwejdiwejdejwpojd
jdiwejdiwejdejwpojd
dewpw.
dewpw.
93ruwerjffepljfpjrpe
INTRODUCTION
djpiwqejpjkdèpekèp
dpwejdpepwjepwde
dpwejdpepwjepwde
ekpwdkopewkopwk
ekpwdkopewkopwk
wdkjepkeèwkèwek
wdkjepkeèwkèwek
dewjpo,
dewjpo,
Proietto lungo asse x
2 Larghe Proiezioni di valore 0
Il documento è proiettato
alternativamente lungo
gli assi X e Y (sommando
il numero di pixel neri su
ogni linea). I tagli sono
effettuati in corrispondenza delle proiezioni di
valore 0 più larghe.
XY-trees: passo 1
Hi guys, I’m the title
of this article
M. Gori M. Maggini
ABSTRACT
dkpowekfèprekèpfè
Fhnoirfnpfrpjfoprjfèp
Fhnoirfnpfrpjfoprjfèp
cioejcrpiejprojfèoew
cioejcrpiejprojfèoew
nwoeijndewpjpweje
nwoeijndewpjpweje
jdiwejdiwejdejwpojd
jdiwejdiwejdejwpojd
dewpw.
dewpw.
93ruwerjffepljfpjrpe
INTRODUCTION
djpiwqejpjkdèpekèp
dpwejdpepwjepwde
dpwejdpepwjepwde
ekpwdkopewkopwk
ekpwdkopewkopwk
wdkjepkeèwkèwek
wdkjepkeèwkèwek
dwepojzmòdmòewd
dwepojzmòdmòewd
dewjpo,
dewjpo,
La Radice dell’albero
corrisponde
all’intero documento
XY-trees: passo 2
Hi guys, I’m the title
of this article
M. Gori M. Maggini
ABSTRACT
dkpowekfèprekèpfè
Fhnoirfnpfrpjfoprjfèp
Fhnoirfnpfrpjfoprjfèp
cioejcrpiejprojfèoew
cioejcrpiejprojfèoew
nwoeijndewpjpweje
nwoeijndewpjpweje
jdiwejdiwejdejwpojd
jdiwejdiwejdejwpojd
dewpw.
dewpw.
93ruwerjffepljfpjrpe
INTRODUCTION
djpiwqejpjkdèpekèp
dpwejdpepwjepwde
dpwejdpepwjepwde
ekpwdkopewkopwk
ekpwdkopewkopwk
wdkjepkeèwkèwek
wdkjepkeèwkèwek
dwepojzmòdmòewd
dwepojzmòdmòewd
dewjpo,
dewjpo,
Si tagliano lungo l’asse Y le
regioni trovate al passo
precedente
XY-trees: passo 2
Hi guys, I’m the title
of this article
M. Gori M. Maggini
ABSTRACT
dkpowekfèprekèpfè
Fhnoirfnpfrpjfoprjfèp
Fhnoirfnpfrpjfoprjfèp
cioejcrpiejprojfèoew
cioejcrpiejprojfèoew
nwoeijndewpjpweje
nwoeijndewpjpweje
jdiwejdiwejdejwpojd
jdiwejdiwejdejwpojd
dewpw.
dewpw.
Vediamo ad esempio
come taglio la regione
93ruwerjffepljfpjrpe
INTRODUCTION
djpiwqejpjkdèpekèp
dpwejdpepwjepwde
dpwejdpepwjepwde
ekpwdkopewkopwk
ekpwdkopewkopwk
wdkjepkeèwkèwek
wdkjepkeèwkèwek
dwepojzmòdmòewd
dwepojzmòdmòewd
dewjpo,
dewjpo,
M. Gori M. Maggini
3 larghe proiezioni di valore 0
XY-trees: caratteristiche
• Effettuano segmentazione Top-down.
• Consentono segmentazione a diversi livelli
(livello di paragrafo, linea, parola, carattere).
• Altamente sensibili al rumore (se il documento
è corrotto da rumore sale e pepe, le proiezioni
non sono mai completamente a valore 0).
• Non tratta documenti con tabelle od altri
elementi complessi.
XY-trees arricchiti
Hi guys, I’m the title
of this article
M. Gori M. Maggini
ABSTRACT
dkpowekfèprekèpfè
Fhnoirfnpfrpjfoprjfèp
Fhnoirfnpfrpjfoprjfèp
cioejcrpiejprojfèoew
cioejcrpiejprojfèoew
nwoeijndewpjpweje
nwoeijndewpjpweje
jdiwejdiwejdejwpojd
jdiwejdiwejdejwpojd
dewpw.
dewpw.
93ruwerjffepljfpjrpe
INTRODUCTION
djpiwqejpjkdèpekèp
dpwejdpepwjepwde
dpwejdpepwjepwde
ekpwdkopewkopwk
ekpwdkopewkopwk
wdkjepkeèwkèwek
wdkjepkeèwkèwek
dwepojzmòdmòewd
dwepojzmòdmòewd
dewjpo,
dewjpo,
In genere si aggiunge
informazione nei nodi per
specificare le coordinate del
rettangolo che corrisponde
alla regione associata.
0, 0, 100, 100
0, 0, 100, 15
0, 15, 100, 20
0, 20, 100, 100
XY-tree esempio
ABSTRACT
Fhnoirfnpfrpjfoprjfèp cioejcrpiejprojfèoew
Nwoeijndewpjpweje ewgreq eqwthwtreh rfthjehgret
Jdiwejdiwejdejwpojd vcergwr gwerg wehrt trhreh eh
dewpw.
INTRODUCTION
Dpwejdpepwjepwde
oewjprjgpèjgè
Ekpwdkopewkopwk
rehjhrej jerrytulk
Wdkjepkeèwkèwek
hehphp cdsfvs vnp
Dwepojzmòdmòewd
berwbp frkhoè fep
dewjpo,
ewpè
THIS IS A TITLE DO YOU RECOGNIZE IT
Fhnoirfnpfrpjfoprjfèp
cioejcrpiejprojfèoew
Nwoeijndewpjpweje
wthwtreh rfthjehgret
Jdiwejdiwejdejwpojd v
dewpw.
wehrt trhreh eh
Estrarre l’XY-tree dal
documento in figura
Adjacency graphs
• Estraggo le componenti connesse.
• Formo nuovi oggetti, unendo le componenti a distanza
inferiore a D.
• Applico ricorsivamente l’algoritmo agli oggetti trovati al
passo precedente incrementando la soglia di unione D.
NB Talvolta si usano regole aggiuntive. Esempio:
favorire unioni in direzione orizzontale (per formare parole)
Adjacency graphs: passo 1
Estraggo le parole
Ciao sono
io
Ciao sono
io
Ciao sono
sempre io
Ciao sono
sempre io
Adjacency graphs: passo 2
Estraggo le linee
Ciao sono
io
Ciao sono
io
Ciao sono
sempre io
Ciao sono
sempre io
Adjacency graphs: passo 3
Estraggo i paragrafi
Ciao sono
io
Ciao sono
io
Ciao sono
sempre io
Ciao sono
sempre io
Adjacency graphs:
caratteristiche
• Effettuano segmentazione bottom-up.
• Consentono segmentazione a diversi livelli
(livello di paragrafo, linea, parola, carattere).
• E’ spesso necessario inserire regole
euristiche per unire in modo semanticamente
corretto gli elementi.
Skew
• Correggere l’orientamento di un documento è
• fondamentale per il successo di molti algoritmi
• di analisi di alto livello. Per esempio:
• XY-trees proiettano lungo linee orizzontali e verticali,
se documento non è ben orientato il metodo fallisce.
• Un OCR ha prestazioni migliori se i caratteri
in ingresso hanno una orientazione fissa.
Skew:
CT
ABSTRA
fèp
pfrpjfoprj
Fhnoirfn
w
jprojfèoe
cioejcrpie
je
ewpjpwe
nwoeijnd
jd
ejdejwpo
jdiwejdiw
dewpw.
metodo delle proiezioni
fè
fèprekèp
dkpowek
fèp
pfrpjfoprj
Fhnoirfn
w
jprojfèoe
cioejcrpie
je
ewpjpwe
nwoeijnd
jd
ejdejwpo
jdiwejdiw
dewpw.
Il documento originale
è inclinato. Proiettandolo
si ottiene una
distribuzione omogenea.
Il documento viene ruotato più
volte, finché non si scopre
l’angolo che minimizza la
ABSTRACT
dkpowekfèprekèpfè
Fhnoirfnpfrpjfoprjfèp
Fhnoirfnpfrpjfoprjfèp
regolarità della distribuzio-
cioejcrpiejprojfèoew
cioejcrpiejprojfèoew
nwoeijndewpjpweje
nwoeijndewpjpweje
ne. Tale angolo è l’angolo di
jdiwejdiwejdejwpojd
jdiwejdiwejdejwpojd
dewpw.
dewpw.
inclinazione del documento.
Skew:
metodo delle proiezioni
Come misurare la “regolarità” della proiezione di un
documento dopo averlo ruotato di un angolo ϕ?
Misurando l’energia della sua distribuzione (Baird1987):
E(ϕ) = ∫p(x)2dx
dove p(x) è la distribuzione della proiezione. Nel nostro
caso se E(ϕ) è più alta la distribuzione è più irregolare
(ϕ è più vicino all’inclinazione del documento).
Skew: metododi Hough
Hough trova le linee. Può essere usato per
trovare le linee di testo.
150
ABSTRACT
pjfoprjfèp
Fhnoirfnpfr
rojfèoew
cioejcrpiejp
pjpweje
nwoeijndew
dejwpojd
jdiwejdiwej
dewpw.
prekèpfè
dkpowekfè
pjfoprjfèp
Fhnoirfnpfr
rojfèoew
cioejcrpiejp
pjpweje
nwoeijndew
dejwpojd
jdiwejdiwej
100
50
0
dewpw.
Valori relativi ad una data
NB Questo metodo è
costoso ma molto
accurato.
inclinazione saranno alti.
Tale inclinazione è l’inclinazione
del documento.
Skew:
metodo Nearest-neighbor
Cerco i centroidi
Ciao
(momenti di ordine 0)
delle componenti
a
mamm
connesse
Unisco i centroidi vicini
140
120
Conto il numero di angoli
100
in un dato intervallo.
80
L’inclinazione è data dall’angolo
60
con conteggio massimo.
40
20
0
-10
-5
0
5
10
15
20
Misuro gli angoli tra centroidi contigui
Parte 4
Riconoscimento di testo
Introduzione
• Gli OCR (Optical Character Recognition)
permettono il riconoscimento dei caratteri
partendo da una loro immagine bitmap.
• Gli OCR si dividono nei seguenti gruppi:
• OCR per riconoscimento di caratteri stampati;
• OCR per ricoscimento di caratteri manoscritti;
• OCR per riconoscimento on-line di caratteri manoscritti;
Breve storia
• Il primo brevetto (in Germania) è del 1929!!!
Veniva fornita solo l’idea non una sua
realizzazione.
• Il primo brevetto (negli USA) è del 1933!!!
• Il Primo vero OCR arriva con l’avvento dei
computers intorno dopo il 1950.
La storia continua
• Primo OCR commerciale è dell’IBM nei primi
anni ‘60. Poteva riconoscere soltanto i
caratteri di un font speciale creato dall’IBM.
• Grandi miglioramenti tra il 1970 ed il 1990.
Stato dell’arte
• Oggi si trovano software commerciali che funzionano molto
bene su caratteri sulla maggior parte dei font comuni.
Si può affermare che oggi gli OCR sono uno dei
settori meglio compresi nell’analisi dei documenti.
• Al contrario non sono ancora perfettamente
compresi i problemi relativi al preprocessing
ed alla segmentazione dei caratteri.
OCR tecniche base
• Approccio Template-Matching: le immagini dei caratteri sono
confrontate con dei prototipi. Si seleziona il carattere con il
prototipo piu’ simile all’immagine in ingresso.
• Analisi strutturale: si estraggono caratteristiche
specifiche dell’immagine in ingresso (spesso locali
ad una piccola porzione di immagine). Tali
caratteristiche sono usate per decidere la classe
dell’immagine in ingresso.
OCR: Template-Matching
• Metodo diretto.
Valori
medi su
caselle
Ingresso
Prototipi
Confronto
OCR: Template-Matching
Il metodo diretto non funziona bene.
Non gestisce, traslazioni o rotazioni dei
patterns. Inoltre la firma ottenuta è poco
compatta.
OCR: Template-Matching
A
• Metodo riduzione della dimensione:
Questa e’ la firma
dell’immagine da
confrontare con dei
Proietto lungo asse x
prototipi
A BA B
• Metodo delle peepholes:
prototipo
Ingresso 1
Ingresso 2
SI match
NO match
OCR: Template-Matching
• Momenti: calcolo i momenti di ordine <= 6 e li uso come
features rappresentanti l’immagine. Si ottengono “firme”
invarianti rispetto alla posizione e dimensione del carattere.
• Serie di Fourier: rappresento l’immagine usando
trasformate di Fourier bi-dimensionali.
• Oppure estraggo il chain-code del contorno e
ne calcolo la trasformata di Fourier 1D.
OCR: analisi strutturale
Vediamo adesso alcuni metodi per estrarre
caratteristiche che descrivono in modo compatto
il contorno o la regione coperta da un oggetto.
Tali caratteristiche, se estratte da un oggetto di
tipo carattere, possono essere utilizzate
come “firma” per riconoscere la classe
dello stesso.
OCR: analisi strutturale
Rappresento
il pattern con un
grafo. Per esempio
con Line adjacency
graphs.
Confronto
Prototipi
OCR: analisi strutturale
• Approssimazione poligonale
• Raggio di curvatura
Punto di partenza
OCR: analisi strutturale
• Momenti di ordine 1:
• Momenti di ordine K
calcolo baricentro
• mx(K) = 1/n ∑ (xi- mx(1))K
• mx(1) = 1/n ∑ xi
• my(K) = 1/n ∑ (yi - my(1))K
• my(1) = 1/n ∑ yi
• Momenti di ordine 2 : varianza
• mx
(2)
= 1/n ∑ (xi- mx
(1))2
• my(2) = 1/n ∑ (yi - my(1))2
xi e yi indicano le
coordinate dell’i-esimo
pixel nero di una data
regione
OCR: Rappresentazione di contorni
• Dimensione = Area
• Compattezza = Area / Perimetro
• Compattezza misurata con mx(2) e my(2)
mx(3) = my(3) = 0
mx(3) = 0 my(3) != 0
• Simmetria = mx(3) e my(3)
Componenti HF
• Trasformata di Fourier
Componente LF
OCR: analisi strutturale
A
ingresso
contorno
parte convessa
Altre caratteristiche
utilizzate come
parte concava
firma di un carattere
elementi interni
Classificazione
Per classificare le firme delle immagini, si usano in genere
algoritmi basati su apprendimento.
• Reti Neurali
• Algoritmi statistici
• k-Nearest Neighbor (kNN)
• Support Vector Machines (SVM)
PUBBLICITA OCCULTA: Seguite il corso di “Sistemi di supporto alle decisioni”
per saperne di più …
Uso del contesto
In talune situazioni (soprattutto nel caso di
OCR omnifont) è impossibile assegnare una
identità univoca ad un carattere. Per esempio
i seguenti caratteri sono spesso indistinguibili
a partire dalla loro immagine bitmap:
• O da 0 (zero)
• (in alcuni font) l (elle) da 1.
Uso del contesto
Per discriminare tra più scelte possibili, gli OCR
più evoluti utilizzano vocabolari e modelli del
linguaggio (spesso basati su HMM) che
decidono l’identità del carattere sulla base
dei caratteri precedentemente incontrati.
Analisi semantica
Confronto tra la struttura del documento (data per esempio dagli
XY-trees) con dei prototipi semantici. In questo modo è possibile
dare una interpretazione semantica al testo in uscita all’OCR.
XY-tree di un
0, 0, 100, 100
0, 0, 100, 15
0, 15, 100, 20
0, 20, 100, 100
Documento
0, 0, 100, 100
Introduzione if a == 0 and b>10 and c == 100 and d > 80
Titolo if a == 0 and b == 0 and c>80 and d>70
Prototipo
Riassunto
1
dalla carta alla comprensione
• Acquisizione ottica
• Analisi di basso livello
• thresholding
• rimozione del rumore
• thinning (opzionale)
Riassunto 2
dalla carta alla comprensione
• Ricerca di linee ed di oggetti grafici
• Analisi di layout (XY-trees o Adjacency graphs)
• Estrazione di features dai componenti del
documento
• Momenti
• Analisi dei contorni
• Trasformate di Fourier
Riassunto 3
dalla carta alla comprensione
• Riconoscimento dei caratteri
• Analisi semantica