OCR V1.0 - Program za prepoznavanje cirilicnih slova

Autor: Velibor Ilić

Kratak opis: Program za prepoznavanje ćiriličnih slova. Za prepoznavanje slova program koristi neuronske mreže sa backpropagation algoritmom obučavanja. Program je rađen kao prateći materijal za magistarski rad "Obučavanje neuronskih mreža za prepoznavanje ćiriličnih slova".

Abstract: Program OCR is used for recognition Cyrillic letters. OCR is based on the backpropagation neural networks. OCR is developed as addition to masters thesis "Training neural networks for recognition Cyrillic letters".

Programski jezik: Delphi 5

Operativni sistem: Windows 95, 98, NT

Datum izrade: © Avgust, 1999

Download!!! OCR V1.1 (OCR.ZIP 356Kb)
https://www.dropbox.com/s/khaoep8ukteecuz/OCR.ZIP?dl=0


      Velibor Ilic

Sadržaj
Hardverski zahtevi
Softverski zahtevi
Opis programa
Konfiguracija neuronske mreže
Primene programa za prepoznavanje teksta

Hardverski zahtevi
Minimalna hardverska konfiguracija potrebna za korišćenje programa za prepoznavanja teksta:
  • PC računar baziran na procesoru klase Intel Pentium 100 ili jačem,
  • najmanje 16 megabajta RAM memorije,
  • floppy disk jedinica od 3,5" ili 5,25" inča,
  • hard disk sa oko 5 MB slobodnog prostora (program za prepoznavanje teksta zauzima 1.5 MB prostora na hard disku, a ostali prostor je potreban za smeštanje slika koje se obrađuju).
Softverski zahtevi
Program zahteva da na računaru bude instaliran operativni sistem Microsoft Windows 95 ili noviji.

Opis programa
Program OCR je namenjen prepoznavanju ćiriličnih slova iz slika u bitmap formatu. Ova verzija programa nije za komercijalnu upotrebu. Program je rađen kao prateći materijal magistarskog rada "Obučavanje neuronskih mreža za prepoznavanje ćiriličnih slova". Program je razvijan u programskom jeziku Delphi 4 ali je naknadno kompajliranje izvršeno u programskom jeziku Delphi 5. Prepoznavanje slova vrši neuronska mreža sa backpropagation algoritmom obučavanja.

Program algoritamskim metodama određuje granice pojedinih slova, slike pojedinačnih slova se propuštaju korz neuronsku mrežu koja vrši identifikaciju slova.

NAČIN RADA PROGRAMA

  • Učitavanje slike predstavlja prvi korak u algoritmu prepoznavanja. Sa diska se učitava unapred pripremljena slika u bitmap formatu.
  • Izdvajanje slova iz slike – da bi mogli da prepoznamo slovo, moramo ga izdvojiti od ostatka slike. Slova se izdvajaju jedno po jedno, odgovarajućim redosledom (sleva na desno i od gore prema dole), na isti način kao što to čini čovek koji čita tekst. Izdvajanje slova iz slike je podeljeno u dve operacije.
  • Traženje naredne tačke. Ova procedura analizira sliku i pronalazi koordinate tačke koja pripada sledećem slovu. Za prvo slovo procedura počinje pretragu iz gornjeg levog ugla slike (0,0); za svako sledeće slovo procedura počinje pretragu iz gornjeg desnog ugla poslednjeg prepoznatog slova. Kada se dođe do slova koje se nalazi na kraju reda, očitava se donja koordinata poslednjeg slova Y2 i pretraživanje počinje iz koordinate (0,Y2+1).
  • Određivanje najmanjeg pravougaonika u kome se nalazi celo slovo: da bi smo mogli izdvojiti pojedinačna slova iz skenirane slike, potrebno je utvrditi koje sve tačke pripadaju datom slovu. Kada se prethodnom procedurom dobiju koordinate jedne od tačaka koja pripadaju sledećem slovu, potrebno je odrediti koji je najmanji pravougaonik koji obuhvata sve tačke datog slova. U ovom programu se najmanji pravougaonik određuje metodom koncentričnih krugova. Oko nađene tačke se ispituju tačke koje okružuju nađenu tačku. Zatim se krugovi povećavaju dok se ne dobiju prazne linije sa sve četiri strane. Ova metoda se može primeniti ako su sva slova iz “jednog dela” tj nemaju apostrofe kao latinična slova (Š, Č, Ć, Ž). Jedan od mogućih načina izdvajanja slova je da “obilazimo” oko nađene tačke slova, sve dok ne dođemo u situaciju da se sa sve četiri strane nalaze neobojene tačke.
  • Nedostatak ove metode je što nije efikasna, ukoliko se primenjuje na simbolima koja sadrže apostrofe, kao što je slučaj sa latiničnim slovima. Takođe, ova metoda ne može da razdvoji slepljena slova a problemi se mogu javiti i kod ukošenih slova.
  • Skaliranje se vrši da bi program bio nezavisan od veličine slova. Skaliranjem se sva slova, bez obzira na veličinu, svode na matricu 12x12 kakva je korišćena prilikom obučavanja NM.
  • Dovođenjem slova standardne veličine na ulaz neuronske mreže, na izlazu se dobija trideset realnih brojeva u intervalu [0,1] koji predstavljaju verovatnoću slova sa ulaza. Odabira se slovo sa najvećom verovatnoćom. Ukoliko je slovo na ulazu korektno prepoznato, na izlazu bi trebalo da se pojavi niz od dvadeset devet brojeva približnih nuli i jedan broj približan jedinici sa odgovarajućom tolerancijom greške. Njegova pozicija predstavlja redni broj slova u azbuci.
  • U sledećem koraku se ispituje da li je verovatnoća slova veća od granice tolerancije. Ukoliko jeste, slovo se dodaje prepoznatim slovima, a ukoliko nije pojavljuje se ekran na kome se prikazuje problematično slovi i omogućava korisniku da ručno upiše “problematično” slovo, koje se zatim pridružuje ostalim prepoznatim slovima.
  • Postupak se ponavlja sve dok se ne dođe do poslednjeg slova na slici.
Prvobitno je zamišljeno da se izdvojeno slovo posle skaliranja stanji (pre propuštanja kroz NM), da sve linije slova budu debljine od jednog piksela, ali se kasnije odustalo od primene procedure stanjivanja, jer se stanjivanjem gubi važan deo informacija koje je slovo nosilo pre stanjivanja slike.

Program dozvoljava promenu praga osetljivosti na greške prilikom prepoznavanja teksta. Inicijalna vrednost je 0.50, ali se osetljivost na greške može menjati u intervalu od 0.30 do 0.90. Ukoliko je vrednost ovog parametra veća, program će tačnije prepoznavati slova, ali će zato češće prijavljivati “problematična” slova.

Ukoliko program prilikom prepoznavanja teksta naiđe na slovo kod koga je verovatnoća slova manja od željene, prepoznavanje se zaustavlja i pojavljuje se ekran na kome korisnik može ručno uneti “problematično” slovo. Program u gornjem desnom uglu prikazuje uvećanu sliku problematičnog slova i predlaže slovo sa najvećom verovatnoćom. Verovatnoću predloženog slova možemo videti u gornjem desnom uglu ekrana. Slovo koje program predloži veće je od ostalih slova koja se nalaze na prikazanim tasterima u levoj polovini ekrana. Ukoliko je program dobro pretpostavio slovo, dovoljno je pritisnuti dugme Ok i program će slovo ubaciti u prepoznati tekst, a zatim nastaviti sa prepoznavanjem. Ukoliko je program pogrešno prepoznao slovo, korisnik može pomoću miša da odabere to “problematično” slovo. Ako korisnik želi, može “problematično” slovo da memoriše i kasnije da pokrene program za obučavanje. Nakon obučavanja, mreža će uspešno prepoznavati i takva slova. U desnom delu ekrana, ispod slike se nalazi polje u kome se prikazuje poslednji red prepoznatog teksta da bi korisnik mogao lakše identifikovati slovo u zavisnosti od prethodnih slova.

Najčešći razlog zbog čega program zaustavlja prepoznavanje je ukoliko naiđe na spojena slova. Takva “slova” program ne može da obradi pošto je predviđena obrada samo pojedinačnih slova. Takva “slova” se lako uočavaju prilikom prepoznavanja jer imaju malu verovatnoću. U tom slučaju je potrebno iz leve polovine prozora mišem odabrati oba slova koja su prikazana u gornjem desnom delu ekrana.

Prepoznati tekst možemo memorisati na disku odabiranjem opcije Snimi. Nakon odabiranja opcije Snimi, pojavljuje se dijalog polje prikazano. U polje se upisuje ime fajla pod kojim želimo da tekst snimimo na disk.

Konfiguracija neuronske mreže
Program ANN je upotrebljen za obučavanje neuronske mreže koja se koristi u programu za prepoznavanje ćiriličnih slova (OCR).

Troslojna neuronska mreža sa backpropagation algoritmom obučavanja.
Broj neurona na ulaznom sloju (broj ulaza): 12x12 = 144
Broj neurona na srednjem sloju: 35
Broj neurona na izlaznom sloju (broj izlaza): 30
Broj primera kojima se mreža obučava: 1590 (30 slova u više varijanti)

Obučavanje je vršeno na trening skupu od 1590 slova. Da bi se dobio toliko veliki skup ulazno-izlaznih podataka, napisan je program koji automatski izdvaja slovo po slovo sa slike i pravi fajlove u odgovarajućem formatu za obučavanje mreže. Za obučavanje ove mreže korišćeni su fontovi: Arial, Times New Roman i Courier New. Slova su pisana u oblicima normalno (Normal), ukošeno (Italic), i podebljano (Bold). Takođe su upotrebljene tri veličine fonta koje su zatim skaliranjem svedene na veličinu 12x12. Za sve tipove slova su korišćena velika i mala slova.

Pri obučavanju su upotrebljene metode obučavanja Random i Force learn.

Vreme potrebno za obučavanje mreže iznosi 02:12:53 sati bez prekida na računaru Celeron 333. Da bi se mreža obučila, bilo je potrebno 667 iteracija. Maksimalna greška je iznosila 0.098874 a prosečna greška je iznosila 0.00573.

Primena programa za prepoznavanje teksta
Programi za prepoznavanje teksta su značajni iz razloga što postoji veliki broj tekstova (informacija, znanja) koji su zapisani na papiru (knjige, poslovni dokumenti, fakture, priznanice, računi, itd.). Prebacivanje ovih informacija u digitalni oblik zahteva veliki ljudski rad. Prebacivanjem informacija koje su zapisane na papiru u digitalni oblik, ostvarujemo brojne prednosti kao na primer:
  • lako pretraživanje podataka,
  • lako umnožavanje,
  • lako prenošenje,
  • jednostavnu modifikaciju,
  • uštedu prostora (na malom prostoru se mogu smestiti velike količine informacija),
  • računske operacije nad podacima (ukoliko su u pitanju brojčane vrednosti).
Današnji programi za prepoznavanje teksta, iako imaju visoku tačnost prilikom prepoznavanja teksta (preko 99%), još uvek ne mogu da garantuju 100% sigurnost prilikom konvertovanja informacija. Kada se postigne veća sigurnost konvertovane informacije, programi za prepoznavanje teksta će naći brojne primene u privredi i svakodnevnom životu.

Download!!! OCR V1.1 (OCR.ZIP 356Kb)
https://www.dropbox.com/s/khaoep8ukteecuz/OCR.ZIP?dl=0