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