gocr training

A dolog úgy ezdődött, hogy írtam mgamnak egy képernyőolvasó programot. Sőt, hogy ne kispályázzunk, rögtön kettőt is. A teljes források itt találhatóak:

if [ `ps aux | grep espeak | wc -l` -gt 1 ];then killall -9 espeak; else
xclip -o | espeak -k 200 -v hu;
fi
... ez a vágólap tartalmát olvassa fel, vagyis a legutóbb kijelölt szöveget... az űő betűkkel gondja van.

import /tmp/out.png;
gocr -v 0 -m 0 -e - -f UTF8 /tmp/out.png | espeak -v hu

..emez meg az egérrel kijelölt részen futtat karakterfelismerőt. ebből kifolyólag eredménye sokkal viccesebb, mint amennyire használható.

Ebből kifolyólag utánanéztem, lehet-e tanítani a gocr-t? Lehet. Ha a -m kapcsoló értéke 130, akkor rákérdez a fel nem ismert karakterre.
Természetesen az ember nem ül le szeretett gocr-ével, hogy no akkor most tanuljunk együtt, inkább csak úgy ötletszerűen, így ezt is beleírtam egy kis egysorosba:

import /tmp/out.pnm; urxvt -e gocr -m 130 -p ~/.db/ /tmp/out.pnm

Mindhárom egysoros billentyűkombóhoz van rendelve. Ócsó kockajáték:)

Hozzászólások

Én ocrad-ot "használok", az sokkal jobb eredménnyel ismeri fel a betűket. Amúgy nem használom, csak egyszer ráértem, és kooka ocr képességeit tesztelgettem. És az kezeli gocr-t, ocrad-ot, és kadmos-t is.

Az a furcsa, hogy ha átpipeolom az espeak-nek a kimenetet, rendszerint jobb eredményt kapok gocr-rel, de egyébként ocrad...
Az oldalstílust letiltottam, úgy olvastattam el a két motorral a fenti hozzászólásodat:

ocrad:
En ocrad-ot ''ha_Ináloh'', aI _ohhallobb
eredménnyel |_merl _el a bet_het Am_gy nem
ha_Inálom, c_ah egy_Ier ráértem, é_ hooha ocr
hépe__égelt te_Itelgettem E_ aI heIell gocr-t,
ocrad-ot, é_ hadmo_-t |_

gocr:
Ern ucr:3d-ut ''tn:3s2rn:iIuk''. :32 sukk:3I ,Juhh
eredIoornrnyeI IsIooerI feI :3 hetiiket. 6IooiIc,3y rneIoo
tn:3s2rn:iIuIoo. cs:3k ec,3ys2er r:irteIoo. s kuuk:3 ucr
ktpessc,3eIt tes2teIc,3etteIoo Es :32 ke2eII c,3ucr-t.
ucr!3d-ut. s k!3dIoous-t Is.

Ėn ocrad-ot''hasznȧIoh'',azsohhaIjobb
eredmėnnyeIismerifeIa betũhet.Amugynem
hasznȧIom,csahegyszerrȧėrtem,ėshoohaocr
hėpessėgeitteszteIgettem. Ės az hezeIigocr-t,
ocrad-ot, ės had m os-tis.

Ez utóbbi szimpatikusabb, de normális ékezetek ebben sincsenek. Ez utóbbihoz felhasználta már azt is, amit tanítottam neki...

Mindezek ellenére ha a gocr kimenetét rögtön espeaknek küldöm, viszonylag normálisan felolvassa, egyedül az "l" betűket olvassa rendre j-nek (bár mint látszik, rendszerint I-ként értelmezi), illetve rossz ékezeteket választ. (most oldottam meg jobb híján egy halom regexppel)

int getRandomNumber() {
return 4;    //szabályos kockadobással választva.
           //garantáltan véletlenszerű.
}          //xkcd