Ocr Prin Votare

Cuprins

Extragerea textului conținut într-o imagine digitală și convertirea acestuia într-un document electronic editabil se realizează cu ajutorul unei tehnologii OCR. Ca metodă de cuantificare a corectitudinii rezultatului se întoarce și un procent de acuratețe.

Deși motoarele OCR existente sunt din ce în ce mai avansate și pot extrage textul din ce în ce mai corect, totuși există situații în care imaginile oferite spre procesare nu au calitatea potrivită pentru recunoașterea corectă și completă a textului.

Lucrarea de față își propune să îmbunătățească recunoașterea textului prin proiectarea și implementarea unui sistem de votare OCR, bazat pe procentul de acuratețe și varierea datelor de intrare folosind un set de filtre de procesare a imaginilor digitale. Procesul de votare intervine în alegerea și combinarea rezultatelor parțiale care au procentul de acuratețe mai mare.

Introducere

Evoluția tehnologiei este în continuă creștere și aduce cu ea necesitatea de a transforma documente fizice precum texte istorice, cărți și publicații din trecut, în documente digitale cu scopul de a fi stocate, arhivate și accesibile permanent.

Un document în format electronic ocupă mai puțin spațiu atât fizic, cât și virtual, iar administrarea lui este mult mai facilă. Căutarea în cadrul acestuia devine o operație banală ceea ce în mod tradițional consumă relativ mult timp și poate cel mai important avantaj este dat de faptul că este ferit de deteriorare, respectiv pot fi create multiple copii de siguranță.

Procesul de obținere a documentelor electronice începe cu etapa în care documentele fizice sunt scanate sau fotografiate de dispozitive specifice și astfel introduse în calculator. Rezultatul acestei etape este, în ambele cazuri, o imagine digitală. Următorul pas este reprezentat de extragerea automată a informațiilor utile din acea imagine și convertirea lor în text editabil. Acest proces se poate realiza folosind un motor OCR.

În ultimele două decenii au fost dezvoltate numeroase astfel de motoare OCR, etapele și algoritmii din cadrul lor fiind îmbunătățiți constant pentru creșterea acurateței rezultatelor, însă și în ziua de azi mai există probleme în recunoașterea corectă a textului datorită, în mare parte, calității nepotrivite a imaginii digitale.

Lucrarea de față prezintă o metodă de îmbunătățire a rezultatelor prin construirea și implementarea unui sistem de votare bazat pe varierea datelor de intrare folosind diferite filtre de procesare a imaginilor digitale. Metrica de comparare și combinare a rezultatelor obținute în urma aplicării procesului de recunoaștere pe diferite astfel de preprocesări este procentul de acuratețe întors de tehnologia OCR.

Ce este OCR?

OCR este procesul (Fig. 1.1) prin care se obține informație text, editabilă, dintr-o imagine digitală. Astfel că o imagine ce conține text, procesată de o tehnologie OCR va rezulta într-un document text formatat în concordanță cu stilurile prezente în documentul inițial. Alături de textul întors, motorul OCR calculează și un procent de acuratețe (“confidence”) ce reprezintă gradul de încredere al acestuia că textul întors este corect.

Fig. 1.1 Descrierea procesului OCR

Există multe tehnologii OCR ce au fost dezvoltate de-a lungul timpului, atât open-source, cât și comerciale. Unul dintre cele mai cunoscute este Tesseract [3], un motor OCR open-source aflat încă în stadiu de dezvoltare și care va fi folosit ca tehnologie de bază pentru implementarea sistemului de votare bazat pe varierea datelor de intrare prin aplicarea unor filtre de imagine.

La ce se referă OCR prin votare ?

În general, orice sistem de votare pornește de la un element de bază căruia îi sunt variați anumiți parametri. Astfel, se obțin mai multe elemente cu proprietăți diferite și fiecare cu o posibilitate de îmbunătățire a rezultatului final. Ca procesul de votare să aibă loc sau mai simplu spus procesul de alegere, trebuie să existe un termen cuantificabil care să indice cât de mult va îmbunătății, respectivul element, rezultatul final. Acest termen depinde foarte mult de problema abordată, dar în cadrul unui sistem de votare OCR, un astfel de termen este procentul de acuratețe.

OCR prin votare se referă la două abordări: una în care sunt variate datele de intrare folosind diferite filtre de imagine, iar cea de-a doua, în care sunt folosite două sau mai multe motoare OCR pe aceleași date de intrare. Votarea este reprezentată de alegerea rezultatelor parțiale, cu procentul de acuratețe mai mare, și combinarea lor în vederea îmbunătățirii rezultatului final.

În prima abordare, o preprocesare a imaginii trebuie văzută ca un candidat pentru îmbunătățirea acurateței unui motor OCR. Gradul a cât de bun este rezultatul fiecărei preprocesări este dat de procentul de acuratețe, iar prin compararea acestor procente se poate alege varianta mai bună, în vederea includerii în rezultatul final.

Cea de a doua abordare este reprezentată de folosirea a cel puțin două tehnologii OCR distincte și procesarea aceluiași set de date de intrare.

Obiectivul acestei lucrări este de a proiecta, implementa și testa un sistem de votare bazat pe varierea datelor de intrare și combinarea lor în funcție de procentul de acuratețe întors, în vederea îmbunătățirii rezultatului final.

Concepte de bază

Printre conceptele de bază ce ajută la înțelegerea funcționării unui motor OCR și ce etape pot fi îmbunătățite pentru a crește acuratețea rezultatelor se enumeră: descrierea procesului OCR și a etapelor de bază ce-l compun, binarizarea imaginilor și metode de binarizare precum metoda cu prag global (Otsu), metodele de prag local Sauvola sau Niblack sau metoda ce analizează o histogramă bimodală, segmentarea și analiza documentului pentru delimitarea și clasificarea obiectelor dintr-o scenă și filtre de procesare a imaginilor ce au în prim-plan transformări morfologice fundamentale precum eroziunea și dilatarea.

În capitolul de față, procesele și metodele enumerate mai sus vor fi descrise, pe scurt, cu exemple, pentru a ajuta la o mai bună înțelegere a complexității procesului OCR și a etapelor ce pot fi îmbunătățite.

Procesul OCR

Fie că este vorba despre un motor OCR open-source sau de unul comercial, procesul prin care se ajunge să se recunoască textul dintr-o imagine urmează un drum prestabilit (Fig. 2.1) și anume un număr de patru stagii complexe în care sunt aplicați diferiți algoritmi cu scopul de a facilita recunoașterea.

Fig. 2.1 Proces OCR generic

Etapele procesului OCR

Preprocesarea imaginii este primul dintre cele patru stagii și de altfel unul foarte important deoarece acest pas încearcă să pregătească și să simplifice imaginea (datele de intrare) pentru ca recunoașterea textului să fie cât mai corectă. Este etapa în care se corectează înclinația paginii, se detectează orientarea textului și se aplică diferiți algoritmi de binarizare, alături de o serie de filtre de procesare a imaginii.

Scopul preprocesării este obținerea unei imagini mai clare, cu un contrast puternic între fundalul acesteia și obiectele din prim-plan (textul), o luminozitate omogenă și lipsa elementelor datorate degradării denumite artefacte (de regulă, zgomotul de fond provenit din cauza învechirii paginii sau creării de copii ale copiilor).

Desigur, enumerația de mai sus descrie o imagine ideală, însă în realitate imaginile au grade diferite de deteriorare și din această cauză nu există o singură soluție care să îmbunătățească deodată calitatea imaginii. Prin folosirea mai multor preprocesări se încearcă treptat reducerea zgomotului de fond, acolo unde este posibil, și obținerea unei imagini de o calitate potrivită pentru a putea realiza procesul de recunoaștere.

Cel de-al doilea stagiu este reprezentat de o serie de algoritmi de analiză și segmentare a imaginii provenite din etapa de preprocesare, în vederea obținerii unui șablon al documentului inițial. Sunt detectate și clasificate obiectele din scenă, respectiv blocurile de interes (textul) și legăturile dintre ele.

Segmentarea imaginii este făcută astfel încât să poată fi recunoscute zone ce conțin text și este important ca elementele ce compun aceste zone să fie ierarhizate și clasificate în paragrafe, linii de text, cuvinte și caractere. Practic, imaginea este pregătită pentru procesul de recunoaștere, fiecare element din cadrul acesteia fiind conturat, clasificat și stocat într-un obiect alături de coordonatele sale. De altfel, această etapă ajută și la formatarea documentului final.

Recunoaștere textului este cel de al treilea stagiu, ce depinde foarte mult de limba textului ce trebuie extras din imagine, de mărimea, stilul caracterelor și spațierea dintre acestea. Pentru o recunoaștere cât mai corectă a textului, se folosesc diferite șabloane și metode bazate pe dicționare. Un document ce conține text în mai multe limbi va trebui să încarce și să alterneze dicționare pentru aceste limbi pentru o recunoaștere cât mai corectă.

De asemenea, în etapa de recunoaștere se calculează și procentul de acuratețe ce reprezintă o cuantificare a încrederii că motorului OCR întoarce un rezultat bun. În funcție de implementare, este posibil ca acest procent să fie întors pentru diferite nivele de ierarhie (întreg textul, paragrafe, linii, cuvinte și chiar caractere). În cadrul metodei propuse, procentul de acuratețe va fi calculat pe blocuri de text.

Ultimul stagiu de procesare este reprezentat de colectarea rezultatelor și oferirea lor în diferite formate text, atât editabile (txt, doc), cât și needitabile (pdf). Abordările mai recente folosesc această etapă ca una de post-procesare, în care se fac diferite statistici ale cuvintelor întoarse sau se aplică diferiți algoritmi de corecție a rezultelor cu scopul de a îmbunătăți datele finale.

Un exemplu real de tehnologie OCR este reprezentat de Tesseract . Acesta este unul dintre primele motoare OCR apărute ce a obținut rezultate foarte bune în cadrul unor teste de măsurare a acurateței. Arhitectura (Fig. 2.2) programului este una pipeline, ce conține următoarele etape, în această ordine: etapa de preprocesarea ce realizează o binarizare a imaginii, etapa de determinare a componentelor conectate și a conexiunilor dintre ele, cât și stocarea lor în obiecte denumite blobs, etapa de recunoaștere a caracterelor și împărțirea lor în cuvinte, linii, paragrafe și o ultimă etapă ce rezolvă problema detectării textului de tip small caps.

Fig. 2.2 Arhitectură Tesseract OCR

Recunoașterea în doi pași este o etapă prin care se încearcă îmbunătățirea rezultatelor prin implementarea unui mecanism de feedback și anume: în prima trecere se face o recunoaștere parțială a textului cu scopul de a obține un set de date preliminare. Pe baza acestui set de date și ulterior a unei procesări totale a textului se optimizează procesul de recunoaștere și se rafinează rezultatul final.

Etapa de binarizare

Imaginile digitale sunt formate din pixeli, însă domeniul de culori pe care o imagine îl poate afișa este în concordanță cu numărul de biți pe care este reprezentat un pixel din acea imagine. Termenul poartă denumirea de adâncime a culorii (“color depth”).

Numărul de biți poate fi grupat într-o serie de componente, fiecare dintre acestea reprezentând intesitatea unei anumite culori. Spre exemplu, formatul RGB are la bază combinarea culorilor roșu, verde și albastru, fiecare astfel de culoare fiind reprezentată pe 8 biți în cadrul unui pixel, însumând un total de 24 de biți per pixel.

Cu cât numărul de biți este mai mare, cu atât un pixel din imagine va putea lua o anumită nuanță de culoare. Spre exemplu, o imagine binară are o adâncime a culorii de un bit și o singură componentă, astfel că imaginea va fi reprezentată folosind două culori: alb și negru.

Imaginile digitale din ziua de astăzi sunt în general afișate folosind o adâncime a culori de cel puțin 24 de biți ceea ce oferă o gamă largă de nuanțe, însă din perspectiva unui motor OCR existența unui domeniu vast de culori, în cadrul unei imagini, este irelevant. Cu alte cuvinte, nu contează ce culoare are textul din imaginea de intrare, ci contează să existe un contrast puternic între el și culoarea de fundal, iar reprezentarea imaginii să ocupe cât mai puțin spațiu pentru ca manevrarea structurilor interne din cadrul tehnologiei OCR să fie facilă. Astfel că sunt preferate imaginile ce au numărul de biți pentru reprezentarea unui pixel redus la minim (imagini alb-negru).

Între imaginile puternic colorate și cele alb-negru există cele în tonuri de gri (“grayscale”) ce reduc plaja de culori la 256 de nuanțe de gri, culoarea devenind astfel o măsură a intensității luminoase. Limita inferioară a acestor imagini este reprezentată de culoarea neagră, respectiv culoarea albă pentru limita superioară.

Uzual, procesul OCR începe prin încărcarea și convertirea imaginii de intrare într-una în tonuri de gri pentru a simplifica de la început procesarea. Următorul pas este reprezentat de transformarea imaginii rezultate din pasul anterior într-una alb-negru, moment în care intervine etapa de binarizare.

Binarizarea sau prăguirea („threshold”) este procesul în urma căruia se obține o imagine alb-negru. Acesta se bazează pe determinarea unei valori denumită prag folosind diferite metode și algoritmi. Odată determinat pragul T, fiecare pixel de coordonate (x,y) din imagine va avea fie culoarea neagră, fie culoarea albă în funcție de comparația dintre valoarea acestuia s(x,y) și T.

Considerând o imagine în tonuri de gri ce are o variație a intensități s(x,y) ϵ [0, 255] și cu pragul T ϵ [0, 255], matematic, funcția de prag se poate formula astfel:

(1)

unde d(x,y) este pixelul de coordonate (x,y) din imaginea rezultată.

Etapa de binarizare este esențială pentru un motor OCR, nu numai pentru că imaginea devine mai ușor de procesat, ci și pentru că se reduce din zgomotul de fond datorat în mare parte degradării datelor de intrare.

Metode de binarizare

De-a lungul timpului au fost dezvoltați mai mulți algoritmi de binarizare atât globali, cât și locali, unii dintre aceștia vor fi prezentați pe scurt în secțiunea de mai jos.

Metodele de binarizare globale sau cu prag fix calculează o valoare de prag și o folosesc pentru transformarea tuturor pixelilor din imagine de intrare. Dezavantajul este că unele imagini pot avea o distribuție eterogenă a luminozității și astfel că în urma aplicării acestor metode, zonele mai întunecate vor avea culoarea neagră.

Printre cele mai cunoscute astfel de metode se enumeră: selectarea unui prag fix, metoda Otsu sau metoda bazată pe o histogramă bimodală . Următoarea secțiune prezintă pe scurt acești algoritmi.

Cea mai simplă metodă de binarizare este cea în care se setează de la început o valoare de prag, fără a face vreun calcul de determinare a acestuia. Folosind o imagine în tonuri de gri, pentru pragul T se alege, de regulă, jumătatea intervalului.

O altă metodă globală de binarizare, dar care determină valoarea de prag automat este metoda propusă de Otsu ce presupune că imaginile au în general două tipuri de pixeli, cei care fac parte din fundal și cei ce reprezintă obiectul de interes. Prin observarea histogramei imaginii se deduce că pixelii din aceste două grupuri se întrepătrund ducând la rezultate incorecte dacă se alege o valoare de prag necorespunzătoare. Metoda încearcă să restrângă suprapunerea celor două grupuri de pixeli minimizând varianța între aceste grupuri și calculând astfel un prag optim.

Metoda bazată pe o histogramă bimodală se folosește, de regulă, pentru procesarea imaginilor în tonuri de gri. Ideea de la care se pornește este că există doar două mulțimi de obiecte în scenă ce diferă printr-un contrast puternic (ceea ce se întâmplă și în cazul documentelor text).

Astfel că obiectele care aparțin unei aceleiași mulțimi au intesitățile similare și un studiu atent al histogramei (Fig. 2.3) acelei imagini va arăta existența a două puncte de maxim local. Valoarea pragului T optim este dată de alegerea minimului local dintre toate valorile ce se află între cele două maxime. Matematic descris, pixelii de coordonate (x,y) ce au intensitatea f(x,y) > T reprezintă obiecte de interes (textul), altfel aceștia fac parte din fundal.

Fig. 2.3 Exemplu de histogramă bimodală

Cea de a doua categorie de algoritmi de binarizare este reprezentată de cei locali sau adaptivi. Aceștia împart, inițial, imaginea de intrare într-o serie de regiuni disjuncte și calculează pentru fiecare în parte câte o valoare de prag ce va fi folosită doar pentru transformarea pixelilor din acea regiune. Aceste zone din imagine sunt, de regulă, matrici pătratice cu o dimensiune stabilită preliminar, iar reuniunea lor trebuie să compună imaginea inițială. Dezavantajul acestor metode este că evidențiază zgomotul de fond.

Niblack și Sauvola sunt două metode locale de determinarea a valorii pragului folosind deviația standard și valoarea medie a culori pixelilor din acea regiune. Acestea sunt printre cele mai cunoscute metode de binarizare. Mai jos (Fig. 2.4) se poate vedea diferența dintre ele.

Fig. 2.4 Exemple de binarizare (stânga-dreapta, sus-jos): imagine originală în tonuri gri,

histograma bimodală, metoda Otsu, metoda Niblack, metoda Sauvola

Se observă cum metodele de binarizare globale (histogramă bimodală, Otsu) încearcă să omogenizeze imaginea unind regiunile ce au valori apropiate, pe când cele locale (Niblack, Sauvola) întorc rezultate mai bune, dar există probabilitatea apariției zgomotului de fond.

Segmentarea și analiza documentului

Binarizarea simplifică imaginea de intrare transformând-o într-una alb-negru, însa acest proces nu poate delimita clar pixelii care fac parte dintr-un anumit obiect din scenă. Spre exemplu, se dorește extragerea unui obiect din imagine, ceea ce nu este posibil dacă nu se determină pixelii ce conturează și compun acel obiect.

Delimitarea obiectelor dintr-o scenă (imagine) după o anumită proprietate a pixelilor (culoare, intensitate, textură) poartă denumirea de segmentare . De regulă, se crează o mască a imaginii de intrare în care pixelii ce aparțin unei zone de interes (un obiect din imagine) au o anumită culoare (Fig. 2.5).

Spre exemplu, procesul de binarizare poate fi considerat ca fiind o metodă simplă de segmentare deoarece, în cadrul acestuia, se încearcă determinarea unei valori de prag optime, astfel încât obiectele din prim-plan să fie delimitate de cele din fundal.

O imagine a unui document poate conține text, grafice, cât și o pozițonare complexă a acestora. În cadrul unui motor OCR, scopul segmentării este de a simplifica procesarea imaginii de intrare prin delimitarea și extragerea zonelor de interes (text). Dacă regiunile ce conțin text nu sunt delimitate corespunzător, față de zonele ce conțin componente non-text (imagini, grafice), rezultatele întoarse de procesul de recunoaștere vor avea o acuratețe scăzută.

Fig. 2.5 Exemplu de segmentare a obiectelor din scenă (stânga-dreapta):

imagine originală, imagine segmentată

Metode de segmentare

De-a lungul timpului, s-a dezvoltat o serie de metode ce a încercat să îmbunătățească acest proces precum: segmentarea bazată pe histogramă, segmentarea bazată pe regiuni ce se extind, abordarea Watershed și multe altele, unele dintre ele fiind descrise pe scurt, mai jos.

Orice metodă de segmentare trebuie să respecte următoarele criterii : reuniunea sau recombinarea tuturor regiunilor (segmentelor) trebuie să reconstituie imaginea inițială (cu alte cuvinte segmentarea trebuie să fie completă), regiunile trebuie să fie disjuncte pentru a evita suprapunerea și diferite între ele, în sensul că fiecare regiune grupează doar pixelii ce respectă o anumită condiție.

Segmentarea bazată pe histogramă este, de regulă, folosită pentru procesarea imaginilor în tonuri de gri și pornește de la ideea că pixelii ce reprezintă obiecte din scenă vor apărea în cadrul histogramei ca fiind puncte de maxim local împărțite de puncte de minim local. Astfel că toți pixeli ce au valori între un punct de maxim local și unul de minim local sunt grupați deoarece există probabilitatea să facă parte din același obiect. Principalul dezavantaj al acestei metode este că se crează un număr nenecesar de mare de segmente, efect ce poartă denumirea de supra-segmentare (“over-segmentation”).

Segmentarea bazată pe regiuni (“region growing”) ce se extind treptat, grupează pixelii dintr-o imagine în grupuri folosind proprietăți precum culoarea și variația acesteia, iar din punct de vedere geometric distanța euclidiană și faptul că, de regulă, un obiect din scenă tinde să fie colorat omogen. Algoritmul începe prin selectarea aleatoare a unui pixel din cadrul unui obiect și adăugarea ulterioară a pixelilor vecini, atât timp cât este satisfăcut un criteriu de omogenitate. Efectul rezultat este al unei regiuni ce se extinde treptat.

Abordarea Watershed consideră suprafața imaginii ca fiind una tridimensională folosind coordonatele pixelului (x,y) și valoarea (culoarea) aferentă acestuia f(x,y). Există mai mulți algoritmi ce încearcă să implementeze această abordare, dar principalul dezavantaj rămâne

supra-segmentarea.

Analiza documentului

O altă etapă foarte importantă fără de care procesul de recunoaștere nu ar putea avea loc este cea de analiză a documentului. După extragerea zonelor de interes (segmentarea) și astfel stabilirea obiectelor ce se doresc a fi procesate, trebuie determinată structura logică a documentului. Spre exemplu, ziarele (Fig. 2.6) sunt documente ce au un șablon (“layout”) complex al poziționării elementelor în cadrul acestuia: titlul și subtitlurile sunt scrise cu diferite mărimi, textul de bază este împărțit în coloane și de asemenea există diferite imagini, grafice și tabele.

În scopul arhivării intacte, în format text, a unui astfel de document se dorește extragerea tuturor elementelor din cadrul acestuia și astfel că diferite obiecte trebuiesc clasificate și încadrate în forme dreptunghiulare (“box”) ce li se cunosc poziționarea în pagină (coordonatele). Clasificarea obiectelor trebuie să urmeze o structură logică și ierarhizată. Spre exemplu, blocurile de text vor conține obiecte de tip paragraf ce sunt compuse din linii de text, iar acestea la rândul lor sunt constituite din cuvinte. Procesul de clasificare trebuie să meargă până la nivel de caracter și să cuprindă toate elementele din pagină alături de legăturile dintre ele. Printre algoritmii ce realizează analiza documentului se enumeră: XY-cut sau Whitespace cover .

Fig. 2.6 Rezultatul analizei documentului (stânga-dreapta):

imagine originală, clasificarea regiunilor

Filtre de procesare a imaginilor

Printre filtrele de procesare a imaginilor, un impact puternic în îmbunătățirea rezultatelor pe care un motor OCR le întoarce, sunt cele ce realizează transformări morfologice. Procesul este unul relativ simplu: o astfel de transformare este reprezentată de aplicarea unui element de structură B (matrice) asupra unei imagini de intrare A, rezultatul fiind o nouă imagine modificată în conformitate cu structura B.

Scopul acestor transformări este, în principal, de a reduce din zgomotul de fond al datelor de intrare, datorat în mare parte degradării acestora.

Prin aplicarea transformărilor morfologice, obiectele din scenă pot fi separate sau reunite în funcție de operația de bază folosită. Spre exemplu, literele lipite din cadrul unor cuvinte pot fi despărțite, diferite artefacte (puncte, scame) datorate scanării documentului pot fi reduse sau chiar eliminate, ceea ce va îmbunătății considerabil acuratețea rezultatelor.

Transformările morfologice pornesc de la o imagine alb-negru, astfel că mai întâi este necesară o etapă de binarizare, urmată apoi de folosirea uneia dintre cele două operații fundamentale: eroziunea sau dilatarea. Prin combinarea celor două se pot obține anumite efecte.

Elementul de structură B poartă denumirea de kernel (Fig. 2.7) și nu este altceva decât o imagine (de regulă, o matrice pătratică) alb-negru, cu o dimensiune preliminar stabilită și mult mai mică față de dimensiunea imaginii originale, ce conține o anumită formă.

Fig. 2.7 Exemplu de kernel (stânga-dreapta): plus, pătrat

dimensiunea 3, origine centru

Forma aleasă este importantă deoarece pe baza acesteia sunt modificați pixelii din imaginea ce trebuie procesată.

O altă componentă importantă este originea elementului de structură care specifică dacă se va realiza transformarea morfologică sau nu, în următorul mod: în timp ce elementul structural este plasat peste imaginea de intrare, originea acestuia se va suprapune peste un pixel din imaginea originală. Dacă pixelul peste care este suprapusă originea este alb, nu se efectuează nicio transformare, ci se sare la următorul pixel, însă dacă acesta este negru se vor efectua transformările în funcție de operația aleasă. Cele două operații de bază sunt descrise mai jos (Fig. 2.8).

Dilatarea este procesul prin care conturul elementelor din imaginea rezultată sunt mai sunt mai subțiate, făcând ca fondul imaginii să fie mai îngroșat și uneori ca elementele mai întunecate să fie despărțite.

Eroziunea este procesul invers prin care conturul elementelor din imaginea rezultată sunt mai îngroșate, făcând fondul imaginii sa fie mai subțiat și uneori ca elementele mai luminoase să fie reunite.

Fig. 2.8 . Operații morfologice de bază(stânga-dreapta): dilatare, eroziune

aplicate pe imagine alb-negru și în tonuri gri

Se observă că logica operațiilor este inversă, în sensul că acestea au în prim-plan culoarea de fond (culoarea mai luminoasă), în detrimentul culorii obiectelor (culoarea mai închisă).

În cadrul procesului OCR, o transformare morfologică face parte din etapa de preprocesare și urmează, de regulă, următorul set de pași:

imaginea de intrare este procesată folosind un algoritm de binarizare

se alege dimensiunea elementului de structură

se alege forma elementului de structură

se aplică fie un filtru de eroziune ce are ca scop să îngroașe elementele din imagine

(eventual să unească diferite elemente), fie un filtru de dilatare prin care elementele din

imagine sunt subțiate (eventual să despartă anumite elemente), fie o combinație a celor

două.

Mai multe detalii privind aceste transformări, cât și ce efecte se pot obține prin combinarea lor pot fi găsite aici .

Metode de îmbunătățire a acurateței

În ultimele două decenii, procesul OCR și etapele acestuia au fost constant dezvoltate datorită evoluției rapide a tehnologiei, cât și a necesității de a stoca informația în format electronic.

Metodele de îmbunătățire a acurateței rezultatelor, pot fi împărțite în trei mari categorii, în funcție de momentul în care se realizează etapa de recunoaștere a textului și anume: preprocesare, procesare și postprocesare.

De regulă, procesarea este reprezentată de motorul OCR și de algoritmii și metodele proprii acestuia. Motoarele OCR reprezintă tehnologii ce au la bază abordări diferite, iar acest lucru este vizibil prin comparația rezultatelor obținute în urma procesări aceluiași set de date de intrare de către mai multe astfel de motoare. Există un proces de antrenare al motorului OCR ce oferă flexibilitate în recunoaștere, ce este prezentat mai jos, alături de o comparație între două astfel de tehnologii OCR.

În categoria de preprocesare, ce are ca scop îmbunătățirea datelor de intrare prin aducerea acestora la o calitate potrivită, vor fi prezentate, pe scurt, abordări recente bazate pe implementarea unui sistem de votare deoarece un studiu al rezultatelor acestor abordări, arată o îmbunătățire semnificativă a calității imaginii procesate. Articolele încearcă să combine algoritmi clasici pentru îmbunătățirea etapelor de binarizare, segmentare, respectiv analiză a documentului.

Metodele din cadrul categoriei de postprocesare sunt orientate pe corectarea rezultatelor. În secțiunea 3.2.2 este prezentată o abordare bazată pe dicționare.

Comparație între motoare OCR.Procesul de antrenare.

Tesseract și Abby FineReader sunt printre cele mai cunoscute tehnologii OCR. În vederea oferiri unei perspective către comportamentul și rezultatele obținute în cadrul unor aplicații reale va fi prezentată o scurtă comparație între aceste două tehnologii. Ambele motoare au apărut în aceeași perioadă și sunt în continuă dezvoltare. Tabelul 1 prezintă sumar câteva informații despre cele două motoare OCR.

Tabel 1

Motoare OCR

Aceste tehnologi dispun de un proces prin care se poate antrena motorul OCR în privința recunoașterii caracterelor din diferite limbi și foarte important recunoașterea unui anumit stil (font). Este unul dintre cele mai importante procese din cadrul unui motor OCR, pentru că oferă flexibilitate (utilizarea lui poate extinde capabilitățile motorului la aproape orice limbă scrisă și stil).

Un studiu a făcut o comparație detaliată între Tesseract v. 3.0.1 și Abbyy FineReader v. 10, având ca date de test documente istorice datate înainte de anul 1850 și printate în limba poloneză. Aceste date au fost obținute în cadrul unui proiect denumit Impact. Proiectul s-a desfășurat în perioada Februarie 2010 – Iunie 2011 și a avut ca scop oferirea uni acces facil către documente istorice de valoare culturală. Mai jos este prezentat pe scurt cum s-a realizat această comparație și ce rezultate s-au obținut.

Datorită faptului că datele de intrare sunt istorice și au diferite combinații de font, înclinare, glife a fost necesar ca ambele motoare OCR să fie antrenate în vederea recunoașterii caracterelor. Procesul de antrenare a avut un pas premergător ce a constat în restructurarea datelor menționate mai sus pentru ușurarea metodologiei de recunoaștere. De altfel, a fost creată o versiune mai curată a imaginii documentului original, aceasta din urmă conținând foarte multe artefacte, cu scopul de a compara rezultatele acurateței dintre versiunea originală și cea curățată.

Au existat mai multe serii de teste ce conțineau exclusiv caractere gotice sau antiqua și pentru că setul de date este mare și este nevoie de procesului de antrenare s-a ales ca datele să fie împărțite în două grupuri pentru fiecare test. A fost folosit un număr de pagini de antrenare și unul de testare, astfel că întregul proces a căpătat o alură de feedback pentru motorul OCR respectiv.

Pentru Tesseract procesul de antrenare realizat în urma procesului de restructurare a datelor a fost făcut în mod automat, pe când pentru Abbyy, nerecunoașterea formei unor caractere a dus la introducerea manuală a caracterului sau la ajustarea formei acestuia.

Ca o măsură a cantității datelor ce au fost procesate a existat un total de 186 de pagini, din care 38 au fost folosite pentru procesul de antrenare și restul de 148 de pagini au fost folosite ca date de recunoaștere. De altfel, paginile au fost procesate atât în varianta curățată, cât și în cea originală, acestea conțineau exclusiv caractere gotice sau antiqua, iar acuratețea a fost calculată la nivel de caracter și de cuvânt.

Tabel 2

Comparație rezultate Tesseract-Abbyy

Tabel 2 prezintă două teste. Pentru „test-na” se observă că Abby are un grad mai mare de acuratețe în ambele cazuri, însă pentru „test-19” Tesseract se pare că oferă o acuratețe mai bună decât Abby, însă nu destul de bună.

În urma studiului, s-a observat că Tesseract întoarce, în general, rezultate mai bune pentru documentele ce conțin caractere gotice, atât la nivel de caracter, cât și de cuvânt, însă după cum se vede și în Tabel 2, acestea sunt mai bune pentru varianta curățată a imaginii ceea ce confirmă faptul că etapa de preprocesare îmbunătățește acuratețea și este necesară cu atât mai mult în cadrul procesării unor documente istorice.

Astfel că fiind dat un set de date ce întoarce rezultate, relativ bune, pentru diferite preprocesări sau în urma aplicări unor mai multor tehnologii OCR, se poate crea un sistem de votare OCR care să aleagă rezultatele ce au procentul de acuratețe maxim. Concluziile studiului de mai sus dovedesc că implementarea unui astfel de sistem de votare este o idee viabilă.

Soluții existente pentru îmbunătățirea acurateței OCR

În acest subcapitol vor fi prezentate câteva metode recente de îmbunătățirea a acurateței rezultatelor unui proces OCR. Metodele ce vor fi descrise, sunt clasificate în două categorii: cele ce se realizează în etapa de preprocesare și respectiv, etapa de postprocesare OCR.

Etapa de preprocesare încearcă să ușureze munca unui motor OCR prin prelucrarea datelor de intrare într-un mod optim și eficient astfel încât acestea să fie de o calitate superioară. Printre metodele ce constituie această etapă se enumeră: detecția și corecția înclinării, binarizarea, analiza și segmentarea documentului, modificarea rezoluției și aplicarea diferitelor filtre de preprocesare a imaginilor.

De menționat că metodele enumerate mai sus fac parte din componența unui motor OCR, iar această etapă nu are ca scop înlocuirea celor existente, ci doar simplificarea îndeajuns a datelor de intrare pentru ca ulterior, procesarea OCR să întoarcă rezultate mai bune.

Binarizarea prin votare

Implementarea unui sistem de votare nu este o idee nouă, ea fiind folosită în abordări recente pentru realizarea optimă și eficientă a operației de binarizare, de segmentare sau de analiză a documentului. Ideea de bază este că se pornește de la un set de algoritmi clasici cărora li se cunosc comportamentul pentru o anumită problemă abordată. Separat, acești algoritmi oferă rezultate bune doar pentru anumite regiuni din datele de intrare ceea ce reprezintă și neajunsurile acestora, însă prin combinarea datelor parțiale și selectarea rezultatelor (votarea) pe baza unei note (măsura în care un rezultat parțial este mai bun ca altul, determinat matematic) se pot îmbunătății rezultatele finale.

Ca o exemplificare a viabilității unui astfel de sistem de votare, va fi prezentată, pe scurt, binarizarea prin votare .

În secțiunea 2.2.1 au fost prezentate două categorii de algoritmi de binarizare. Prima categorie este reprezentată de metodele globale de determinare a pragului. Avantajul acestor metode globale este rapiditatea determinării valorii de prag, însă au rezultate bune doar dacă imaginea de intrare are luminozitatea distribuită omogen, zgomot de fond redus sau ineexistent, iar elementele sunt definite clar prin folosirea unui contrast puternic între obiectele din prim-plan și cele de fundal. În categoria a doua se încadrează un număr de algoritmi adaptivi ce împart preliminar imaginea într-un set de regiuni disjuncte, ce respectă conceptul de completitudine și apoi calculează valoarea de prag pentru fiecare astfel de zonă.

De regulă, o granularitate mai mică dă rezultate mai bune, însă ambele abordări au dezavantajele lor și anume binarizarea locală desparte zonele adiacente și asemănătoare din punct de vedere al intensității sau culorii introducând astfel zgomot de fond, pe când aceleași zone au un comportament diferit în cazul binarizării globale și anume se încearcă o omogenizare a zonelor prin unirea lor făcând ca anumite obiecte să nu mai poată fi recunoscute în totalitate.

Binarizarea prin votare încearcă să medieze comportamentele enunțate mai sus folosind un algoritm de votare ce combină rezultatele a cinci algoritmi: doi globali (metoda Otsu și histograma bimodală) și trei locali (Niblack, Sauvola și Wolf), o parte dintre ei fiind prezentați pe scurt în secțiunea “Metode de binarizare”.

Ideea de la care s-a pornit este că fiecare algoritm din cei cinci este rulat pe imaginea de intare și sunt obținute o serie de imagini binare, apoi o imagine binară este împărțită într-un număr de zone disjuncte, iar pentru fiecare zonă se calculează zgomotul de fond. Pe baza acestui zgomot se determină câte obiecte sunt în cadrul unei zone și dacă numărul este mare se alege o metodă de binarizare globală, alfel se alege una locală pentru respectiva zonă.

Rezultatele (Fig. 3.1) demonstrează obținerea unei imagini binare mai clare și cu zgomot de fond redus, cât și o separare mai bună a obiectelor din cadrul scenei.

Fig. 3.1 Binarizarea prin votare(stânga-dreapta): original, histogramă bimodală,

Otsu, Niblack, Sauvola, Wolf, votare

Metode bazate pe dicționare

Postprocesarea cuprinde tehnici de corecție a rezultatelor. Deseori sunt folosite dicționare sau statistici făcute pe rezultate pentru a influența pozitiv noile procesări sau în cel mai rău caz dacă datele necesită un grad ridicat de precizie, sunt făcute verificări manuale.

Ca această etapă să aibă loc este necesar ca datele de ieșire, întoarse de procesul de recunoaștere, să aibă o acuratețe ridicată deoarece trebuie să existe suficientă informație de fond pentru a putea corecta eventualele greșeli.

O abordare mai nouă, însă bazată pe ideea de dicționare, este reprezentată de folosirea unui set de date (Google Web 1T 5-gram ) ce conține secvențe de maxim cinci cuvinte (“5-ngrams”) extrase din documente de pe întreg internetul, pentru corectarea cuvintelor recunoscute incomplet de procesul OCR.

Algoritmul are trei pași:

se detectează cuvintele care au posibile probleme și anume se iterează printre toate cuvintele întoarse de motorul OCR și se aleg acelea care nu se găsesc în setul de date prezentat mai sus.

se construiește o listă de cuvinte candidate pentru fiecare dintre cuvintele problemă existente, folosind același set de date. Posibilitățile sunt multiple astfel că lista de candidați este limitată la primele zece intrări găsite.

se adaugă pe lângă un anumit cuvânt-cadidat alte patru cuvinte din textul procesat pentru a forma o secvență de cinci cuvinte și prin folosirea statisticilor și compararea cu setul de date se determină cea mai bună potrivire.

Algoritmul este descris detaliat, în pseudocod, alături de rezultatele obținute în acest articol .

În capitolul următor, va fi prezentată soluția propusă pentru implementarea unui sistem de votare bazat pe varierea datelor de intrare și combinarea lor în funcție de procentul de acuratețe. Prin acest sistem se încearcă obținerea celei mai bune variante a textului ce trebuie recunoscut.

Descrierea sistemului de votare

Din cele menționate mai sus se poate observa că există tehnologii OCR ce întorc rezultate diferite prin procesarea aceluiași set de date de intrare. De altfel, datele din Tabel 2 sunt și o justificare a acestui lucru, cât și a faptului că o imagine prelucrată poate îmbunătății considerabil acuratețea procesului de recunoaștere. Totuși, rezultatele au în continuare un grad de acuratețe mic, în special datorat faptului că imaginea oferită spre procesare este slab calitativă sau filtrele aplicate nu sunt potrivite pentru particularitățile zgomotului din acea imagine.

În secțiunea 3.2, au fost prezentate pe scurt două metode de îmbunătățire a procesului de recunoaștere. Una este bazată pe implementarea unui sistem de votare pentru medierea defectelor din cadrul mai multor metode de binarizare și obținerea unei variante mai bune, iar cealaltă reprezintă o abordare orientată pe un vast dicționar online prin care se dorește corectarea cuvintelor recunoscute greșit. Metoda propusă poate fi atât una alternativă, cât și combinată cu alte astfel de metode de îmbunătățire, pentru a reduce la minim rata de erori ce pot apărea în urma procesului de recunoaștere.

Există multe etape sau procese ce pot fi îmbunătățite în cadrul unui motor OCR pentru obținerea unor rezultate cu o acuratețe ridicată, însă cel mai important factor de care depinde întregul proces de recunoaștere este dat de calitatea imaginii de intrare. Acest lucru se observă și în Tabel 2, unde o preprocesare a imaginii cu scopul de a reduce zgomotul de fundal, dublează numărul de cuvinte recunoscute corect. Astfel că, preprocesarea imaginii devine o etapă esențială în cadrul procesului OCR, însă această prelucrare depinde foarte mult de natura zgomotului din imagine, neexistând un filtru general care să realizeze automat această operație.

Soluția este dată astfel de aplicare și combinarea unor filtre specifice pe imaginea de intrare, rezultând într-un număr de date de ieșire. Prin această operație se încearcă obținerea unui set de date ce au în componența lor diferite blocuri de text ce pot fi recunoscute relativ corect de procesul OCR. Prin comparația procentului de acuratețe a blocurilor de text similare, se reține cea mai bună variantă în vederea includerii în rezultatul final.

Probleme posibile

O imagine ideală, din punct de vedere al procesul de recunoaștere, are următoarele caracteristici: există un contrast puternic între fundal și text (cu alte cuvinte imaginea este binară), luminozitatea este distibuită omogen (nu există zone întunecate în care nu se poate distinge textul), zgomotul este inexistent, liniile de text sunt paralele cu axa Ox a imaginii (cu alte cuvinte documentul din imagine nu este înclinat), imaginea a fost scanată la o rezoluție de cel puțin 300 dpi.

Însă imagini de o astfel de calitate sunt greu de găsit și chiar improbabil să existe deoarece intervine procesul de învechire al documentului, sunt realizate copii după copii și de multe ori pot apărea sublinierii sau notițe pe marginile acestuia. Folosirea unor filtre va încerca să remedieze din defectele imaginii de intrare.

Aplicarea unui set de filtre specifice pe imaginea de intrare, comparația rezultatelor acestor preprocesări și alegerea rezultatului cu procentul de acuratețe mai mare reprezintă un sistem de votare, ce ar trebui să întoarcă un răspuns mai bun sau cel puțin la fel de bun față de o simplă trecere a imaginii printr-un motor OCR. Aceasta este una din modalitățile de votare posibile, iar cea de a doua abordare este reprezentată de combinarea rezultatelor date de procesarea aceleiași imagini de către mai multe motoare OCR, posibil variații de limbă și diferite dicționare.

Varierea datelor de intrare, cât și recunoașterea incompletă a textului de către un motor OCR, introduce o problemă majoră pentru realizarea corectă a unui sistem de votare. O votare corectă trebuie realizată între blocuri de text similare din diferite preprocesări. Neexistând un text de referință datorită faptului că fiecare preprocesare întoarce fragmente de text diferite, intercalate de goluri sau carcatere nerecunoscute, este imposibil de a realiza comparația între procentele de acuratețe pe baza fragmentelor de text întors de fiecare preprocesare.

Pentru a remedia această problemă există două abordări ce vor fi descrise în secțiunile de mai jos.

Descrierea soluției propuse

O soluție simplă este de a compara procentul de acuratețe al fiecărui rezultat parțial și de a-l promova pe cel cu acuratețea mai mare la rangul de rezultat final, ceea ce nu are rezultate foarte bune.

Problema este că pot exista doar anumite regiuni din imaginea de intrare care se comportă mai bine în urma aplicării unui anumit filtru, astfel că fiecare variație a datelor de intarea va întoarce câte un rezultat ce conține fragmente de text recunoscut intercalat cu goluri (text nerecunoscut). Cu alte cuvinte, fiecare astfel de variație a datelor de intrare va determina motorul OCR să întoarcă anumite blocuri de text complete și corecte, dar să omită câteva propoziții sau cuvinte deoarece acea zonă a datelor de intrare este mai întunecată, iar filtrul aplicat nu este potrivit pentru a remedia acest lucru. Astfel că este posibil ca nicio preprocesare să nu conțină textul complet, chiar dacă procentul de acuratețe este bun, ceea ce implică faptul că nici rezultatul final nu va conține acel text.

În orice caz, soluția de mai sus nu poate fi exclusă deoarece poate exista o preprocesare ce va încerca să medieze defectele celorlalte filtre aplicate și astfel vor fi întoarse rezultate mai bune decât simpla procesare a imaginii de intrare.

Oferirea unei granularități mai mici sistemului de votare, astfel încât acesta să aibă posibilitatea să considere regiuni mici din cadrul imaginii de intrare și să realizeze comparația procentelor de acuratețe pe baza similarității acestora reprezintă o soluție mai bună și de altfel un sistem viabil de votare. Astfel că soluția propusă are în vedere realizarea unui sistem de votare, bazat pe variația datelor de intrare (preprocesări ale imaginii), aplicarea procesului de recunoaștere pe fiecare astfel de variație, în urma căruia se vor obține un număr de rezultate parțiale și combinarea acestora într-o variantă finală, după procentul de acuratețe mai mare (votare între rezultate parțiale).

Variația datelor de intrare este reprezentată de folosirea unor filtre pentru imagine precum dilatare și eroziune de diferite forme și dimensiuni. Este realizată și o etapă de binarizare, alături de una de detecție și corectare a înclinației pentru a mai curăța din posibilele artefacte ce pot apărea în imagine.

Pentru a fi posibil procesul de alegere și implementarea unui sistem viabil de votare, este necesar să existe o bază comună pentru a determina între ce regiuni din imaginea de intrare să se facă votarea, deoarece niciun rezultat obținut în urma aplicării procesului de recunoaștere pe oricare dintre preprocesările imaginii de intrare nu poate fi considerat un text de referință și evident astfel nu pot fi realizate comparații .

Baza comună se va realiza prin determinarea unei măști alb-negru a imaginii de intrare, cu ajutorul căreia vor fi calculate coordonatele blocurile de text. Pentru realizarea unei astfel de măști se va folosi o metodă de binarizare și transformata Hough probabilistică.

Următoarea etapă este reprezentată de extragerea coordonatelor pentru fiecare regiune determinată. Aceste coordonate sunt trimise către motorul OCR pentru ca acesta să proceseze doar acea regiune, cu diferite filtre. Textul rezultat, alături de procentul de acuratețe întors vor fi stocate ca pereche text-valoare pentru a putea fi comparate în etapa următoare.

Ultima etapă este reprezentată de comparația și combinarea rezultatelor parțiale, ceea ce reprezintă de altfel și procesul de votare. În această etapă, se iterează prin toate rezultatele posibile, se alege cel ce are procentul de acuratețe mai mare și se poziționează în rezultatul final, pe baza măști determinate anterior.

Proiectarea arhitecturii

Generic, arhitectura aplicației este reprezentată în diagrama de mai jos (Fig. 4.1). În cadrul acestui subcapitol vor fi prezentate, la nivel structural și detaliat, modulele ce compun arhitectura aplicației, cât și operațiile din cadrul acestora.

Fig. 4.1 Modelul generic al sistemului de votare OCR

bazat pe variația imaginii de intrare

Datele de intrare

Datele de intrare vor fi reprezentate de imaginii digitale, colore sau în tonuri de gri ale unor documente scanate sau fotografiate, precum ziare, articole, cărți sau blocuri de text extrase din acestea. Scopul este de a oferi un set de date prin care să se observe comportamentul și diferitele etape ale procesului de votare. Deși formatul JPG are pierderi ale calității, acesta va fi cel folosit, pentru că este probabil cel mai răspândit în mediul digital.

De asemenea, pentru a simula condiții reale datorate învechirii documentelor sau a copierii repetate ale acestora, imaginile de intrare vor conține zgomot de fond, vor avea unghi de înclinație, iar gradul de luminozitate va avea o distribuire neomogenă. Ca procesul de recunoaștere să decurgă corect, se recomandă folosirea unor imagini de intrare cu o rezoluție de scanare de cel puțin 300 dpi, însă testele realizate vor considera imagini începând cu o rezoluție de 72 dpi, ceea ce este foarte posibil să se întâmple și-n cazuri reale.

Primul pas este reprezentat de citirea și încărcarea imaginii de intrare. Ca o simplificare, acesta va fi încărcată și în mod automat codificată în tonuri de gri. Urmează etapa de preprocesare în care se încearcă reducerea zgomotului de fond și se aplică diferite filtre pentru realizarea variațiilor datelor de intrare între care se va efectua votarea.

Modulul de preprocesare

Fig. 4.2 Modulul de preprocesare și componenetele sale

Modulul de preprocesare (Fig. 4.2) este prima etapă din cadrul sistemului de votare. În vederea obținerii unei calități potrivite ale datelor de intrare și pregătirea lor pentru procesul de recunoaștere, filtrele aplicate vor fi împărțite în două categorii.

Pe de o parte, o categorie de filtre este reprezentată de cele generale. Aplicarea acestor filtre constituie o etapă premergătoare celei de variere a datelor de intrare și are ca scop curățarea intrării și obținerea unui model de referință al paginii, pe baza căruia se vor aplica filtrele de variere și se va efectua comparația între procentele de acuratețe întoarse.

În această categorie intră binarizarea, un algoritm simplist de detecție și corecție a înclinării paginii și o etapă de construirea a unei măști alb-negru a imaginii de intrare ce va reprezenta practic șablonul după care se va efectua procesul de votare.

Metoda de binarizare folosită va fi una globală și anume, Otsu, deoarece valoarea pragului este optim determinată. În cadrul unui document scris, de regulă, obiectele sunt asemănătoare și grupate din punct de vedere al intensității culorii (fundal – text, culoare albă – culoare neagră) ceea ce reprezintă principiul pe care se bazează metoda aleasă și de altfel justifică alegerea făcută. Un alt argument pentru alegerea acestei metode este rapiditatea determinării pragului și transformării imaginii conform acestuia.

În urma acestei etape, imaginea obținută este una codificată alb-negru, cu un contrast puternic între grupurile de elemente din scenă. Deoarece imaginea poate conține documentul ușor înclinat datorită poziționării inexacte a acestuia în dispozitivul de scanare, este absolut necesară o etapă de detecție și corecție a înclinării (“deskew”). Mai mult decât atât corecția înclinării, nu numai că ușurează procesul de recunoaștere, dar și ajută mai departe în cadrul soluției propuse.

Pentru calcularea unghiului de înclinație al paginii este necesară detectarea liniilor de text din document. Datorită faptului că aceste linii urmează o traiectorie dreaptă, prin folosirea unei funcții matematice se poate determina gradul de înclinație al unei astfel de linii față de planul xOy al imaginii.

Detecția se va realiza folosind transformata Hough probabilistică datorită faptului că este o metodă optimă de recunoaștere a punctelor coliniare dintr-o imagine. De altfel, această metodă întoarce și coordonatele punctelor coliniare extreme din cadrul unei linii (coordonatele de început, respectiv sfârșit) ceea ce ajută la calcularea unghiului de înclinație.

Algoritmul este unul simplu și este implementat pe baza pașilor de mai jos:

binarizare folosind metoda Otsu

imaginea alb-negru este inversată (textul devine alb și fundalul negru)

se aplică transformata Hough probabilistică, ce detectează coordonatele punctelor extreme ale liniilor de text.

pe baza coordonatelor se calculează lungimea fiecărei linii de text, respectiv înălțimea

pentru fiecare linie se calculează unghiul de înclinație al acesteia folosind funcția arctg

pentru determinarea unghiului de înclinație al întregii imaginii, se calculează o medie ponderată în funcție de lungimea pe care o are fiecare linie.

ultimul pas este reprezentat de rotirea imaginii pe baza unghiului calculat.

În Fig. 4.2 este ilustrat un exemplu al pașilor pe care-i execută algoritmul în procesul de calculare al unghiului. Se observă cum documentul din imaginea inițială are o ușoară înclinație spre dreapta (lucru ce este posibil datorită poziționării inexacte a acestuia în dispozitivul de scanare). Cea de a doua imagine reprezintă un pas din algoritmul de detecție a înclinării și anume inversarea culorilor (etapă necesară pentru folosirea transformatei Hough). A treia imagine este rezultatul obținut în urma aplicării trasformatei Hough probabilistice (se observă cum un număr suficient de linii este detectat pentru a putea calcula unghiul de înclinație al paginii cu o acuratețe destul bună). De asemenea, ultima imagine arată corecția înclinării după unghiul determinat și se observă cum liniile de text devin paralele cu axa Ox a imaginii.

Fig. 4.3 Procesul de calculare al înclinației (stânga-dreapta):

imagine originală , imagine inversată, detectare linii, corectare înclinație pagină

După calcularea unghiului și rotirea imaginii conform acestuia se va construi o mască alb-negru. Aceasta reprezintă un șablon al blocurilor de text din cadrul documentului și ajută la comparația acestora între diferite preprocesări.

Datorită faptului că rezoluția imaginii nu se schimbă în cadrul varierii intrării, nici coordonatelor acestor blocuri nu se modifică. Astfel că se crează baza comună necesară sistemului de votare, ce va oferi atât posibilitatea de vota între regiuni ce se refer la același text, cât și granularitatea necesară pentru crearea unui sistem de votare viabil.

Cele două operații, corectarea înclinației și construirea șablonului, sunt strâns legate datorită faptului că detectarea blocurilor din cadrul șablonului pornește de la premisa că documentul din imagine nu este înclinat. În caz contrar, blocurile de text nu pot fi încadrate corect (în special, colțurile nu vor fi incluse în forma dreptunghiulară), iar trimiterea coordonatelor unui astfel de bloc către motorul OCR, va recunoaște doar cuvintele din centrul imaginii.

Construirea șablonului are la bază tot Hough probabilistic. În prima etapă se detectează liniile de text pe baza punctelor coliniare extreme. După extragere coordonatelor se desenează linii între acestea cu scopul de a obține un model al celor inițiale. Pentru ca șablonul să ia în cosiderare doar blocuri de text este necesară aplicarea unei transformări morfologice de dilatare pentru a îngroșa liniile desenate anterior, până când acestea se vor uni. Ultima etapă este reprezentată de extragerea coordonatelor regiunilor ce conțin blocuri de text.

Fig. 4.4 Exemplu de mască alb-negru (stânga-dreapta):

Imagine originală, mască imagine

Fig. 4.4 ilustrează o astfel de mască alb-negru. Se observă cum documentul a fost împărțit în trei regiuni. Numărul de regiuni depinde de la imagine la imagine și foarte important de spațierea dintre rânduri. Acest număr poate fi controlat printr-o serie de parametri aplicații fie transformatei Houg probabilistică, fie filtrului de dilatare. Spre exemplu, se poate considera ca bloc de text fiecare linie din cadrul imaginii, iar votarea să se facă între aceste linii, însă rezultateleunui motor OCR sunt mai bune dacă se consideră blocuri de text mai mari, datorită mecanismului de feedback pe care acesta îl are implementat (recunoaștere în doi pași).

Cea de a doua categorie de filtre de preprocesare este reprezentată de operațiile morfologice de dilatare, eroziune, cât și o combinare a lor (fie aplicarea unui filtru de eroziune, urmat de unul de dilatare, fie procedeul invers). Acestea au fost descrise în capitolul „Concepte de bază”. Pe scurt, imaginea fiind inversată (text alb-fundal negru), un filtru de dilatare va îngroșa caracterele din cadrul textului, eventual va realiza o uniune a lor, pe când un filtru de eroziune va subția caracterele și totodată va realiza o separație mai accentuată.

Aceste transformări morfologice vor realiza variația datelor de intrare. Astfel că după ce imaginea de intrare a trecut prin etapa de binarizare, de corectare a înclinației, cât și de construire a unui șablon, urmează aplicarea unui set de preprocesări distincte.

Elementul de structură va căpăta diferite forme, printre care dintre cele mai cunoscute stea, elipsă, dreptunghi și dimensiuni variate. Această dimensiune a elementului de structură nu va depăși un prag stabilit, spre exemplu 5, deoarece aplicarea unui astfel de filtru va modifica mult prea mult textul, devenind inutilizabil pentru procesul OCR (pagina este considerată a fi goală și procesul de recunoaștere nu are loc).

Motorul OCR

Soluția propusă este independentă de folosirea unui anumit motor OCR, tocmai de aceea acesta a fost reprezentat ca o cutie neagră (“blackbox”) în Fig. 4.1. Sistemul de votare trebuie văzut ca un nivel suplimentar de abstractizare ce încearcă să îmbunătățească rezultatul final, indiferent de motorul OCR folosit. Totuși ca un anumit motor OCR să poată fii integrat, acesta trebuie să respecte un grad de compatibilitate (să ofere operațiile de bază pentru realizarea interfeței cu celelalte module).

Acest modul poate fi considerat o interfață comună (“wrapper”) ce face legătura între modulul de preprocesare și cel de votare. Interfața comună poate include implementări pentru mai multe motoare OCR, dar interfețele de interconectare trebuie respectate prin realizarea unor legături și operații de bază precum:încărcarea imaginii de referință (este imaginea obținută după aplicarea filtrelor generale din modulul de preprocesare pe baza căruia se vor face variațiile), selectarea unor anumite regiuni din imagine în vederea procesării (blocurile de text din șablonul construit în modulul de preprocesare), oferirea rezultatelor către structurile specifice ale modulului de votare.

Astfel că oricare ar fi motorul OCR folosit, la interfața de intrare primește un număr de preprocesări (în funcție de transformările morfologice și combinațiile acestora stabilite preliminar) și întoarce același număr de rezultate multiplicat cu numărul de blocuri de text determinate în cadrul măștii alb-negru.

De asemenea, sistemul de votare se bazează pe procentul de acuratețe al textului întors și astfel este nevoie ca motorul OCR să fie capabil să calculeze un astfel de procent pentru fiecare regiune determinată în cadrul șablonului. De regulă, motoarele OCR calculează acest procent până la nivel de caracter, iar prin aplicarea unei medii aritmetice se poate calcula procentul de acuratețe al acestor zone.

Modulul de votare

Fig. 4.5 Procesul de votare

Operația realizată de acest modul este una foarte simplă. Acesta primește datele de la motorul OCR și le combină în vederea obținerii rezultatului final.

Datele primite sunt păstrate într-o structură asociativă, fiecare intrare fiind reprezentată de indexul unui bloc de text determinat anterior, în cadrul etapei de construire a șablonului din modulul de preprocesare. Numerotarea acestor blocuri de text se face de sus în jos, astfel că primul bloc are indexul 1. Acest index reprezintă de fapt calea către rezultatele procesului OCR în urma aplicării acestuia pe o anumită zonă din imagine și folosirea unei anumite preprocesări. De asemenea, totodată pentru fiecare rezultat al unei preprocesări este stocat și procentul de acuratețe.

Structura folosită simplifică semnificativ procesul de votare, prin faptul că rezultatele pentru toate preprocesările, dar pentru o singură regiune, se află stocate la un index unic, alături de procentele de acuratețe respective. De asemenea, această structură rezolvă și problema poziționării textului extras în cadrul rezultatului final deoarece, o simplă parcurgere în ordine a structurii va indica poziționarea fiecărui bloc de text.

Procesul de votare este reprezentat de parcurgerea fiecărei astfel de regiunii (fiecare index) și alegerea rezultatului parțial cu procentul de acuratețe maxim, în vederea includerii în rezultatul final. Deși șablonul unui document poate fi complicat, regiunile găsite vor cuprinde segmentarea orizontală și completă a paginii, astfel că este posibil ca rezultatul final să nu respecte formatarea textului original.

Implementare

În acestă secțiune va fi detaliată implementarea sistemului de votare, atât din punct de vedere al tehnologiilor folosite, cât și al structurilor și fluxului de date din cadrul aplicației. De altfel, vor fi prezentate anumite apeluri ale unor funcții ce realizează funcționalități importante.

Tehnologii folosite

Printre tehnologiile folosite în realizarea acestui sistem de votare se enumeră motorul OCR folosit, limbajul de programare și alte bibilioteci de procesare a imaginii. Deși în arhitectura aplicației se specifică independența sistemului de un anumit motor OCR, prin prezentarea modului în cauză ca fiind o interfață comună ce poate coține implementări pentru mai multe motoare OCR, s-a ales folosirea unui singur astfel de motor OCR și anume Tesseract 3.02.

Mai important decât alegerea unei tehnologii OCR este demonstrarea validității implementării unui astfel de sistem de votare, bazat pe varierea datelor de intrare, dezvoltări ulterioare putând avea loc cu ușurință.

Un argument pentru alegerea Tesseract 3.02, pe lângă faptul că este open-source, este acela că rezultatele întoarse au o acuratețe foarte bună. Studiul prezentat în capitolul „Metode de îmbunătățire a acurateței” susține acest lucru și de altfel demonstrează că rezultatele întoarse de Tesseract sunt comparabile cuale altor motoare OCR comerciale.

Arhitectura cât și etapele acestuia au fost descrise în capitolul „Concepte de bază” și nu vor mai fi reluate, însă este de menționat că dezvoltarea acestei tehnologii OCR, cât și nevoia de a realiza diferite procesări interne pe imaginea de intrare a dus la adoptarea unei biblioteci specializate pentru astfel de operații. Biblioteca de procesare a imaginilor folosită de Tesseract 3.02 este Leptonica 1.68, una open-source, cu ajutorul căruia sunt făcute toate procesările interne ale imaginii de intrare.

De asemenea, Tesseract oferă un API, în limbajul de programare C++, pentru dezvoltarea aplicațiilor bazate pe această tehnologie. Astfel că limbajul folosit este C++, nu numai că este compatibil cu API-ul folosit, ci și datorită faptului că este mai rapid ca alte limbaje de programare.

IDE-ul de dezvoltare folosit este Microsoft Visual Studio 2013 datorită faptului că depanarea în cadrul unui astfel de mediu este mult mai ușoară, iar abordarea problemei este una orientată pe obiecte.

Datorită faptului că sistemul de votare necesită variereaintrării, ceea ce constă de fapt în aplicarea unor diferite filtre de procesare a imaginii pe datele de intrare, s-a ales folosirea unei biblioteci externe pentru realizarea acestor operații și anume OpenCV 3.0. Biblioteca este compatibilă cu Tesseract, în sensul că o imagine încărcată și eventual prelucrată de aceasta poate fi oferită către interfața Tesseract, fără a realiza o altă etapă costisitoare de citire/scriere (“overhead I/O”).

Un alt motiv pentru care s-a ales OpenCV este acela că oferă o gamă largă de funcții de procesare a imaginii, printre care și cele necesare implementării soluției propuse, și o documentație corespunzătoare.

Diagramă aplicație

Din punct de vedere al implementării s-a ales o abordare orientată pe obiecte. Întreaga funcționalitate a aplicației este concentrată în cinci clase mari ce respectă arhitectura descrisă mai sus. Cele cinci clase sunt: OcrWrapper, ImageProcessingEngine, ImageProcessingSettings VotingEngine și Element. În cadrul acestei secțiuni, acestea vor fi descrise cu accent pe metodele importante din cadrul lor, a structurilor de date folosite, cât și aapelurilor de funcții din biblioteca OpenCV.

În Fig. 4.6, sunt reprezentate cele cinci clase și elemetele de interconectare dintre ele, alături de câteva metode importante.

Fig. 4.6 Diagramă aplicație

Aplicația nu dispune de o interfață grafică pentru că efortul depus s-a concentrat pe implementarea funcționalităților, demonstrarea și testarea unui sistem de votare OCR bazat pe variația intrării. Astfel că, interfața este una simplă, în linia de comandă (CLI), în care se specifică numele fișierului de intrare și locația acestuia, eventual calea și numele fișierului de ieșire (în caz contrar va fi determinat automat pe baza intrării).

Modulul de preprocesare descris în cadrul arhitecturii propuse este implementat în clasa ImageProcessingEngine. Fluxul datelor din cadrul aplicației are ca punct de pornire o instață a acestei clase, spre care se trimite locația și numele imaginii de intrare din linia de comandă. Pentru implementarea funcționalităților descrise în cadrul arhitecturii, s-au integrat funcții din biblioteca OpenCV. Spre exemplu, încărcarea imaginii și totodată codificarea ei în tonuri de gri se realizează cu ajutorul metodei readImage ce are la bază un apel către funcția imread din OpenCV, cu parametrul specific ce realizează codificarea în tonuri de gri, CV_LOAD_IMAGE_GRAYSCALE .

Etapa de binarizare face parte din implementarea mai multor funcționalități din cadrul acestei clase, printre care în cadrul algoritmului de detecție și corecție al unghiului documentului sau algoritmul de construire a șablonului pe baza căruia se va efectua procesul de alegere. Dintre metodele de binarizare prezentate în capitolul „Concepte de bază” s-a ales binarizarea globală folosind metoda Otsu deoarece aplicarea ei se va face în mod repetat, ca pas intermediar în implementarea funcționalităților enumerate mai sus, și astfel este nevoie de un timp de calcul redus pentru acest proces. De altfel, un alt avantaj al alegerii acestei metode îl reprezintă obținerea unor rezultate relativ bune pe imaginii ce conțin text.

În cadrul implementării, binarizarea este realizată de funcția applyThreshold ce reprezintă o interfață comună (“wrapper”) peste mai multe metode de binarizare implementate în cadrul bibliotecii OpenCV. Construirea acestei interfețe comune are ca scop oferirea unui mod facil de a realiza binarizarea, în vederea includerii unui astfel de filtru în procesul de variere a datelor de intrare. Metoda Otsu este implementată în OpenCV folosind funcția threshold cu parametrul CV_THRESH_OTSU.

Modulul de preprocesare cuprinde și o metodă de detectare și corectare a unghiului documentului din imaginea de intrare. Implementarea acestui algoritm este realizată în funcția deskew, și are la bază transformata Hough probabilistică prin care se detectează liniile de text din imagine. Ideea care a stat la baza implementări algoritmului de corecție este că într-un document ce nu are înclinație, liniile de text sunt paralele cu marginea de jos a acestuia (respectiv a imaginii). Cu alte cuvinte, dacă imaginea este considerată un plan xOy, pe baza înclinației liniilor de text și aplicarea unei funcții trigonometrice se poate calcula unghiul de înclinație al documentului.

imagine_inversata <- negare(imagine_binara);

vector linii <- hough_probabilistic(imagine_inversata);

unghi <- 0.0; pondere <- 0.0;

for (i <- 0; i < numar_linii; i++) do

y <- inaltime_linie(linii[i]);

x <- lungime_linie(linii[i]);

unghi <- unghi + arctg2(y, x) * x;

pondere <- pondere + x;

end

unghi <- unghi / pondere;

if unghi > eroare then roteste(imagine, unghi);

Listare 4.1 Pseudocod corectare înclinație

Pseudocodul din Listare 4.1 stă la baza implementării funcției deskew. Transformata Hough probabilistică are un set de parametrii pe baza cărora se detectează liniile din cadrul imaginii. Calcularea unghiului în funcție de acești parametri și a imaginii de intrare poate fi greșită, iar rotirea poate fi inutilă, în unele cazuri, astfel că se consideră o eroare setată preliminar pentru a împiedica acest lucru (spre exemplu, dacă unghiul determinat este mai mic de 0.2 grade nu se rotește imaginea).

În arhitectura aplicației a fost propusă o metodă de construire a șablonului unui document ceea ce nu este alteceva decât o etapă de segmentare în urma căreia se obține o mască alb-negru a imaginii. Această funcționalitate este implementată în funcția getBlueprint și are la bază același principiu ca și în cazul algoritmului de corectare a înclinație și anume transformata Hough probabilistică.

imagine_alb_negru <- binarizare_otsu(imagine);

imagine_inversata <- negare(imagine_alb_negru);

Vector linii <- hough_probabilistic(imagine_inversata);

for (i <- 0; i < numar_linii; i++) do

masca <- deseneaza_linie(punct_start, punct_stop);

end

masca <- dilatare(masca, numar_pasi);

vector_coordonate <- extrage_contur_regiuni(masca);

Listare 4.2 Pseudocod segmentare

Pseudocodul din Listare 4.2 stă la baza implementării funcție getBlueprint. Inițial sunt determinate coordonatele liniilor detectate (punctul de start, respectiv de oprire). Desenarea (funcția line din OpenCV) unei linii prin unirea acestor puncte reprezintă un pas intermediar în construcția măști. Prin aplicarea unei transformări morfologice de dilatare (funcția dilate în OpenCV), cu scopul de a extinde și unii zonele albe se obține un număr de regiuni cărora li se extrag coordonatele (findContours).

Filtrele care vor varia datele de intrare suntimplementate în funcțiile applyDilationFilter și applyErosionFilter ce iau în cosiderare construirea elementului de structură, după o anumită formă și dimensiune. Acestea au la bază apeluri către funcțiile erode și dilate din biblioteca OpenCV. În testare (Tabel 3), s-au folosit combinații ale celor două transformări, cu dimensiunea elementului de structură variată între 1 și 5, respectiv forme precum: elipsă, plus, pătrat. Combinarea acestora duce la eliminarea zgomotului, eventual la unirea sau împărțirea caracterelor ceea ce influențează procesul OCR.

Pentru o simplificare, cât și o generalizare a procesului de variere a parametrilor pentru filtrele de eroziune, respectiv dilatare, parametrii acestora, cât și operația în cauză au fost stocate în în structuri specifice în clasa ImageProcessingSettings. O astfel de stocare a parametrilor pentru o operație de acest gen poartă denumirea de configurație („setting”). Clasa poate fi extinsă la folosirea oricărui oricărui tip de filtru și are implementată pe lângă cele două și o operație de variere a metodei de binarizare.

Configurațiile acestea sunt stocate într-un vector ce va fi trimis de către modulul de preprocesare (o instanță a clasei ImageProcessingEngine) către modulul de votare, funcționalități ale căruia sunt implementate în clasa VotingEngine. Rolul acestui modul este de a face comparații între regiunile de același tip ale fiecărei preprocesări și alegerea celei cu acuratețea mai bună în vederea includerii în rezultatul final. De asemenea, acest modul este și elementul de legătură între modulul de preprocesare și motorul OCR, fluxul de date fiind puțin diferit de cel din arhitectura propusă.

În cadrul acestuia există două etape importante, prima reprezintă colectarea datelor de la cele două module și stocarea lor într-o structură asociativă de tip cheie-valoare, ce reține toate rezultatele posibilele ale filtrelor aplicate (vectorul allChoices). Cheia reprezentă indexul regiunii, iar valoarea un vector de dimensiunea numărului de preprocesări ce reține fiecare rezultat al acestora, obținut în urma rulării procesului OCR. Intrările din acest vector sunt de tip Element, iar structural sunt compuse din procentul de acuratețe calculat și textul extras de motorul OCR. Această funcționalitate este implementată în metoda Run.

Comunicarea claselor VotingEngine, respectiv ImageProcessingEngine este strâns legată, fiind necesară, pe lângă referința către vectorul de configurații ,obținerea coordonatelor regiunilor determinate în cadrul șablonului, cât și a numărului acestora. De asemenea, toate preprocesările (aplicarea filtrelor de diferite tipuri și dimensiuni) se fac în cadrul clasei ImageProcessingEngine, astfel că fiecare astfel de configurație este trimisă înapoi în această clasă pentru realizarea procesării respective.

O optimizare în implementarea aleasă este dată de realizarea etapei de procesare a imagini înainte de cea de selectare și trimitere a blocurilor către motorul OCR. Astfel că, mai întâi se trimite configurația către modulul de preprocesare în urma căruia se va obține imaginea procesată.Apoi, pentru fiecare regiune, se trimit coordonatele acesteia, alături de imaginea procesată, în vederea obținerii textului extras de motorul OCR (funcția getResultForThis).

Cea de a doua etapă este reprezentată de combinarea rezultatelor, realizată în funcția combineResults. Se iterează prin vectorul allChoices și se aplică o funcție de maxim pe procentele de acuratețe ale fiecărei regiuni, cele selectate fiind incluse în rezultatul final.

Procesul de votare se încheie cu scrierea rezultatului final pe disc, într-un fișier text în format TXT.

Rezultate

Pentru exemplificarea validității sistemului de votare, a fost realizată o etapă detestare și o analiză detaliată a rezultatelor obținute în urma procesului de votare. Testele realizate au în componență două exemple de pagini (Fig. 5.1, Fig. 5.4), cu diferite artefacte și unghi de înclinație. De asemenea, în vederea argumentării îmbunătățirii aduse în cadrul procesării OCR , se va face o comparație între o rulare simplă Tesseract și soluția propusă.

În cadrul aplicației dezvoltate, modulul Tesseractare setat parametrul de segmentare al paginii la valoarea 1 ce semnifică faptul că imaginea de intrare va fi segmentată automat. Pentru ca procesul de comparație să fie corect, acest parametru trebuie setat și în cadrul rulării independente a tehnologiei OCR. Tesseract are o intefață în linia de comanda (CLI) și astfel că setarea acestui parametru se va realiza la momentul rulării, ca în exemplul de mai jos:

tesseract imagine_intrare.jpg rezultat -psm 1

Listare 5.1 Rulare Tesseract din CLI

Metrica folosită pentru comparația rezultatelor va lua în considerare numărul de caractere corect recunoscute, și respectiv numărul de cuvinte.

Imaginiile ce compun testul 1 sunt reprezentate în Fig. 5.1.

Fig. 5.1 Imaginile de intrare pentru test_1 (stânga-dreapta)

test_1a, test_1b

Ambele imagini au o rezoluție de scanare de 300 dpi, cea de a doua fiind obținută din prima printr-o rotație de 5 grade spre dreapta. Imaginea „test_1a”, a fost extrasă din ziarul „The Washington Times” .

Calitatea imaginilor nu este potrivită pentru aplicarea unei tehnologii OCR, existând caractere mai îngroșate, de multe ori fiind unite între ele. De asemenea, fundalul nu este alb, ci mai degrabă un ton de gri ce se apropie de culoarea textului, ceea ce face grea sau aproape imposibilă rescunoașterea anumitor caractere.

Pentru realizarea comparație între textul de referință extras din imaginea „test_1a” și rezultatul final întors atât de Tesseract, cât și de metoda propusă, s-a folosit DiffChecker , un comparator de text online. Rezultatele obținute de rularea Tesseract sunt prezentate în Fig. 5.2.

Fig. 5.2 Comparație text referință – rezultat (stânga-dreapta):

text referință, rezultat rulare Tesseract pe test_1a

În Fig. 5.2, în partea stângă este afișat textul extras manual din imaginea de intrare spre a-l folosi ca referință în calcularea procentului de acuratețe. Textul din dreapta reprezintă rezultatul întors de Tesseract în urma aplicării acestuia pe imaginea de intrare. Regiunile cu roșu sau verde deschis conțin elemente ce sunt diferite, iar elementele ce au o culoare mai închisă reprezintă diferențele.

Fig. 5.3 Comparație text referință – rezultat (stânga-dreapta):

text referință, rezultat rulare metodă propusă pe test_1a

În Fig. 5.3, în partea dreaptă sunt afișate rezultatele obținute în urma rulării sistemului de votare cu varierea intrării. Textul de referință este același.

Regiunile rezultate în urma aplicării algoritmului de construire a șablonului au fost două: prima regiune detectată fiind titlul, respectiv cea de a doua reprezentată de restul textului. Astfel că votarea între preprocesările din Tabel 3 s-a făcut pe baza acestor regiuni. Setul de preprocesări folosite în cadrul procesului de votare, conține o serie de patru operații morfologice complexe, aplicate în ordine (mai întâi transformarea 1, urmată apoi de transformarea 2), având diferite dimensiuni și forme ale elementului structural.

S-a ales combinarea acestor operații deoarece astfel se poate reduce zgomotul de fundal, eventual reconstrui anumite caractere pentru a putea fi recunoscute. Tabel 3 prezintă filtrele folosite, alături de procentul de acuratețe pentru fiecare dintre cele două regiuni.

Tabel 3

Filtre folosite

Ultima coloană reprezintă procentul de acuratețe întors de Tesseract în urma procesării regiunii respective. În rezultatul final, pentru regiunea 1 este ales textul cu procentul 85.03 rezultat în urma aplicării preprocesării cu numărul 8, iar pentru regiunea 2 este ales textul rezultat în urma alicării preprocesării cu numărul 3.

Tabel 4 reprezintă o comparație între Tesseract 3.02 și metoda propusă ce are în prim-plan rezultatele prezentate în Fig. 5.2 și Fig. 5.3. Procentele de acuratețe sunt calculate manual prin numărarea caracterelor recunoscute greșit, respectiv a cuvintelor și realizarea procentajului pe baza numărului de cuvinte (89) și respectiv numărul de caractere (483) ale textului de referință.

Tabel 4

Comparație Tesseract – metoda propusă

Se observă că rezultatele întoarse de metoda propusă sunt, de regulă cu 4-5 % mai bune, ceea ce semnifică o îmbunătățire.

Imaginea de intrare pentru cel de-al doilea test („test_2”) este reprezentată în Fig. 5.4 (stânga). Datorită faptului că imaginea nu are zgomot de fond, au fost descoperite 8 regiuni (Fig. 5.4 dreapta).

Fig. 5.4 Imagine intrare pentru test_2 , șablon regiuni descoperite

Pentru a evidenția procesul de votare, în Tabel 5, este prezentată pentru fiecare regiune, preprocesarea care întoarce cel mai mare procent de acuratețe în urma aplicării procesului de recunoaștere. Preprocesările sunt cele din Tabel 3 prezentat mai sus, numai că nu a fost folosită aceeași dimensiune pentru elementul de structură în cadrul aplicării celor două operații.

Tabel 5

Preprocesările selectate pentru fiecare regiune

Se observă cum preprocesările nu produc imaginii foarte diferite față de imaginea originală, caracterele fiind puțin mai îngroșate, respectiv mai subțiate ceea ce influențează considerabil rezultatul dat de tehnologia OCR.

În Fig. 5.5, este prezentat rezultatul (dreapta) rulării motorului Tesseract pe imaginea din din test_2. Textul extras manual este prezentat în partea stângă și folosit ca referință în procesul de comparație. Se observă că un număr considerabil de cuvinte nu sunt recunoscute corect.

Fig. 5.5 Comparație text referință – rezultat (stânga-dreapta):

text referință, rezultat rulare Tesseract pe test_2

În Fig. 5.6, este prezentat rezultatul metodei propuse. Se observă că în comparație cu rezultatul rulării independente a motorului Tesseract, rezultatele sunt mai bune, existând un număr redus de cuvinte sau caractere ce nu au putut fi recunoscute.

Fig. 5.6 Comparație text referință – rezultat (stânga-dreapta):

text referință, rezultat rulare metodă propusă pe test_2

Tabelul de mai jos, prezintă procentual acuratețea la nivel de caractere, respective cuvinte, calculate manual. Textul de referință conține 49 de cuvinte și 232 de caractere.

Tabel 6

Comparație Tesseract – metoda propusă

Testele efectuate și rezultatele obținute demonstrează că implementarea acestui sistem de votare OCR bazat pe varierea datelor de intrare, prin folosirea unor filtre de procesare a imaginii precum eroziune sau dilatare, îmbunătățește rezultatele întoarse de procesul de recunoaștere.

Concluzii

Odată cu dezvoltarea tehnologiei, arhivarea și stocarea diferitelor cărți și publicații în format electronic a devenit o necesitate. Printre avantajele stocării unui document fizic în format electronic se enumeră: posibilitatea de a crea copii multiple de sigurață, căutare facilă și eficientă, accesibilitate permanentă și poate cel mai important lucru conservarea acestor documente fără alte urme de deteriorare.

Procesul de transformare al documentelor fizice începe cu etapa de introducere a lor în calculator prin intermediul unor dispozitve specifice, rezultatul fiind o imaginea digitală. De extragerea informației din acea imagine se ocupă un proces specializat în recunoaștera textului și anume o tehnologie OCR, însă acuratețea rezultatelor poate fi slabă datorită calității nepotrivite a imaginii de intrare.

Obiectivul acestei lucrării a fost de a demonstra viabilitatea unei metode de îmbunătățire a acurateței acestor rezultate prin proiectarea și implementarea unui sistem de votare OCR bazat pe varierea datelor de intrare folosind un set de filtre de procesare a imaginii. Filtrele folosite au la bază doar transformării morfologice, alături de o metodă globală de binarizare. S-au încercat diferite combinații ale acestora, după dimensiune, formă, cât și operația aplicată (eroziune, dilatare) în urma cărora s-au obținut rezultate cu un procent de acuratețe cu 4-5 % mai bun .

Rezultatele obținute în cadrul testării aplicației demonstrează că implementarea acestei metode îmbunățește recunoașterea textului, chiar dacă procesarea durează mai mult. Cu alte cuvinte, scopul acestei lucrări a fost atins.

În timpul testării aplicației s-a observat că procesul OCR durează foarte mult pentru o imagine ce conține un document cu șablon complex (ziar). Cauza principală este reprezentată de faptul că imaginea de intrare ocupă foarte mult spațiu, îngreunând astfel încărcarea și manevrarea ei în cadrul structurilor interne. Astfel că implementarea curentă nu este eficientă dacă se folosesc imagini de dimenisiuni mari, deoarece aplicarea unor preprocesări cu scopul de a varia datele de intrare va crește timpul de rulare direct proporțional cu numărul acestora.

În concluzie, sistemul de votare implementat poate fi folosit pentru îmbunătățirea acurateței rezultatelor obținute în urma procesului de recunoaștere.

Demersuri viitoare

Implementarea acestui sistem poate fi folosită în vederea obținerii unor rezultate mai bune în cadrul procesării OCR, atât ca o variantă alternativă, cât și ca una combinată cu alte tehnici de preprocesare, respectiv postprocesare. Având în vedere că rezultatele întoarse sunt mai bune ca în cadrul folosirii ca atare a unei tehnologii OCR, o soluție care ar putea crește numărul de cuvinte recunoscute corect ar fi includerea unui metode bazate pe dicționare.

De altfel, pentru optimizarea și realizarea eficientă a unui număr cât mai mare de preprocesări trebuie luată în considerare proiectarea unei arhitecturi paralele. Timpul de realizare a unei preprocesări, cât și a etapelor intermediare (corectarea înclinării, construirea șablonului), urmată apoi de procesare OCR, depinde foarte mult de mărimea imaginii de intrare.

O altă abordare care poate fi luată în considerare este implementarea unui sistem de votare între două sau mai multe tehnologii OCR existente. Fiecare astfel de tehnologie va avea asociată empiric o notă care spune cât de bună este față de celelalte. Combinând această notă cu procentul de acuratețe întors de motorul OCR pentru o anumită intrare, se poate alege varianta care este mai bună.

Bibliografie

Similar Posts