1 i2 ii3 ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce Studentova berli ka IV - Modul pro rozpoznávání...
eské vysoké u£ení technické v Praze Fakulta elektrotechnická Katedra po£íta£·
Bakalá°ská práce
Studentova berli£ka IV - Modul pro rozpoznávání identikátor· digitalizovaných test·
Zden¥k Pecka
Vedoucí práce:
Ing. Ji°í Chludil
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Softwarové inºenýrství
23. kv¥tna 2011
iv
v
Pod¥kování Cht¥l bych pod¥kovat p°edev²ím svým rodi£·m, kte°í m¥ podporují nejenom p°i studiu. Dal²í velké díky pat°í vedoucímu mé práce Ing. Ji°ímu Chludilovi za cenné rady p°i pravidelných konzultacích.
vi
vii
Prohlá²ení Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené v p°iloºeném seznamu. Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu 60 Zákona £. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých zákon· (autorský zákon).
Abstract The aim of this work is to design and implement a system that assigns a digitized test for a particular student. Part of the work is to design and test a suitable method for the test and the student identication. Emphasis is also placed on close cooperation with the test generator and application on the test correction.
Abstrakt Cílem této práce je navrhnout a implementovat systém, který p°i°adí digitalizovaný test ke konkrétnímu studentovi. Sou£ástí práce je návrh a otestování vhodného zp·sobu identikace testu a studenta. D·raz je také kladen na úzkou spolupráci s generátorem test· a aplikací na opravování test·.
Ukázka identikátor· test· a jejich úsp¥²nost £tení
. . . . . . . . . . . . . . .
40
6.6
Výsledky lokalizace kalibra£ních zna£ek
. . . . . . . . . . . . . . . . . . . . .
41
xvii
xviii
SEZNAM TABULEK
Kapitola 1
Úvod P°i studiu na ²kole, a´ uº se jedná o základní, st°ední nebo vysokou, jde na²im u£itel·m p°edev²ím o p°edání svých znalostí a zku²eností. Vyvstává zde v²ak otázka, jak se p°esv¥d£it o tom, zda studenti probíranou látku pochopili. Jedním ze zp·sob·, jak ov¥°it nabyté znalosti je psaní test·, coº je na vysokých ²kolách velice £asté. Tém¥° kaºdý p°edm¥t má r·zné frekvence psaní test·. V n¥kterých se testy pí²í kaºdou hodinu, v jiných se p°ipraví pouze jeden test, který shrnuje ve²kerou probranou látku. V kaºdém p°ípad¥ pro u£itele nastává nelehký úkol, sestavit testy. Sestavit jeden test není je²t¥ tak náro£né, ale pokud se musí vytvo°it více verzí testu, které by bylo moºno vyuºívat v obm¥¬ované form¥ po dobu n¥kolika let, to jiº bývá o°í²ek. P°ipravením testu v²ak pro u£itele práce nekon£í. Ten £asov¥ nejnáro£n¥j²í úkol nastává teprve po vypln¥ní test·. Po sebrání test· od student· musí u£itelé v²echny testy opravit a informovat studenty o jejich výsledcích. Není divu, ºe si cht¥jí vyu£ující tento rituál usnadnit.
1.1 Zku²enosti s psaním test· na VUT Za své t°íleté p·sobení na VUT jsem se setkal s r·znými zp·soby psaní test·. Ve v¥t²in¥ p°ípad· se jednalo o klasické papírové testy. Takovéto testy byly vytvá°eny pokaºdé zvlá²´ samotnými vyu£ujícími. Po napsání test· je kanto°i opravili a na n¥které následující hodin¥ nám oznámili výsledky. Mezi výhody t¥chto test· pat°í velká variabilita typ· odpov¥dí. Nej£ast¥j²í jsou slovní odpov¥di, ale nejsou vylou£eny ani za²krtávací odpov¥di, nebo p°i°azování odpov¥dí. Nevýhody tohoto typu testu vidím p°edev²ím v náro£nosti sestavení a následného opravení testu, p°i kterém nám nepomáhá ºádný systém. Dal²ím typem test·, které se hojn¥ pouºívají, jsou online testy. Tyto testy se pí²í na po£íta£i a kaºdému studentovi je zp°ístupn¥n test. Tyto testy bývají v¥t²inou náhodn¥ generovány z mnoºiny p°edem p°ipravených otázek. To do jisté míry m·ºe zaru£it, ºe kaºdý student bude mít jedine£ný test. Online testování v¥t²inou nabízí i moºnost automatického vyhodnocení testu. To je výhodné jak pro u£itele, nemusí trávit hodiny nad opravováním test·, tak i pro studenta, nebo´ se mu ihned zobrazí dosaºené skóre. Mezi výhody online test· jist¥ pat°í automatické generování a opravování test·. Nevýhod je hned n¥kolik. Musíme zajistit p°ístup v²em student·m k po£íta£·m a dohlédnout, aby nepouºívali nedovolené pom·cky. Pokud
1
2
KAPITOLA 1. ÚVOD
chceme pouºít automatické opravování, máme pouze omezenou paletu typ· odpov¥dí. V¥t²inou to jsou za²krtávací odpov¥di, nebo p°i°azování. Tyto typy odpov¥dí ale nejsou vhodné pro v²echny p°edm¥ty. Pokud zvolíme otázku se slovní odpov¥dí, z°íkáme se automatického opravení testu. Do zvlá²tní kategorie bych za°adil online systémy v p°edm¥tech zam¥°ených na pro-
1
gramování. Setkal jsem se se systémem ProgTest , který je specializován na odevzdávání programátorských úloh. V tomto p°ípad¥ v²e funguje automaticky. Systém zkontroluje syntaktickou správnost programu, p°eloºí ho a spustí. V systému je vloºené referentské °e²ení, podle kterého je zkontrolován výstup programu. Student hned vidí, zda v úloze usp¥l, nebo jestli se má snaºit dál.
1.2 Systémy pro správu test· Je z°ejmé, ºe proces testování není jednoduchý, a proto vznikla °ada systém·, které se jej snaºí zjednodu²it. V n¥kolika následujících odstavcích se podíváme na zajímavé projekty, které pro podporu testování vznikly.
1.2.1 Moodle Moodle (Modular Object-Oriented Dynamic Learning Environment) [24][2] je velice oblíbený open-source systém pro podporu výuky. Od svého vzniku, u kterého stál Martin Dougiamas, si Moodle získal oblibu po celém sv¥t¥. Moodle je napsaný v programovacím jazyce PHP a podporuje °adu databází, p°edev²ím PostgreSQL a MySQL. Umoº¬uje komplexní správu e-learningových kurz· a je pouºíván °adou £eských univerzit (stránky Moodlu VUT jsou https://ocw.cvut.cz/). Moodle umoº¬uje publikovat studijní materiály, vytvá°et diskusní fóra, ankety, zadávat úkoly jednotlivým student·m a mnoho dal²ího. D·leºitou sou£ástí je moºnost generovat online testy. Test·m se dá nastavovat mnoho moºností (za£átek testu, konec testu, po£et opakování, omezení p°ístupu podle IP adresy, . . . ). Je také podporováno automatické vyhodnocování test·. Moodle se dá roz²i°ovat pomocí modul·. Velké mnoºství modul· je voln¥ ke staºení
2
z ociálních stránek Moodlu . Pokud zde nenajdete hledaný modul, je moºné si jej vlastními silami naprogramovat.
1.2.2 MS Class Server MS Class Server [13][3] pochází z dílny Microsoftu. Jedná se o komer£ní °e²ení pro podporu výuky. MS Class Server je primárn¥ ur£en pro základní a st°ední ²koly, ale po drobných úpravách je pouºitelný i na univerzitách (p°íkladem m·ºe být instalace na VUT na adrese https://www.lg.cvut.cz/). MS Class Server nabízí ucelené °e²ení pro podporu výuky. Dovoluje u£itel·m publikovat elektronické materiály, zadávat úkoly, evidovat studijní výsledky, nebo p°ipravovat testy. 1
https://www.progtest.cz/
2
http://moodle.org
1.2. SYSTÉMY PRO SPRÁVU TEST
3
Výhodou MS Class Serveru je moºnost pracovat oine, kdy p°i op¥tovném p°ipojení k internetu, se provedené zm¥ny synchronizují. Pon¥kud sloºité je generování test·, nebo´ MS Class Server nedisponuje centrální databází otázek, a tudíº nepodporuje automatické generování test·.
1.2.3 Studentova berli£ka Studentova berli£ka je systém na podporu výuky, jehoº historie se za£ala psát v zimním semestru roku 2005/2006. Ze za£átku se jednalo pouze o jednoduchý webov¥ orientovaný systém na podporu jediného p°edm¥tu Datové struktury a algoritmy, který implementoval Ji°í Hunka [17]. My²lenka byla prostá. Sjednotit místo, odkud by studenti dostali informace o p°edm¥tu, a zp°ístupnit student·m pr·b¥ºné výsledky z test·. Od té doby je systém pod neustálým vývojem, který roz²i°uje jeho moºnosti. V akademickém roce 2008/2009 byla zm¥n¥na hlavní koncepce celého systému a bylo rozhodnuto, ºe Studentova berli£ka bude postavena modulárn¥. V souvislosti s touto zm¥nou bylo zahájeno n¥kolik projekt·. Jmenoval bych nap°íklad práce Ji°ího And¥la [11], který se zabýval generátorem test·, nebo práce Petra Kotka [18], který se zam¥°il na problematiku automatického vyhodnocování test·. V akademickém roce 2009/2010 navázal na práci Ji°ího And¥la Franti²ek Kraml [19], který vytvo°il sostikovaný a pln¥ funk£ní generátor test·. Generátor test· umoº¬uje vytvá°et testy podle r·zných kritérií s r·zným typem odpov¥dí. Je také podporován mechanizmus schvalování testových otázek mezi n¥kolika cvi£ícími. Tato problematika je podrobn¥ji popsána v bakalá°ské práci Franti²ka Kramla [19]. Sou£asn¥ s mou prací vzniká bakalá°ská práce Luká²e Hna´uka, který se zabývá zjednodu²ením a zefektivn¥ním procesu opravování test·. Jeho aplikace je ur£ená pro elektronické opravování test·. Tím odpadá cvi£ícím nutnost nosit s sebou ²tosy vytisknutých test·. Dal²í výhodou této aplikace je moºnost opravovat jednu otázku zárove¬ od v²ech student·, coº zvy²uje efektivnost opravování test·. Jelikoº cvi£ící p°i opravování defaultn¥ nevidí autora testu, zvy²uje se tím i samotná objektivnost opravování. Více o této aplikaci se m·ºete do£íst v bakalá°ské práci Luká²e Hna´uka [16]. Jednotlivé moduly mezi sebou budou komunikovat a vym¥¬ovat si d·leºité informace. Zjednodu²ený model kooperace modul· znázor¬uje následující diagram 1.1. Generátor p°ipraví podle poºadavk· vyu£ujícího testy. Testy jsou následn¥ digitalizovány a p°i°azeny ke konkrétnímu studentovi. Pomocí aplikace Scribbler jsou testy opraveny a výsledky publikovány nap°íklad na Eduxu. V budoucnu by m¥la fungovat zp¥tná vazba, která by korigovala sloºitost otázek podle procenta správných odpov¥dí. Mým úkolem je navrhnout zp·sob, jak jednozna£n¥ p°i°adit test ke studentovi.
4
KAPITOLA 1. ÚVOD
Obrázek 1.1: Diagram znázor¬ující kooperaci jednotlivých modul·
Kapitola 2
Problematika Jak jsem jiº zmínil, mým úkolem je navrhnout zp·sob, jak z digitalizovaného formulá°e (v na²em konkrétním p°ípad¥ se bude jednat o testy) extrahovat a následn¥ rozpoznat d·leºité informace. Na toto téma jiº byla vypracována bakalá°ské práce Petra Kotka s názvem Automatické vyhodnocení test· [18].
2.1 Sou£asný stav vyhodnocování test· Petr Kotek ve své práci poloºil základ pro vyhodnocování test·. Navrhl strukturu formulá°e pro následnou digitalizaci a popsal zp·sob, jak z formulá°e separovat zajímavá data.
2.1.1 Vytvo°ení formulá°e Petr Kotek k vytvo°ení formulá°e pouºíval kancelá°ský balík OpenOce. V tomto formátu byla vytvo°ena ²ablona testu, která zahrnovala hlavi£ku testu (identikátor testu, jméno studenta, po£et stran) a kalibra£ní zna£ky. Kalibra£ní zna£ky slouºily ke správnému pozicování testu a nalezení jednotlivých prvk· formulá°e. Do takto p°ipravené ²ablony se vypl¬ovalo samotné zadání testu.
2.1.2 Vyhodnocení formulá°e Bylo také navrhnuto následné zpracování formulá°e. Byl popsán a úsp¥²n¥ implementován zp·sob rozpoznávání identikátoru testu a identikátoru studenta. Byly testovány dva zp·soby psaní identikátoru studenta. Prvním z nich bylo p°edti²t¥né uºivatelské jméno. U tohoto typu identikátoru byla úsp¥²nost následného rozpoznání velice vysoká. V druhém p°ípad¥ vypl¬ovali studenti svoje uºivatelské jméno ru£n¥. Tento zp·sob byl ozna£en za neúsp¥ch, nebo´ nebyla docílena vysoká pravd¥podobnost rozpoznání.
2.1.3 Shrnutí práce Petra Kotka Výsledkem práce Petra Kotka byla fungující aplikace, která umoº¬ovala základní manipulaci s digitalizovaným testem. Kdyby ov²em byla perfektní, nebylo by pot°eba nástupce,
5
6
KAPITOLA 2. PROBLEMATIKA
který by systém zdokonalil. Pom¥rn¥ velkou slabinou je vytvá°ení ²ablon v OpenOcu. Správa t¥chto ²ablon je obtíºná a neumoº¬uje snadné generování test· z aplikace Generátor test·. Struktura ²ablon není nejlep²í a mnoºství pouºitých kalibra£ních zna£ek sniºuje £itelnost celého testu. Je také zapot°ebí navrhnout dal²í zp·sob identikátoru studenta, p°i kterém by se zvý²ila pravd¥podobnost rozpoznání. Jelikoº Petr Kotek p°estal na projektu spolupracovat a nebylo ho moºné kontaktovat, jedinými mými zdroji byla jeho bakalá°ská práce a konzultace s mým vedoucím práce Ing. Ji°ím Chludilem. Od toho se odvíjí skute£nost, ºe n¥které £ásti práce jsem musel vymý²let znovu. Vznikla tedy nová aplikace, která vyuºívá pouze zlomek z práce Petra Kotka.
2.2 Specikace cíle Cílem této práce je navrhnout ²ablonu formulá°e vhodnou pro následnou digitalizaci a zp·sobu zpracování takto digitalizovaných formulá°·.
2.2.1 Vytvo°ení ²ablony formulá°e Podle této ²ablony budou následn¥ sestavovány skute£né testy. Proto je pot°eba zvolit vhodný formát, který umoºní snadnou integraci s generátorem test·. Je také zapot°ebí navrhnout vhodnou strukturu pro následnou digitalizaci. V neposlední °ad¥ by výsledný vyti²t¥ný test m¥l být p°ehledný.
2.2.2 Vyhodnocení digitalizovaného testu Hlavním cílem této práce je navrhnout zp·sob, jak zpracovat digitalizovaný test. Je zapot°ebí navrhnout dostate£n¥ robustn¥ identikátor testu a studenta, aby následné rozpoznávání bylo co moºná nejp°esn¥j²í. Cílem je automaticky p°i°adit co nejv¥t²í mnoºství test· ke konkrétním autor·m.
Kapitola 3
Analýza 3.1 ivotní cyklus formulá°e ivotní cyklus formulá°e specikuje, jakými fázemi bude kaºdý formulá° procházet. Na za£átku tohoto procesu stojí vytvo°ení formulá°e podle p°edem p°ipravené ²ablony. Po vytvo°ení formulá°e p°ichází na °adu nasazení formulá°e. Nasazení zahrnuje vyti²t¥ní formulá°· v poºadovaném po£tu, distribuce mezi studenty a následný sb¥r vypln¥ných formulá°·. Jakmile jsou formulá°e vypln¥ny a sebrány dochází k jejich digitalizaci. Po digitalizaci následuje nejsloºit¥j²í £ást celho procesu a tou je samotné vyhodnocení formulá°e. Po vyhodnocení formulá°e jsou data uloºena a poskytnuta pro pot°eby ostatních aplikací. Jednotlivé
fáze
ºivotního
cyklu
for-
mulá°e jsou stejné, jak je popisoval Petr Kotek.
ivotní
cyklus
formulá°e
je
zná-
zorn¥n na následujícím obrázku 3.1, který jsem z jeho práce p°evzal [18]. Jednotlivé fáze se ov²em li²í svým technickým provedením a pouºitými technologiemi.
3.1.1 Vytvo°ení formulá°e Vytvo°ení formulá°e je proces, na jehoº konci je k dispozici sestavený formulá° p°ipravený k tisku. Vytvo°ení formulá°e se
Obrázek 3.1: ivotní cyklus formulá°e
dá rozd¥lit do n¥kolika fází. V
první
fázi
je
zapot°ebí
vytvo°it
²ablonu formulá°e. ablona denuje jednak
7
8
KAPITOLA 3. ANALÝZA
vzhled formulá°e (font a velikost písma, pouºité zna£ky), ale i rozmíst¥ní jednotlivých prvk· formulá°e. D·leºitou sou£ástí ²ablony je návrh hlavi£ky formulá°e a volba kalibra£ních zna£ek, abychom dosáhli vysoké pravd¥podobnosti následného rozpoznání. V druhé fázi se vytvá°í samotný obsah testu. Volí se zde po£et otázek pro daný test, typ otázky (za²krtávací, vyºadující víceslovnou odpov¥¤), ale i samotné zn¥ní otázek.
3.1.1.1 ablona testu Sou£ástí této práce je poºadavek na vytvo°ení vhodné ²ablony testu pro následné strojové zpracování. Jako první mi p°ipadl úkol vybrat správný formát pro vytvá°ení ²ablony. Volil
AT X. jsem mezi formáty MS Oce (OpenOce) a L E
MS Oce & OpenOce Nástroje z t¥chto kancelá°ských balík·, a´ jiº komer£ní MS Oce (Microsoft), nebo opensource OpenOce (Oracle), byly k vytvá°ení ²ablon pouºívány v p°edchozích verzích systému. Tento zp·sob s sebou nese °adu nedostatk·. První nedostatek shledávám v pom¥rn¥ sloºitém zp·sobu vypl¬ování ²ablony otázkami, které vytvo°í generátor test·. Dal²í z nedostatk·, který bych rád zmínil, je deformace kalibra£ních zna£ek p°i tisku testu. Z t¥chto d·vod· nebudu ve své práci tyto formáty k vytvá°ení ²ablon pouºívat.
LATEX
AT X[23] je soubor maker pro sázecí program T X. Dovoluje nám sázet dokumenty ve L E E
AT Xu je datován do osmdesátých let minulého století a vysoké topogracké kvalit¥. Zrod L E
AT X stal velice populární pro za jeho autora je povaºován Leslie Lamport. Od té doby se L E
sázení £lánk·, knih a p°edev²ím matematických vzorc·. Dnes je ²í°en pod svobodnou licencí
1
(LPPL ) a je dostupný na °ad¥ opera£ních systém· (Linux, Mac OS, Windows).
AT X odpadly nedostatky ohledn¥ kvality tisku. Tisk je p°esný a neS pouºitím systému L E
AT Xu, dochází k deformacím. Jelikoº zdrojový soubor, který se poté p°edkládá generátoru L E je velice dob°e strukturovaný, sníºila se náro£nost vyuºívání ²ablony p°ímo z generátoru
AT X. test·. Z t¥chto d·vod· jsem pro vytvo°ení ²ablony formulá°e zvolil práv¥ systém L E
Návrh kalibra£ních zna£ek Nedílnou sou£ástí ²ablony jsou kalibra£ní zna£ky, které slouºí ke správné lokalizaci formulá°e vzhledem k listu papíru. K posunutí formulá°e vzhledem k listu papíru m·ºe dojít p°i samotném tisku, nebo p°i následné digitalizaci. Proto je d·leºité p°ed samotným vyhodnocováním formulá°e zkontrolovat jeho polohu. Na kalibra£ní zna£ky jsou kladeny následující poºadavky:
•
Vysoká pravd¥podobnost nalezení zna£ky
•
Nenápadnost zna£ek ve formulá°i
V p°edchozí verzi ²ablony byly pouºívány t°i druhy kalibra£ních zna£ek 3.2. 1
LaTeX Project Public License
3.1. IVOTNÍ CYKLUS FORMULÁE
(a)
9
(b)
(c)
Obrázek 3.2: P·vodní kalibra£ní zna£ky
Zna£ka 3.2a byla pouºívána v rozích formulá°e pro zji²t¥ní jeho nato£ení. Zna£ka 3.2b uvozovala zadání otázek, pole pro uºivatelské jméno, pozici, po£et stran. T°etí zna£ka 3.2c ohrani£ovala prostor pro odpov¥¤ na otázku. V²echny t°i typy zna£ek m¥ly své opodstatn¥ní, ale p°íli² naru²ovaly strukturu formulá°e, a proto jsem se rozhodl navrhnout zna£ky nové. Vy²el jsem z poºadavku na vysokou pravd¥podobnost nalezení zna£ek. Proto má zna£ka, kterou jsem navrhl, kruhovitý tvar. Kruhy se v obraze pom¥rn¥ snadno hledají, a jelikoº minimum dal²ích prvk· formulá°e je kruhovitého tvaru, redukuje se tím mnoºství ²patn¥ identikovaných zna£ek. Mnou navrºená zna£ka má následující tvar 3.3.
Obrázek 3.3: Nov¥ navrºená kalibra£ní zna£ka
Kalibra£ní zna£ky jsem umístil do roh· formulá°e, £ímº zjistím drobné nato£ení vzhledem k papíru. Jelikoº p°i digitalizaci formulá°e m·ºe dojít k oto£ení formulá°e o 180 stup¬·, umístil jsem jednu zna£ku doprost°ed na spodní okraj formulá°e. Na testu se tedy nachází celkem p¥t kalibra£ních zna£ek, které svým umíst¥ním (na samých okrajích formulá°e) nijak nenaru²ují samotnou strukturu formulá°e.
3.1.1.2 Vypln¥ní ²ablony testovými otázkami O vypln¥ní ²ablony testovými otázkami se bude starat generátor test·, který vytvo°il v rámci své bakalá°ské práce Franti²ek Kraml [19]. Franti²ek Kraml generátor test· stále zdokonaluje a v sou£asné dob¥ je jiº moºné generování test· p°ímo do ²ablon napsaných
AT Xu. v L E
3.1.2 Nasazení formulá°e Z p°edchozího kroku máme vytvo°ený formulá°, který je p°ipravený k tisku. Nasazení formulá°e zahrnuje vyti²t¥ní formulá°e v poºadovaném po£tu kopií, p°edání formulá°e student·m a sb¥r jiº vypln¥ných formulá°·, které budou dále zpracovávány. ablona formulá°e je optimalizována pro tisk na laserové tiskárn¥ s rozli²ením 600 dpi. Samoz°ejm¥ vyti²t¥ní dokumentu m·ºe být provád¥no i jiným zp·sobem. Nemohu p°íli² doporu£it kopírování formulá°e pomocí kopírky, nebo´ p°i kopírování dochází k mírným deformacím, které by mohly vést k hor²í £itelnosti p°i rozpoznávání. Ale i tento zp·sob je podporován.
10
KAPITOLA 3. ANALÝZA
3.1.3 Digitalizace formulá°e Po sb¥ru vypln¥ných formulá°· dochází k jejich digitalizaci. Existuje n¥kolik zp·sob·, kterými lze test digitalizovat. Jednou z moºností je pouºít digitální fotoaparát. Tímto zp·sobem probíhá digitalizace velice rychle, ale má °adu nevýhod. Mezi nevýhody pat°í nutnost osobn¥ provád¥t ofocování formulá°·, ale nejv¥t²í nevýhodu vidím v deformaci rozm¥r·, ke které m·ºe p°i fotografování dojít. Druhým a preferovaným zp·sobem digitalizace je pouºití plochého skeneru se zásobníkem. Skenování formulá°· zabere sice del²í dobu, ale prob¥hne zcela automaticky. Systém je optimalizován na skenování pomocí plochého skeneru s rozli²ením 300dpi.
3.1.4 Vyhodnocení formulá°e Vyhodnocení formulá°e je pom¥rn¥ komplikovanou záleºitostí. Do velké míry se vyuºívá po£íta£ového vid¥ní, které se snaºí napodobit lidské vid¥ní. Vyhodnocování formulá°e se dá rozd¥lit do následujících n¥kolika krok·.
3.1.4.1 Nalezení kalibra£ních zna£ek Prvním krokem p°ed samotným vyhodnocováním formulá°e je nalezení kalibra£ních zna£ek. Jak jsem jiº zmínil p°i návrhu ²ablony formulá°e, kaºdý formulá° obsahuje p¥t kalibra£ních zna£ek (£ty°i v rozích a jednu asymetrickou na dolním okraji formulá°e). Po nalezení kalibra£ních zna£ek se zkontroluje nato£ení formulá°e. Pokud je zji²t¥no nato£ení formulá°e, provede se jeho korekce. V této fázi jsme jiº p°ipraveni k vy°íznutí a následnému zpracování d·leºitých dat z formulá°e. Z d·leºitých dat, která budeme dále zpracovávat, bych jmenoval identikátor formulá°e, identikátor autora, pop°ípad¥ pozici autora p°i vypl¬ování formulá°e.
3.1.4.2 Identikace testu Identikací testu je my²leno správn¥ rozpoznat identikátor testu a následné p°i°azení takto rozpoznaného testu do systému. Kaºdá skupina test· má v systému jednozna£ný identikátor, podle kterého lze dohledat jeho ²ablonu. V p°edchozích verzích ²ablon test· byl identikátor testu vyti²t¥n ve form¥ textového °et¥zce v hlavi£ce formulá°e. Textový identikátor testu vypadal následujícím zp·sobem 3.4 a obsahoval tyto údaje: semestr (ve kterém se test psal), zkratka p°edm¥tu, uºivatelské jméno cvi£ícího, £as cvi£ení, po°adí testu a skupinu testu. Tento textový identikátor se následn¥ rozpoznával pomocí OCR systému. Výsledky rozpoznávání nebyly ²patné, ale nebyly stoprocentní. Z výsledk· bakalá°ské práce Petra Kotka [18] plyne, ºe z 50 test· bylo bezchybn¥ rozpoznáno (s pouºitím Tesseract-OCR) 33 test·. Ve zbylých 17 testech se objevily chyby p°i rozpoznávání. patn¥ rozpoznané identikátory se li²ily o 1-4 znaky od skute£nosti. Kv·li t¥mto neuspokojujícím výsledk·m jsem za£al hledat n¥jakou alternativu k textovému identikátoru. Alternativu jsem nalezl ve 2D kódech.
3.1. IVOTNÍ CYKLUS FORMULÁE
11
Obrázek 3.4: P·vodní hlavi£ka testu
2D kódy 2D kódy [7] se za£aly vyvíjet v dob¥, kdy byly stále velice populární £árové kódy. Objevil se ov²em poºadavek na kód, který by dokázal pojmout v¥t²í mnoºství informací a p°itom nezv¥t²il své rozm¥ry. Odpov¥dí na tyto poºadavky byly 2D kódy. 2D kódy se li²í od £árových p°edev²ím v tom, ºe data obsahují jak v horizontálním, tak i ve vertikálním sm¥ru. árové kódy mohou data obsahovat pouze v jednom sm¥ru 3.5.
Obrázek 3.5: Porovnání ukládání dat v £árových kódech
V následující tabulce 3.1 se nachází srovnání n¥kolika zástupc· 2D kód· a jejich základní rysy. Ve své práci jsem se rozhodl pouºít QR kód. U£inil jsem tak kv·li zna£né podpo°e v r·zných programovacích jazycích, veliké rozmanitosti £te£ek v mobilních telefonech a faktu, ºe QR kódy zaºívají veliký rozmach.
QR kód QR kódy [20] [28] pat°í do rodiny 2D kód·. Skládají se z £erných modul·, které jsou uspo°ádány do £tvercového vzoru na bílém pozadí. Zakódovaná informace m·ºe být r·zného typu. M·ºe se jednat o prostý text, vizitku, telefonní kontakt, odkaz na internetovou adresu, p°ístup k wi síti a mnoho dal²ích. Záleºí jen na £te£ce QR kód·, které moºnosti podporuje. QR kódy pocházejí z Japonska, kde byly v roce 1994 p°edstaveny rmou Denso-Wave [7], dce°innou spole£ností Toyoty. V dne²ní dob¥ jsou QR kódy nejpouºívan¥j²ími 2D kódy. QR znamená Quick Response (rychlá odezva) a poukazuje na rychlost £tení. P·vodn¥ byly QR kódy pouºívány pro identikaci sou£ástek p°i výrob¥ aut. S rozvojem mobilních telefon· s digitálním fotoaparátem se QR kódy ²iroce roz²í°ily mezi ve°ejnost. Dnes m·ºeme nalézt QR
12
KAPITOLA 3. ANALÝZA
QR Code
Vývoj (zem¥)
DENSO (Japonsko)
PDF417
DataMatrix
Symbol
RVSI Acuity
Technologies
CiMatrix
(USA)
(USA)
Maxi Code
UPS (USA)
Sloºení Matice
Typ
£árových
Matice
Matice
kód· Datová kapacita
ísla
7 089
2 710
3 116
138
Alfanumerické
4 296
1 850
2 355
93
2 953
1 018
1 556
Binární
Velká kapacita, Hlavní výhody
rychlé £tení,
Velká
malé
kapacita
rozm¥ry p°i
Malé rozm¥ry p°i
Rychlé £tení
tisku
tisku AIM Inter-
AIM Inter-
AIM Inter-
AIM Inter-
national,
national,
national,
national,
JIS, ISO
ISO
ISO
ISO
Standardizace
Tabulka 3.1: Srovnání 2D kód·
kódy v reklamách, na letácích i vizitkách. Jediné, co k dekódování QR kódu pot°ebujeme, je £te£ka, nap°íklad mobilní telefon s digitálním fotoaparátem a software, který se o dekódování postará. V moderních mobilních telefonech s opera£ním systémem Android, nebo Symbian, je £te£ka p°ímo sou£ástí systému. U jiných telefon· si m·ºeme nainstalovat £te£ku sami.
2
3
4
Zajímavé aplikace jsou nap°íklad ZXing , Kaywa , nebo £te£ka od £eského Seznamu . Za velkým rozvojem QR kód· stojí ²iroká standardizace u významných organizací, jako jsou AIM International (Automatic Identication Manufacturers International), JEIDA (Japanese Electronic Industry Development Association), JIS (Japanese Industrial Standards) a ISO (International Organization for Standardization). QR kódy jsou ²í°eny zdarma pro jakékoli pouºití. Mezi nejv¥t²í p°ednosti QR kódu pat°í velká kapacita (aº 7 089 £íslic), malá velikost pot°ebná pro tisk, odolnost proti po²kození a nezávislost na orientaci kódu. QR kód dokáºe detekovat a opravit 7 30% po²kození £teného kódu. Stupe¬ korekce chyb je volen p°i generování kódu a máme na výb¥r ze 4 moºností. Dal²í výhodou, kterou QR kód poskytuje, je nezávislost na nato£ení kódu p°i £tení. Kaºdý QR kód obsahuje sadu pozicovacích zna£ek, které se p°i £tení kódu o nato£ení postarají. 2
reader.kaywa.com
3
http://code.google.com/p/zxing/
4
http://www.smobil.cz/cz/qr-kody/seznamqr/
3.2. POÍTAOVÉ VID NÍ
13
Obrázek 3.6: Struktura QR kódu
3.1.4.3 Identikace autora D·leºitou sou£ástí této práce je navrhnout zp·sob, jak s co nejv¥t²í pravd¥podobností rozpoznat autora, který formulá° vyplnil. Jelikoº známe potencionální autory, kte°í mohli formulá° vyplnit, m·ºeme si dovolit jisté nep°esnosti v rozpoznávání. Ve své práci testuji ²est identikátor·, pro rozpoznání identity autora. Mezi testované identikátory pat°í ru£n¥ psané uºivatelské jméno, ru£n¥ psané identika£ní £íslo, vlastní návrh písma psaní uºivatelského jména i £ísla, p°edti²t¥ný test pro kaºdého studenta a identikaci pomocí nalepovacího QR kódu. Více o t¥chto identikátorech se do£tete v kapitole realizace 4.3.
3.2 Po£íta£ové vid¥ní Po£íta£ové vid¥ní [27] je jedno z odv¥tví informatiky, které se zabývá získáváním informací ze zachyceného obrazu. Typická je snaha napodobit lidské vid¥ní, a tudíº porozum¥t a rekonstruovat trojrozm¥rné scény, které byly zachyceny jednou nebo více kamerami. Po£íta£ové vid¥ní se £asto pouºívá v oblastech ovládání proces· (orientace robot· v prostoru), detekce jev· (zachycení zm¥n ze záznam· bezpe£nostních kamer), interakce s uºivatelem a jist¥ najdeme i mnoho dal²ích oblastí, kde se s po£íta£ovým vid¥ním setkáme.
3.2.1 OpenCV OpenCV (Open Source Computer Vision) [14] [6] [26] je knihovna funkcí zam¥°ená p°edev²ím na po£íta£ové vid¥ní v reálném £ase. U zrodu této knihovny stála rma Intel, která v roce 1999 ociáln¥ zahájila její vývoj. Dnes se jedná o open-source projekt, který je podporován výzkumnou laborato°í Willow Garage. OpenCV je ²í°eno pod BSD licencí, tudíº m·ºeme tuto knihovnu zdarma vyuºívat pro komer£ní i nekomer£ní ú£ely. Knihovna OpenCV obsahuje více neº 500 funkcí, které pokrývají zna£nou £ást po£íta£ového vid¥ní. M·ºeme zde nalézt funkce pro kalibrace kamer, zpracování obrazu (jak statického, tak i videa v reálném £ase), tak i rozhraní pro uºivatelsky p°ív¥tivou komunikaci.
14
KAPITOLA 3. ANALÝZA
Své zastoupení zde mají také algoritmy pro detekci objekt· v obrazu. Z nich bych zmínil p°edev²ím detekci obli£ej·, postav, gest, výrobk· a mnoho dal²ích. Základ knihovny OpenCV je implementován v optimalizovaném C. Od verze OpenCV 2.0 je dostupné jak rozhraní v jazyce C, tak nov¥ i v C++. V jazyce C++ je také psána v¥t²ina nov¥ implementovaných algoritm·. Jelikoº je knihovna OpenCV velice oblíbená, vznikla °ada wrapper· do dal²ích programovacích jazyk· jako jsou C#, Python, Ruby nebo Java. Knihovnu OpenCV lze vyuºít na opera£ních systémech Linux, Windows, Mac OS, Android OS, FreeBSD, nebo na iOS (iPhone OS).
3.2.2 OCR systémy V této práci budu vyuºívat krom¥ knihovny OpenCV i OCR (Optical Character Recognition) [25] systémy. OCR systémy se starají o p°evod ti²t¥ného textu do digitální podoby. Ve své práci budu OCR systémy vyuºívat p°edev²ím pro zji²t¥ní identikátoru autora testu. Existuje celá °ada systém·, které se o p°evod ti²t¥ného textu starají. Na²e podmínky na OCR systém jsou následující: svobodná licence a kompatibilita s opera£ním systémem Linux. I p°es toto omezení se mi poda°ilo n¥kolik OCR systém· nalézt.
3.2.2.1 Kandidáti Mezi kandidáty se objevila celá °ada zajímavých projekt·. N¥které z nich jako nap°íklad
5 byly uvoln¥ny komer£ními rmami po skon£ení interního
Tesseract-OCR [9] nebo Cuneiform
vývoje. Mezi dal²í pat°í nap°íklad Ocropus [5], který vyuºívá Tesseract-OCR a podporuje
6
rozeznávání ru£n¥ psaného písma. Nem¥l bych zapomenout ani na projekty Ocrad , nebo
7
GOCR . V²echny tyto projekty jsou ºivé a pom¥rn¥ dob°e zdokumentované. V dal²ích kapitolách se podíváme na jednotlivé systémy podrobn¥ji.
5
http://en.openocr.org/
6
http://www.gnu.org/software/ocrad/
7
http://jocr.sourceforge.net/
Kapitola 4
Realizace 4.1 Pozicování formulá°e Pozicování formulá°e slouºí k zji²t¥ní nato£ení vytisknutého formulá°e vzhledem k okraj·m papíru. K nato£ení m·ºe dojít p°i samotném tisku, nebo p°i následné digitalizaci formulá°e. Pro dal²í zpracování je pot°eba toto nato£ení detekovat a opravit. K zji²t¥ní nato£ení slouºí kalibra£ní zna£ky, z jejichº vzájemné pozice se dá nato£ení spo£ítat. K nalezení kalibra£ních zna£ek budu testovat dv¥ moºná °e²ení. První z nich bude metoda Viola-Jones a druhou Houghova transformace.
4.1.1 Metoda Viola-Jones Metoda Viola-Jones [14] byla publikována v roce 2001 a byla ur£ena p°edev²ím k detekování lidských obli£ej· v reálném £ase. Tato metoda v²ak není limitována pouze na lidské obli£eje, ale lze ji pouºít na hledání tém¥° £ehokoli (lidské postavy, auta, SPZ, . . . ). Pro rozpoznávání nové t°ídy objekt· je zapot°ebí vytvo°it nový klasikátor.
4.1.1.1 OpenCV rozpoznávání nových objekt· OpenCV je dodáváno s °adou klasikátor·, které dokáºou detekovat lidské obli£eje, o£i, postavu a °adu dal²ích objekt·. K u£ení objekt· se pouºívá práv¥ klasika£ní metoda ViolaJones. Tento algoritmus pouºívá ke svému u£ení metodu AdaBoost. Aplikuje ji v kaºdém uzlu kaskády k dosaºení vysoké úsp¥²nosti detekce a minimalizaci ²patn¥ detekovaných objekt·. OpenCV také poskytuje nástroje, kterými byly základní klasikátory vytvo°eny, a proto není sloºité vytvo°it si sv·j vlastní klasikátor. K vytvo°ení vlastního klasikátoru budeme pot°ebovat £ty°i mnoºiny obrázk·:
•
Pozitivní vzorky
•
Pozitivní vzorky pro testování
•
Negativní vzorky
•
Negativní vzorky pro testování
15
16
KAPITOLA 4. REALIZACE
U pozitivních vzork· musíme dále uvést mnoºství a p°esnou pozici vzork· na obrázku. Negativní vzorky m·ºeme volit libovoln¥, ale je ºádoucí, aby byly podobné pozitivním vzork·m.
4.1.1.2 Vytvo°ení nového klasikátoru OpenCV dokáºe rozpoznávat objekty na základ¥ p°edem p°edp°ipraveného klasikátoru, který dodáváme ve form¥ XML souboru. Poj¤me se nyní podívat, jakým zp·sobem vytvo°íme onen zmín¥ný XML soubor [14] [10]. P°edtím neº za£neme se samotným u£ícím procesem, musíme si vytvo°it dostate£né mnoºství pozitivních a negativních vzork·, na kterých budeme vytvá°ený klasikátor u£it. Jako první vytvo°íme textový soubor, který bude obsahovat mnoºinu v²ech pozitivních vzork·. Tento soubor musí obsahovat cestu k poºadovanému obrázku (<path>), jméno obrázk· (img_name), po£et pozitivních vzork· v obrázku (count), sou°adnice horního levého rohu pozitivního vzoru (x, y), ²í°ku (w) a vý²ku pozitivního vzoru (h) v pixelech. Tyto informace zapí²eme do textového souboru podle následujícího vzoru:
<path>/img_name_1 count_1 x11 y11 w11 h11 x12 y12 . . . <path>/img_name_2 count_2 x21 y21 w21 h21 x22 y22 . . . . . . Konkrétní p°íklad m·ºe vypadat takto. Pokud máme mnoºinu obrázk· v adresá°i data/faces, potom výsledný soubor faces.idx m·ºe vypadat následovn¥:
data/faces/face_000.jpg 2 73 100 25 37 133 123 30 45 data/faces/face_001.jpg 1 155 200 55 78 . . . Nyní pouºijeme utilitu createsamples k vytvo°ení vektorového souboru s pozitivními vzorky. Díky tomuto souboru m·ºeme trénovací proces opakovat a zkou²et r·zná nastavení parametr·. Vektorový soubor vytvo°íme následovn¥:
createsamples vec faces.vec info faces.idx w 30 h 30 Tento p°íkaz £te soubor faces.idx, který jsme si vytvo°ili v p°edchozím kroku a vytvá°í binární soubor faces.vec, ve kterém jsou jednotlivé pozitivní vzorky. Createsamples vy°ízne pozitivní vzorky z obrázk·. Následn¥ je normalizuje a upraví jejich velikost podle specikací (zde vý²ka i ²í°ka je 30 pixel·). Viola-Jones je binární klasikátor, který se jednodu²e rozhoduje, zda je objekt podobný trénovací mnoºin¥ (Ano), £i nikoli (Ne). V p°edchozím kroku jsme si ukázali, jak vytvo°it pozitivní vzorky, které budou klasikovány jako Ano. Nyní se podíváme, jak vytvo°it negativní vzorky, £ímº klasikátoru °ekneme, ºe tyto vzorky nevypadají jako na²e objekty. Jako negativní vzorky m·ºeme brát jakékoli obrázky, kde se nevyskytuje ná² objekt, ale je vhodné tyto vzorky vybírat ze stejného prost°edí jako pozitivní vzorky. Soubor s negativními vzorky vytvo°íme podobn¥ jako v p°edchozím p°íkladu. Nyní bude kaºdá °ádka souboru obsahovat pouze cestu k obrázku a jméno negativního vzorku. Nap°íklad takto m·ºe vypadat soubor background.idx, který obsahuje negativní vzorky:
4.1. POZICOVÁNÍ FORMULÁE
17
data/vacations/beach.jpg data/nonfaces/img_043.bmp data/nonfaces/257-5799_IMG.JPG . . . Nyní máme p°ipravené v²echny pot°ebné soubory a m·ºeme se pustit do samotného trénování klasikátoru. Následující p°íkaz provede trénování klasikátoru podle zadaných kritérií:
Haartraining / data face_classifier / vec faces.vec w 30 h 30 / bg backgrounds.idx / nstages 20 / nsplits 1 / [nonsym] / minhitrate 0.999 / maxfalsealarm 0.5 Tímto p°íkazem vytrénujeme nový klasikátor, který se uloºí do souboru face_classier. Face.vec je mnoºina pozitivních vzork· (o rozm¥rech 30x30 pixel·), které jsme vytvo°ili v prvním kroku. Ze souboru background.idx budou náhodn¥ vy°íznuty obrázky, které budou brány jako negativní vzorky. Trénování je rozd¥leno do 20 (-nstages) etap. Kaºdá etapa je trénována tak, aby m¥la úsp¥²nost detekce (-minhitrate) 99,9% nebo vy²²í. V kaºdé etap¥ musí také být 50% (nebo mén¥) ²patn¥ detekovaných objekt· (-maxfalsealarm). Parametr nsplits udává po£et v¥tví u£ícího stromu. Asymetri£nost u£ícího se objektu m·ºeme nastavit parametrem nonsym. Tento parametr m·ºeme nastavit, pokud objekt není soum¥rný podle vertikální osy. Pokud je objekt soum¥rný, m·ºeme pouºít parametr sym (je oby£ejn¥ nastaven), £ímº urychlíme výpo£et. U£ící proces je výpo£etn¥ velice náro£ná úloha. I na výkonných po£íta£ích m·ºe tato operace trvat °ádov¥ hodiny aº dny, v závislosti na mnoºství pozitivních a negativních vzork·.
4.1.1.3 Testování klasikátoru Nyní, kdyº jiº máme klasikátor vytvo°ený, ukáºeme si jeho kvalitu. Kvalitu klasikátoru zjistíme otestováním na testovacích datech. Pozitivní i negativní vzorky pro testování vytvo°íme stejným zp·sobem, jakým jsme vytvo°ili data pro u£ení. Testovací proces spustíme následujícím p°íkazem:
performance -data face_classifier.xml -info tests.idx kde za parametr data dosazujeme námi vytvo°ený klasikátor a za info cestu k souboru, který obsahuje testovací mnoºinu dat. Výsledky testování dostáváme jako tabulku o £ty°ech sloupcích. V prvním sloupci se nachází jméno testovaného obrázku, druhý sloupec obsahuje po£et správn¥ klasikovaných objekt·, ve t°etím sloupci nalezneme po£et nenalezených vzor·
18
KAPITOLA 4. REALIZACE
a v posledním £tvrtém sloupci se nachází po£et ²patn¥ klasikovaných objekt·. Tato utilita také vytvo°í kopie obrázk·, do kterých zakreslí místa nalezených vzor·. Takºe m·ºeme jednodu²e opticky vid¥t, který vzor byl nalezen správn¥, a naopak, co bylo klasikátorem ²patn¥ ozna£eno. Tato funkce lze vypnout pouºitím p°epína£e ni.
4.1.2 Houghova transformace Houghova transformace [1] se pouºívá pro nalezení objekt·, u nichº známe parametrický popis. Abychom mohli tuto metodu vyuºít, musíme znát analytický popis tvaru, který hledáme. Práv¥ kv·li tomuto omezení se tato metoda vyuºívá pro detekci jednoduchých objekt· v obraze, jako jsou p°ímky, kruºnice, elipsy a dal²í objekty, které lze popsat jednoduchou parametrickou rovnicí. Houghova transformace má tu výhodu, ºe je pom¥rn¥ robustní v·£i nepravidelnostem hledaného objektu. Kruhové kalibra£ní zna£ky, které jsem navrhl, se dají popsat jednoduchou analytickou rovnicí
(x − a)2 + (y − b)2 = r2 , tudíº k jejich detekci m·ºeme vyuºít Houghovu transformaci. Samotnou Houghovu transformaci nebudu v této práci implementovat, ale vyuºiji optimalizovanou verzi z knihovny OpenCV [31].
4.2 Identikátor testu Jak jsem jiº zmínil v kapitole 3.1.4.2, identikátor testu slouºí k jednozna£nému p°i°azení testu k jeho ²ablon¥. Jelikoº bez rozpoznání identikátoru testu nelze ve v¥t²in¥ p°ípad· pokra£ovat v dal²ím analyzování testu, m¥l by být identikátor dostate£n¥ robustní, aby k nedokonalostem ve £tení nedocházelo.
4.2.1 QR kódy Velice silnou zbraní jsou QR kódy. Jak jsem jiº zmínil, nabízejí nám velikou kapacitu pro uloºení dat (více jak 7000 £íslic) a poradí si i s mírným mechanickým po²kozením (aº 30% datové £ásti). P°i generování identikátor· v QR kódu nemohu vyuºít plnou datovou kapacitu, kterou nám QR kódy nabízejí, nebo´ p°i velkém mnoºství uloºených dat nabývá QR kód pom¥rn¥ velkých rozm¥r·. V na²em p°ípad¥ m·ºeme do QR kódu uloºit p°ibliºn¥ 20 znak·, coº bohat¥ posta£uje. Pro samoopravu chyb volím stupe¬ M. To nám dovoluje 15% po²kození kódu bez ztráty uloºených informací. V jednotlivých testech zkou²ím n¥kolik variant, jak zapsat identikátor testu, aby jeho £itelnost byla co nejvy²²í a zárove¬ následné zpracování nevyºadovalo p°íli² úsilí. Ve své práci zkou²ím t°i moºné zp·soby. Jako první moºnost jsem zvolil £íselný identikátor testu. Jedná se o ²estimístné £íslo s kontrolním sou£tem. Takto vytvo°ený °et¥zec je t°ikrát zopakován. Tento identikátor má tu výhodu, ºe pokud dojde p°i dekódování k chyb¥, dokáºeme ji detekovat a v mnoha
4.3. IDENTIFIKÁTOR STUDENTA
19
p°ípadech i opravit. Nevýhodou je duplikování informace, díky £emu QR kód nabývá na velikosti. P°íkladem tohoto typu identikátoru je následující °et¥zec 000001100000110000011. Dále zkou²ím identikátor, který je tvo°en pouze £ty°£íselným kódem. Mezi nejv¥t²í výhody pat°í malá velikost QR kódu, coº nám umoº¬uje tisknout QR kód ve v¥t²ím rozli²ení. Tento identikátor by proto m¥l být odoln¥j²í proti deformacím. Z nevýhod bych zmínil nemoºnost detekovat ²patn¥ dekódovaný identikátor. P°íklad tohoto identikátoru vypadá následujícím zp·sobem 1245. Poslední identikátor, který budu zkou²et je textový popis cvi£ení, na který je test p°ipraven. Výhodou tohoto identikátoru je mírné sníºení komunikace se sluºbou, která zprost°edkovává informace o p°edm¥tech. Jelikoº názvy p°edm¥t· a jejich paralelek jsou známé, umoº¬uje nám tento identikátor detekovat ²patn¥ dekódovaný °et¥zec. Nevýhodou je o n¥co v¥t²í velikost neº v p°edchozím p°ípad¥. Tento identikátor vypadá nap°íklad následovn¥ BI-GRA-UT1245-T5-B.
4.2.2 Dekódování QR kódu Pro rozkódování QR kódu pot°ebujeme £te£ku QR kód·. Ve své práci nebudu £te£ku sám implementovat, ale s radostí vyuºiji n¥kterou open-source £te£ku. Existuje velká °ada £te£ek, které lze pouºít v mobilních telefonech. Tyto £te£ky jsou v¥t²inou zdarma ke staºení a jediné, co pot°ebujeme, je mobilní telefon s digitálním fotoaparátem. Takovéto dekódování je velice jednoduché. Spustíme nainstalovanou £te£ku a namí°íme fotoaparát na QR kód. Po sejmutí obrazu se QR kód zpracuje a vyvolá se p°íslu²ná akce. QR kód m·ºe obsahovat odkaz na webovou stránku, vizitku, která se nám automaticky uloºí do
1
kontakt·, nebo t°eba oby£ejný text. Zajímavými projekty jsou nap°íklad Kaywa Reader ,
2 3 ZXing nebo £te£ka, kterou vyvíjí £eský Seznam . te£ky QR kód· jsou p°ímou sou£ástí opera£ních systém· Android nebo Symbian. Najít £te£ku, která by umoº¬ovala p°ímý p°ístup z programovacího jazyka, bylo o n¥co sloºit¥j²í. V¥t²ina £te£ek, na které jsem narazil, byla komer£ního rázu. Ve své práci vyuºívám open-source knihovnu, která je napsaná v jazyce Java [8]. Tato knihovna je vydána pod svobodnou licencí GPL v2 a umoº¬uje velice snadný p°ístup z jazyka Java.
4.3 Identikátor studenta D·leºitou sou£ástí této práce, dalo by se °íct základním kamenem, je návrh identikátoru studenta. Identikátor studenta slouºí ke spárování jména studenta s konkrétn¥ vypln¥ným testem. Je kladen d·raz na vysokou pravd¥podobnost správného p°e£tení identikátoru. Ve své práci jsem navrhl ²est r·zných zp·sob·, jak zvolit tento identikátor. Kaºdý návrh identikátoru bude podrobn¥ji rozebrán a ukázán p°íklad konkrétní hlavi£ky testu. 1
reader.kaywa.com
2
http://code.google.com/p/zxing/
3
http://www.smobil.cz/cz/qr-kody/seznamqr/
20
KAPITOLA 4. REALIZACE
4.3.1 Ru£n¥ psané uºivatelské jméno Jako první identikátor jsem zvolil ru£n¥ psané uºivatelské jméno. Kaºdý student vyplní do p°edp°ipraveného formulá°e své uºivatelské jméno, které napí²e velkými tiskacími písmeny. Hlavi£ka tohoto testu vypadá nap°íklad následujícím zp·sobem 4.1.
Obrázek 4.1: Hlavi£ka testu s ru£n¥ psaným uºivatelským jménem
Tento typ identikátoru má své kladné i záporné stránky. Mezi výhody tohoto identikátoru bych za°adil rychlost a jednoduchost, s jakou studenti tento identikátor vyplní. Díky tabulce, do které budou studenti sv·j identikátor vypl¬ovat, m·ºu rozeznávat znak po znaku. Seznam student·, kte°í mohli test vyplnit je p°edem znám. To nám umoº¬uje porovnávat rozpoznaný výstup s konkrétními údaji v databázi. Nemusíme tedy p°esn¥ rozeznat kaºdý znak identikátoru, abychom byli schopni studenta k testu p°i°adit. Nejpal£iv¥j²ím nedostatkem tohoto identikátoru je samotné rozpoznávání. Ve své práci pouºívám pouze open-source komponenty, které bohuºel nejsou dob°e p°izp·sobené k rozpoznávání ru£n¥ psaného písma. K rozpoznávání tohoto identikátoru pouºívám systém OCRopus [5]. OCRopus je open-source OCR systém postavený na Tesseract-OCR, který podporuje rozpoznávání ru£n¥ psaného písma. Ov²em výsledky rozpoznávání tohoto typu identikátoru nejsou p°íli² p°esv¥d£ivé. Výsledky rozpoznávání budou více popsány v kapitole 6.3.
4.3.2 Ru£n¥ psaný £íselný identikátor Dal²í identikátor v po°adí, který budu testovat, je ru£n¥ psaný £íselný identikátor. Kaºdému studentovi bude na za£átku semestru p°i°azeno identika£ní £íslo, pod kterým bude vypl¬ovat v²echny testy. V na²em p°ípad¥ bude identikátor pouze dvojciferný, nebo´ p°edm¥t, kde probíhá testování, má zapsáno pouze 30 student·. Hlavi£ka tohoto testu bude vypadat následujícím zp·sobem 4.2.
Obrázek 4.2: Hlavi£ka testu s ru£n¥ psaným £íselným identikátorem
4.3. IDENTIFIKÁTOR STUDENTA
21
Tento typ identikátoru opro²´uje opravujícího od znalosti jména studenta. To vede k objektivn¥j²ímu opravování, které by n¥kdy mohlo být ovlivn¥no sympatiemi k jednotlivým student·m. Budu testovat dva systémy pro rozpoznávání tohoto typu identikátoru. Prvním z nich je systém OCRopus, který jsem jiº stru£n¥ popsal d°íve. Druhý systéme je Numrecognition [4]. Tato knihovna je orientována na rozpoznávání ru£n¥ psaných £íslovek. Velice p°íjemnou v¥cí je, ºe tato knihovna je napsána v jazyce Java, £ímº je její pouºití p°ímo z mé aplikace velice jednoduché. K rozpoznávání £ísel pouºívá nau£enou neuronovou sí´. Podle stránek autora této knihovny, se procentuální správnost rozpoznání pohybuje kolem 94%. Nevýhodou £íselného identikátoru je skute£nost, ºe nem·ºeme zkontrolovat, zda rozpoznávání dopadlo správn¥. V tomto p°ípad¥ se tedy musíme spoléhat na vysokou pravd¥podobnost rozpoznání.
4.3.3 Návrh vlastního stylu písma Pro následující dva typy identikátor· jsem navrhl vlastní typ písma. Idea je taková, ºe student bude psát sv·j identikátor podle p°edem ur£eného stylu (v tomto p°ípad¥ obtahovat te£kované £áry). Tento jednotný typ písma by m¥l odbourat varianci, která vznikala u ru£n¥ psaného identikátoru. Díky jednotnému stylu písma, by m¥lo být jednodu²²í písmena správn¥ rozpoznat. P°i návrhu jednotlivých písmen jsem se snaºil, aby se co nejvíce podobala velkým tiskacím písmen·m, na která jsme zvyklí. Zárove¬ také dbám na jednoduchost a rychlost psaní t¥chto písmen. Písmena a £íslice, které jsem navrhl, vypadají následujícím zp·sobem 4.3.
Obrázek 4.3: Nov¥ navrºený font písma
Tento styl písma budu rozpoznávat pomocí OCR systému Tesseract-OCR [9]. Tento systém dovoluje nau£it vlastní jazyk (font písma). O tom, jak probíhá u£ení nového fontu písma, se budu podrobn¥ji zabývat v záv¥ru této kapitoly 4.4.
4.3.4 Uºivatelské jméno napsané podle vzoru V této hlavi£ce testu bude student vypl¬ovat své uºivatelské jméno podle vzoru písma, které jsem navrhl a popsal v p°edchozím odstavci. Hlavi£ka testu vypadá následujícím zp·sobem 4.4. Tento typ identikátoru nám umoº¬uje kontrolovat správnost rozpoznání vzhledem k databázi uºivatel·, kterou p°edem známe. Jak jsem jiº zmínil u ru£n¥ psaného uºivatelského jména, nemusíme rozpoznat vºdy v²echna písmena bezchybn¥, abychom byli schopni jednozna£n¥ p°i°adit test ke studentovi.
22
KAPITOLA 4. REALIZACE
Obrázek 4.4: Hlavi£ka testu s uºivatelským jménem psaným podle vzoru
Nejv¥t²í obtíºí tohoto identikátoru je velké omezení student·, kte°í musí vypl¬ovat své uºivatelské jméno podle p°ipravené ²ablony. I p°es mou snahu co nejvíce zjednodu²it formát písma, trvá vypln¥ní jména n¥kolikrát déle, neº kdyby ho studenti psali tak, jak jsou zvyklí.
4.3.5 Identika£ní £íslo psané podle vzoru Tento identikátor je obdobou ru£n¥ psaného £íselného identikátoru, pouze s tím rozdílem, ºe £íselný identikátor se bude vypl¬ovat podle mnou navrºeného stylu. Hlavi£ka tohoto testu vypadá následujícím zp·sobem 4.5.
Obrázek 4.5: Hlavi£ka testu s £íselným identikátorem psaným podle vzoru
Výhody a nevýhody, které charakterizují tento identikátor, se dají odvodit z p°edchozích dvou moºností. Mezi výhody bych za°adil vy²²í objektivnost. Nevýhod je pon¥kud více. Za st¥ºejní nevýhody bych povaºoval nemoºnost ov¥°it správnost rozpoznání a omezení student· na jediný vzor písma.
4.3.6 Test na jméno Test s tímto identikátorem bude vygenerován kaºdému studentovi p°esn¥ na míru. Kaºdý test bude jiº p°i vyti²t¥ní obsahovat identikaci studenta, pro kterého je ur£en. Jako identikátor jsem zvolil QR kód, který se velice osv¥d£il pro svou vysokou £itelnost. Hlavi£ka tohoto testu vypadá následujícím zp·sobem 4.6. Nejv¥t²í výhodou tohoto typu identikátoru je vysoká pravd¥podobnost rozpoznání. V QR kódu je zakódováno identika£ní £íslo studenta, které je jedine£né v celém systému. Na druhé stran¥ má tento typ identikace testu i své stinné stránky. Nejv¥t²í nevýhodou je nutnost p°ipravit test pro kaºdého studenta individuáln¥. Nejedná se pouze o vygenerování jiného QR kódu na test, ale i jistou korekci, £i obm¥nu otázek. Otázky je pot°eba m¥nit
4.3. IDENTIFIKÁTOR STUDENTA
23
Obrázek 4.6: Hlavi£ka testu, který byl vygenerován pro konkrétního studenta
p°edev²ím z d·vodu nepoctivosti student·. Tím vzniká velké mnoºství r·zných test· a sniºuje komfort opravování.
4.3.7 Test s lepícím QR kódem Posledním typem identikátoru, který budu testovat, je lepící QR kód. Kaºdému studentovi bude p°ed za£átkem testu rozdán identikátor vyti²t¥ný na samolepce. Identikátor obsahuje identika£ní £íslo zakódované v QR kódu a jméno p°íslu²ného studenta. Identikátor bude mít následující strukturu 4.7.
Obrázek 4.7: Identikátor studenta v QR kódu
Tento identikátor se následn¥ nalepí na vyzna£ené místo v hlavi£ce testu, která vypadá následujícím zp·sobem 4.8.
Obrázek 4.8: Hlavi£ka testu p°ipravená pro nalepení identikátoru studenta
Tento typ identikátoru p°ejímá výhody testu generovaného p°ímo na jméno a odbourává n¥které jeho nedostatky. Díky QR kódu nám tento typ identikátoru stále nabízí vysokou £itelnost. Není zde jiº nutnost generovat velké mnoºství test·, nebo´ studenty m·ºeme jednodu²e rozd¥lit do skupin a pro kaºdou skupinu vygenerujeme pouze jednu verzi testu. Jistou nevýhodu vidím v distribuci identikátor· mezi studenty. Identikátory se musí
24
KAPITOLA 4. REALIZACE
vytisknout na samolepky, následn¥ rozst°ihat a rozdat student·m. Tato rutina bude u£itele zdrºovat a mohla by i n¥které odradit.
4.4 U£ení Tesseract-OCR novému stylu písma Jelikoº jsem navrhl vlastní font písma, musím najít zp·sob, jak tento font rozpoznávat. Východisko jsem nalezl v systému Tesseract-OCR [9]. Tesseract-OCR nabízí moºnost nau£it vlastní klasikátor, který se posléze pouºije k rozpoznávání nového jazyka nebo písma. V²echny nástroje, které k nau£ení nového klasikátoru pot°ebujeme, jsou sou£ástí standardní instalace. Postup u£ení nového klasikátoru, které zde popisuji, je shrnutí z ociálního
4
návodu, který lze nalézt na stránkách projektu . Postup nau£ení nového jazyka se bude vztahovat k verzi Tesseract 3.00. Jako první musíme vytvo°it trénovací obrázek. Tento obrázek musí obsahovat v²echny znaky, které budeme chtít rozpoznávat. Kaºdý znak by m¥l být zastoupen n¥kolikrát. Takto vytvo°ený obrázek je pot°eba uloºit do formátu TIFF. Kdyº máme vytvo°ený trénovací obrázek, p°ichází £asov¥ nejnáro£n¥j²í fáze celého u£ícího procesu. Pot°ebujeme vytvo°it takzvaný box le. Jedná se o textový soubor, kde se na kaºdém °ádku nachází znak následován p¥ticí £ísel.
s p r i
734 753 779 799
494 486 494 494
751 776 796 810
519 518 518 527
0 0 0 0
Úvodní znak reprezentuje konkrétní znak, který se nachází na pozici popsané pomocí p¥tice £ísel. První £tve°ice £ísel popisuje obdélník, kde se znak nachází. ísla udávají sou°adnice levé, spodní, pravé a horní hrany (v pixelech), v tomto po°adí. Poslední £íslo udává, na které stránce se znak nachází. Je pot°eba si uv¥domit, ºe sou°adnice [0,0] jsou v dolním levém rohu. Box le vytvo°íme pomocí následujícího p°íkazu:
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox Takto vytvo°ený box le musíme ru£n¥ zkontrolovat, nebo´ p°i rozpoznávání mohlo dojít k chyb¥. Jelikoº vytvá°íme klasikátor pro nový font, musíme po£ítat s tím, ºe box le bude obsahovat hodn¥ chyb. V editaci box lu nám m·ºe pomoci n¥která z následujících aplikací:
5
6 nebo pytesseracttrainer7 .
QT Box Editor , moshPyTT
Kdyº jsme spokojeni s box lem, m·ºeme spustit trénovací proces následujícím p°íkazem: 4
tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] nobatch box.train Pokud p°i trénování nenastanou ºádné chyby, m·ºeme pokra£ovat dal²ím krokem. Pokud se chyby objeví, musíme box le opravit a zkusit natrénovat znovu. V dal²ím kroku extrahujeme z box lu v²echny znaky, které se tam vyskytují. M·ºeme pouºít ulitu unicharset_extractor:
unicharset_extractor lang.fontname.exp0.box lang.fontname.exp1.box Nyní musíme slou£it v²echna data dohromady. K tomu nám poslouºí následující dva p°íkazy:
mftraining -U unicharset -O lang.unicharset lang.fontname.exp0.tr lang.fontname.exp1.tr cntraining lang.fontname.exp0.tr lang.fontname.exp1.tr Tím máme vytvo°ené v²echny soubory, které budeme pot°ebovat, a sta£í nám je pouze zkombinovat dohromady. P°ejmenujeme v²echny soubory tak, aby za£ínaly prexem lang. (ozna£ení nov¥ nau£eného jazyka). Pro zkombinování pouºijeme následující p°íkaz.
combine_tessdata lang. Kone£n¥ máme vytvo°ený klasikátor pro nový font a následujícím p°íkazem ho m·ºeme vyzkou²et.
tesseract image.tif output -l lang
26
KAPITOLA 4. REALIZACE
Kapitola 5
Implementace Tato kapitola popisuje pouze st¥ºejní £ásti celé implementace. Je £len¥na do °ady balí£k·, jejichº význam se zde pokusím p°iblíºit. Celá aplikace je napsaná v programovacím jazyku Java. V¥t²í £ást je napsána v klasické Java SE, pouze webové rozhraní bylo implementováno v Jav¥ EE. Celý vývoj probíhal na OS Linux.
5.1 Komponenty systému Celý systém je rozd¥len do £ty° základních balí£k·. Tyto balí£ky jsou communication, entities, recognizer a web. Strukturu aplikace znázor¬uje následující obrázek 5.1.
Obrázek 5.1: Struktura navrhované aplikace
27
28
KAPITOLA 5. IMPLEMENTACE
5.1.1 Balí£ek communication T°ídy v tomto balí£ku se starají o komunikaci s okolím. Dá se zde volit mezi lokální databází (vyuºívána k testování) a komunikací p°es webové sluºby. Komunikace pomocí webových sluºeb je popsána v záv¥ru této kapitoly 5.3.
5.1.2 Balí£ek entities Nacházejí se zde podp·rné t°ídy pro komunikaci s databází.
5.1.3 Balí£ek web Zde se nacházejí t°ídy umoº¬ující webovou prezentaci. Vytvo°it rozsáhlé uºivatelské rozhraní nebylo hlavním cílem této práce, a proto jsou zde pouze základní funkce pro kontrolu a správu aplikace. Uºivatelské rozhraní bude popsáno v samostatné p°íloze B.
5.1.4 Balí£ek recognizer V tomto balí£ku se nachází vlastní jádro celé aplikace. T°ídy v tomto balí£ku se starají o samotné rozpoznávání digitalizovaného testu. Za zmínku stojí t°ída Hough.java, z balí£ku calibrationFinder. Tato t°ída se stará o nalezení a identikování kalibra£ních zna£ek. T°ída je navrºena tak, aby dokázala dopo£ítat jednu kalibra£ní zna£ku, která nebyla nalezena pomocí Houghovy transformace. Podle vzájemné polohy nalezených kalibra£ních zna£ek spo£ítá nato£ení testu. V balí£cích myFontRecognizer, qrDecode a textRecognizer se nacházejí t°ídy zaji²´ující p°e£tení konkrétního identikátoru. V balí£ku sliser jsou t°ídy, které se postarají o extrakci d·leºitých prvk· formulá°e. Nalezení jednotlivých prvk· probíhá pomocí relativních pozic ve formulá°i. Kaºdý prvek formulá°e je pozicován relativn¥ ke kalibra£ním zna£kám. Proto pro extrakci prvk· z formulá°e pot°ebujeme znát pozice kalibra£ních zna£ek.
5.2 OpenCV v jazyce Java Jak jsem jiº zmínil v kapitole 3.2.1, OpenCV je knihovna napsaná v C/C++. Díky její vysoké oblib¥ vznikla °ada wrapper· i do jiných programovacích jazyk· jako je nap°íklad C#, Python, Ruby nebo Java. Pro Javu existuje hned n¥kolik r·zných wrapper·. P°i rozhodování, který wrapper pouºiji, jsem volil mezi následujícími dv¥ma kandidáty.
5.3. KOMUNIKACE
29
5.2.1 OPENCV Processing and Java Library Tento wrapper je dílem Stéphana Cousota a Douglase Edric Stanleyho z École Supérieure d'Art d'Aix-en-Provence [30]. Je ²í°en pod svobodnou licencí, ale bohuºel není dále vyvíjen.
1
Je dostupná verze, která je kompatibilní s OpenCV 1.0 , dnes je v²ak OpenCV ve verzi 2.2, která není tímto wrapperem podporována.
5.2.2 JavaCV Za tímto projektem stojí Samuel Audet [12], £len Okutomi & Tanaka Laboratory, Tokyo Institute of Technology. Tento wrapper se neustále vyvíjí a poskytuje nejenom podporu pro jazyk Java, ale zp°ístup¬uje OpenCV i pro platformu Android. Kv·li neustálému vývoji, vysoké podpo°e a dobré dokumentaci jsem zvolil pro svou práci práv¥ tento wrapper. Ve své práci vyuºívám verzi spjatou s OpenCV 2.1. Tato verze JavaCV pouºívá k mapování C-£kovských funkcí knihovnu JNA. Kv·li chyb¥ v JNA je pot°eba zkompilovat OpenCV bez podpory SSE instrukcí, jinak program nebude fungovat korektn¥. Zp°ístupn¥ní OpenCV je poté velice jednoduché. Sta£í, aby program m¥l p°ístup k JAR archiv·m jna.jar a javacv.jar. P°i pouºití v aplika£ním serveru Glasssh je pot°eba tyto soubory serveru poskytnout. To zajistíme nahráním soubor· do adresá°e lib/ (tím poskytneme knihovny v²em doménám v aplika£ním serveru), nebo soubory nahrajeme do konkrétní domény domena/lib/ext (k t¥mto soubor·m budeme mít p°ístup pouze z konkrétní domény). To nám zajistí na£tení soubor· jiº p°i startu aplika£ního serveru, nikoli aº p°i deploymentu aplikace.
5.3 Komunikace Komunikace mezi jednotlivými £ástmi systému (generátor test· [19], Scribbler [16], import dat z KOSu [21]) bude zprost°edkována p°es prost°edníka. Implementace tohoto komunika£ního mostu je sou£ástí diplomové práce Lu¤ka Chmurovského [15]. Bylo rozhodnuto, ºe komunikace bude postavena na webových sluºbách (web services). Konkrétn¥ byla vybrána sluºba SOAP. Idea tohoto návrhu je taková, ºe prost°edník bude mít k dispozici ve²kerá pot°ebná data, která bude poskytovat ostatním modul·m. Kaºdý modul tedy bude komunikovat pouze s prost°edníkem, který bude schopen na ve²keré dotazy odpov¥d¥t. Aby prost°edník m¥l ve²kerá pot°ebná data, je zapot°ebí, aby mu je jednotlivé aplikace také poskytovaly. Komunikace tedy bude probíhat v obou sm¥rech. Aplikace budou jednak na server nahrávat data, která jsou jejich výsledkem, za druhé budou po serveru poºadovat data, která tam nahrály ostatní aplikace. Prost°edník bude poskytovat ve²keré webové sluºby, které budou aplikace pouze vyuºívat. 1
Datum vydání 24. 5. 2007
30
KAPITOLA 5. IMPLEMENTACE
5.3.1 SOAP SOAP [29] je textov¥ orientovaný protokol, který je ur£ený pro vým¥nu strukturovaných dat. Je zaloºený na formátu XML. Z toho hned plyne n¥kolik jeho vlastností. P°edev²ím je nezávislý na prost°edí (opera£ní systém, programovací jazyk), ale kv·li nutnosti pársovat XML soubor dochází ke ztrát¥ výkonu. SOAP zpráva je v¥t²inou posílána p°es HTTP protokol. HTTP protokol je v²eobecn¥ ²iroce podporován a nedochází k potíºím na rewallech. SOAP zpráva se skládá ze t°í £ástí. SOAP Envelope obsahuje denici XML namespace a pravidla pro dekódování zprávy. V SOAP Header se nacházejí atributy a autentizace uºivatele. V SOAP Body jsou samotná serializovaná data. Jak jsem jiº zmínil SOAP je textov¥ zaloºený protokol. Umoº¬uje nám v²ak p°ená²et, jak jednoduchá data, samostatné °et¥zce, tak i sloºit¥j²í datové struktury. Rád bych zmínil moºnost p°enosu objekt·, ale i binárních dat. Binární data, v na²em p°ípad¥ obrázky, se zakódují do formátu base64, který se následn¥ p°enese p°es sí´, kde ho p°íjemce m·ºe rozkódovat. Pouºití webové sluºby SOAP je v programovacím jazyce Java velice jednoduché. Pro programování pouºívám vývojové prost°edí NetBeans, které se postará o vygenerování v¥t²iny kódu. Jediné, co je k vygenerování klienta webové sluºby pot°eba, je popis webové sluºby v jazyce WSDL. Ve WSDL souboru je uloºen popis webové sluºby. Nacházejí se zde názvy metod, které jsou p°es webovou sluºbu dostupné, jejich parametry i návratové hodnoty. WSDL soubor m·ºe vypadat následujícím zp·sobem 5.2. Tato webová sluºba nabízí pouze jednu metodu getDatum(), bez parametr· a návratovou hodnotu tvo°í textový °et¥zec. Kód WSDL souboru a SOAP komunikace je p°evzato z diplomové práce Lu¤ka Chmurovského [15]. Samotná SOAP komunikace probíhá následujícím zp·sobem. Klient po²le dotaz na webovou sluºbu, ta poºadavek zpracuje a klientovi vrátí poºadovanou odpov¥¤. XML soubory, které se p°i komunikaci mezi klientem a webovou sluºbou vym¥¬ují, mají následující strukturu. Je op¥t pouºit p°íklad s dotazem na aktuální £as. Klient posílá poºadavek na funkci getDatum 5.3 a od webové sluºby je mu vrácena odpov¥¤ s aktuálním £asem 5.4.
5.3. KOMUNIKACE
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" name="myDefinitionName" targetNamespace="myNamespace" xmlns:tns="myNamespace" xmlns:impl="myNamespace" xmlns:xsd1="myNamespace" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <portType name="myDefinitionNamePortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <soap:operation soapAction= "urn:myDefinitionName#myDefinitionNameServer#getDatum"/> <soap:body use="encoded" namespace="myNamespace" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <message name="GetDatumRequest"/> <message name="GetDatumResponse"> <part name="return" type="xsd:string"/> <service name="myDefinitionNameService"> <port name="myDefinitionNamePort" binding="tns:myDefinitionNameBinding"> <soap:address location= "http://plugin.jagu.cz/Demo/Priklad_4/server.php"/> Obrázek 5.2: Struktura WSDL souboru s jednou funkcí getDatum
Testování V této kapitole se budu zabývat testy, které doprovázely celý vývoj systému. Vzhledem k zna£nému vyuºívání po£íta£ového vid¥ní, jsme s vedoucím práce rozhodli, ºe testování povedeme moºná trochu netypickou metodou. Nebudu zde popisovat výsledky Unit test·, ale spí²e se zam¥°ím na vyhodnocení jednotlivých metod a technik, které jsem v souvislosti s touto prací navrhl. V této kapitole se do£tete, jak dopadla lokalizace kalibra£ních zna£ek, rozpoznávání identikátoru testu a uvedu zde výsledky rozpoznávání v²ech mnou navrºených identikátor· studenta.
6.1 Lokalizace kalibra£ních zna£ek K nalezení kalibra£ních zna£ek jsem pouºíval dv¥ metody. Jedná se konkrétn¥ o metodu Viola-Jones a Houghovu transformaci. Hodnotil jsem p°edev²ím po£ty kalibra£ních zna£ek, které byly správn¥ nalezeny, chybná ozna£ení místa nálezu a zna£ky, které byly úpln¥ minuty. Druhým parametrem, který jsem m¥°il, byla rychlost nalezení zna£ek. Testování probíhalo na mnoºin¥ padesáti test·. Tyto testy byly vytvo°eny pomocí kopírky, coº vedlo k drobnému zkreslení kalibra£ních zna£ek. Jedna kalibra£ní zna£ka (v pravém dolním rohu) dokonce nebyla vytisknuta celá (v této testovací mnoºin¥ se nachází pouze její 2/3). Pro testování jsem proti sob¥ postavil t°i kandidáty. Jednalo se o metodu Viola-Jones, a dv¥ implementace Houghovy transformace. První z Houghových transformací nebyla nijak upravena, u druhé jsem provedl n¥kolik zm¥n, abych docílil lep²ích výsledk·. Jedná se o eliminování ²patn¥ identikovaných kalibra£ních zna£ek pomocí region· zájmu (pokud je nalezena kalibra£ní zna£ka, zkontroluje se, zda spadá do n¥kterého regionu, jinak je ignorována) a moºnosti dopo£ítání jedné kalibra£ní zna£ky. Kaºdý test obsahuje p¥t kalibra£ních zna£ek. Celkem by tedy m¥lo být nalezeno 250 kalibra£ních zna£ek. Výsledky testu jsou sepsány v následující tabulce 6.1. Jak je z tabulky na první pohled patrné, Houghova transformace p°ed£í metodu ViolaJones v kaºdém ohledu. Nejenom, ºe nalezne tém¥° v²echny kalibra£ní zna£ky (v upravené verzi dokonce v²echny), ale generuje i mén¥ ²patn¥ identikovaných zna£ek, a to v²e v lep²ím £ase. Upravená Houghova transformace nalezla správn¥ v²echny kalibra£ní zna£ky a ozna£ila pouze £ty°i místa ²patn¥ (jednalo se o místo uprost°ed záhlaví stránky, kde je o£ekávána
33
34
KAPITOLA 6. TESTOVÁNÍ
Upravená
Houghova
Viola-Jones
Houghova
transformace Po£et správn¥
transformace
243 / 4,86
249 / 4,98
250 / 5
131 / 2,62
50 / 1
4 / 0,08
7 / 0,14
1 / 0,02
0 / 0
127997 ms / 2559 ms
71097 ms / 1421 ms
71813 ms / 1436 ms
nalezených zna£ek celkem / na test Po£et ²patn¥ ozna£ených zna£ek celkem / na test Po£et nenalezených zna£ek celkem / na test Doba hledání celkem / na test
Tabulka 6.1: Výsledky lokalizace kalibra£ních zna£ek
kalibra£ní zna£ka v p°ípad¥ oto£ení testu o 180 stup¬·). patn¥ ozna£ená místa, ale nem¥la vliv na dal²í pr·b¥h programu. Mé doporu£ení je z°ejmé. Pro hledání t¥chto kalibra£ních zna£ek ur£it¥ pouºívat Houghovu transformaci.
6.2 Identikátor testu K identikaci testu pouºívám QR kód. Jak jsem jiº zmínil v realizaci 4.2.1 budu testovat n¥kolik typ· identikátor·. Ve dvou p°ípadech se jedná o £íselný identikátor, v t°etím p°ípad¥ k identikaci pouºívám textový °et¥zec. Testování jsem provád¥l na stejné mnoºin¥ padesáti test· jako v p°edchozím p°ípad¥. Nyní se v²ak projevilo nakopírování test· mnohem výrazn¥ji. P°i kopírování testu dochází k nezanedbatelnému zdeformování QR kódu. Jednotlivým £tvere£k·m, z kterých se QR kód skládá, se zakulacují rohy a p°ipomínají elipsy. Dal²ím neduhem kopírek je nedostate£ná p°esnost tisku, která se projevuje mírným ²umem a slíváním £tvere£k· dohromady. P°i prvním pr·chodu bylo správn¥ rozpoznáno 42 identikátor· a zbylých 8 nebylo rozpoznáno v·bec. Jelikoº rozeznání identikátoru testu je k dal²ímu zpracování nezbytné, jsou tyto výsledky pom¥rn¥ neuspokojivé. Problém s rozpoznáváním se mi poda°ilo vy°e²it zvý²ením kontrastu QR kódu 6.1. Po zvý²ení kontrastu jiº bylo rozpoznávání 100%. Zjistil jsem, ºe nezáleºí na °et¥zci, který je napsán v QR kódu, nebo´ v²echny identikátory byly správn¥ rozpoznány. Jediné, kdy by mohlo dojít k problému, je p°íli² velká délka identikátoru. Doporu£ení pro maximální délku identikátoru je dvacet znak·.
6.3. IDENTIFIKACE STUDENTA
(a)
35
(b)
Obrázek 6.1: QR kódy p°ed a po zvý²ení kontrastu
6.3 Identikace studenta V následující £ásti budu testovat jednotlivé typy identikátor· student· z hlediska správnosti rozpoznání. Jak jsem jiº zmínil v kapitole realizace 4.3, testuji ²est typ· zápisu identikátoru studenta. Testování probíhalo ve dvou cvi£eních z p°edm¥tu Grafové algoritmy a základy teorie sloºitosti (BI-GRA). Od kaºdého typu identikátoru jsem m¥l p°ibliºn¥ 30 vzork· k testování.
6.3.1 Ru£n¥ psané uºivatelské jméno Pro tento typ identikátoru jsem m¥l k dispozici 30 vzork· od student·. Jelikoº uºivatelé pí²í svoje uºivatelské jméno do p°edem p°ipravené tabulky, mohl jsem si dovolit vypln¥né uºivatelské jméno rozpoznávat znak po znaku. Na rozpoznávání tohoto typu identikátoru byl nasazen systém OCRopus. OCRopus se sice chlubí moºností rozpoznávat i ru£n¥ psané písmo, ale výsledky rozpoznávání nejsou p°íli² p°esv¥d£ivé. Ani jeden identikátor nebyl rozpoznán celý. Následující tabulka 6.2 ukazuje £etnostní zastoupení rozpoznaných znak·. Z tabulky 6.2 je patrné, ºe rozpoznávání není p°íli² p°esné. Nejvy²²í £etnost pozorujeme u p¥ti rozpoznaných znak·, coº odpovídá 62,5% správn¥ rozpoznaných znak·. Samo o sob¥ by toto rozpoznávání zcela selhalo. Jelikoº p°edem známe uºivatelská jména student·, kte°í mohli tento test psát, razantn¥ se nám zvý²í pravd¥podobnost správného p°i°azení testu ke konkrétnímu studentovi. Na testovací mnoºin¥ uºivatelských jmen jsem provedl test, abych zjistil, kolik mohu vynechat znak·, neº objevím první shodné pod°et¥zce. Výsledek m¥ mile p°ekvapil. Ukázalo se, ºe mohu vynechat £ty°i znaky, neº dostanu první shodu. Je pravda, ºe jsem tento test provád¥l pouze na mnoºin¥ 30 uºivatelských jmen. S rostoucím po£tem uºivatelských jmen by se jist¥ shody ukázaly mnohem d°íve. Metodou porovnávání rozpoznaného výsledku s databází o£ekávaných °et¥zc· se dá do ur£ité míry kompenzovat nep°esnost rozpoznávání. Po nasazení algoritmu na porovnávání se mi poda°ilo správn¥ p°i°adit 28 z 30 test· ke konkrétnímu studentovi. Zbylé dva testy, které se nepoda°ilo jednozna£n¥ p°i°adit, byly testy pouze s jedním rozpoznaným znakem identikátoru. Z tohoto pozorování vyplývá, ºe sta£í rozpoznat jen £ást identikátoru, abychom byli schopni jednozna£n¥ p°i°adit test ke studentovi. Nedá se na to ov²em spoléhat vºdy. Pokud
36
KAPITOLA 6. TESTOVÁNÍ
Po£et správn¥ rozpoznaných znak·
Po£et rozpoznaných identikátor· pro daný po£et znak·
8
0
7
2
6
1
5
11
4
5
3
6
2
3
1
2
0
0
a
a Uºivatelské jméno studenta má 7-8 znak· (7 znakové uºivatelské jméno se vyskytovalo pouze u 1 z 30 student·)
Tabulka 6.2: Po£et rozpoznaných znak· z identikátor·
budeme mít v¥t²í mnoºinu potenciálních autor·, budeme pot°ebovat rozpoznat více znak· identikátoru.
Ukázka rozpoznaných jmen je na následujícím obrázku 6.2. Výsledky jsou ve tvaru: rozpoznaný °et¥zec (originální °et¥zec / poda°ilo se správn¥ p°i°adit studenta k testu). Pokud znak nebyl rozpoznán, byl nahrazen znakem -. erven¥ jsou vyzna£eny znaky, které byly rozpoznány správn¥.
Východiskem ze ²patných výsledk· rozpoznávání tohoto typu identikátoru by bylo poºádat studenty, aby vypl¬ovali své jméno podle vzoru, který známe nap°íklad z formulá°· na
1
s£ítání lidu . Moºná lep²ím zp·sobem by bylo uvaºovat o vyuºití n¥kterého komer£ního systému na rozpoznávání ru£n¥ psaného písma.
1
http://scitanilidu.cz/
6.3. IDENTIFIKACE STUDENTA
37
6.3.2 Ru£n¥ psané uºivatelské £íslo Pro tento typ identikátoru jsem m¥l 21 testovacích vzork·. V tomto p°ípad¥ pí²í uºivatelé sv·j identikátor do p°edem p°ipravených ráme£k·, coº mi dovoluje, jako v p°edchozím p°ípad¥, rozeznávat kaºdý znak zvlá²´. Na rozpoznávání £íselného identikátoru jsem nasadil dva systémy. Prvním z nich je op¥t OCRopus a druhým je Numrecognition, který je ur£en výhradn¥ k rozpoznávání £ísel. Porovnání t¥chto dvou systém· shrnuje následující tabulka 6.3.
Tabulka 6.3: Výsledky rozpoznávání £íselného identikátoru
Z tabulky je patrné, ºe rozpoznávání tohoto typu identikátoru úpln¥ selhalo. Bohuºel zde neexistují opravné mechanismy, které jsem popsal u p°edchozího typu identikátoru. Tím pádem, pokud budeme identikátor rozpoznávat systémy, které jsem testoval, nemohu tento identikátor k nasazení doporu£it. Na následujícím obrázku 6.3 m·ºete vid¥t, jak rozpoznávání konkrétních identikátor· dopadlo. První °et¥zec pod obrázkem reprezentuje rozpoznané znaky systémem OCRopus, druhý je výsledkem systému Numrecognition. Nerozpoznaný znak je op¥t nahrazen znakem -. erven¥ jsou vyzna£eny správn¥ rozpoznané £íslovky.
(a)
−O
/ 70
(b) 29 / 28
(c) 03 / 01
(d)
−−
/ 93
(e) O5 / 05
(f) O4 / 07
Obrázek 6.3: Ru£n¥ vypln¥ná uºivatelská £ísla
6.3.3 Uºivatelské jméno napsané podle vzoru Tento identikátor studenti vypl¬ují obtahováním p°edem p°ipravené m°íºky podle vzoru, který naleznou v záhlaví testu. Takto vypl¬ují své uºivatelské jméno. Budu tedy moci vyuºít porovnávání s databází, kterou jsem popsal u ru£n¥ psaného uºivatelského jména.
38
KAPITOLA 6. TESTOVÁNÍ
Od tohoto identikátoru jsem o£ekával vysokou pravd¥podobnost rozpoznání, nebo´ uºivatelé vypl¬ují své uºivatelské jméno podle vzoru, £ímº se sniºuje variance jednotlivých znak·. Toto mi potvrdily i testy, které jsem provedl p°ed samotným nasazením testu. Vyplnil jsem hlavi£ku testu sedmi náhodn¥ vybranými jmény a pozoroval, jak rozpoznávání dopadne. Výsledky rozpoznávání jsem byl mile p°ekvapen. Jeden identikátor byl rozpoznán bezchybn¥ a u ostatních byla odchylka od skute£nosti velice malá. Kdyº tento p°edb¥ºný test shrnu, bylo správn¥ rozpoznáno 80% znak· (maximum 100%, minimum 62,5%). Pokud by se zapojilo porovnávání s databází, bylo by párování se studenty tém¥° stoprocentní. Dva p°íklady tohoto testu jsou znázorn¥ny na následujícím obrázku 6.4. erven¥ jsou op¥t znárodn¥ny správn¥ rozpoznané znaky.
(a) BERANM16 (beranm16)
(b) ZBRAHSWA (zdrahsva)
Obrázek 6.4: Test psaní uºivatelských jmen podle vzoru
Nyní se podíváme na výsledky ostrého testu. K testování jsem m¥l k dispozici 29 vypln¥ných test·. Ukázalo se, ºe ne v²ichni studenti správn¥ pochopili, jak identikátor vyplnit. Z 29 student· jich 6 vyplnilo identikátor tiskacími písmeny. Tyto testy jsem tedy musel vy°adit a na skute£né testování mi zbylo 23 správn¥ vypln¥ných test·. I p°es výborné výsledky v p°ípravném testu, ostré testování úpln¥ selhalo. ádný identikátor nebyl rozeznán celý, pouze u jediného identikátoru bylo rozeznáno ²est znak·. Výsledky shrnuje následující tabulka 6.4. Po£et rozeznaných
Po£et rozeznaných
znak·
identikátor·
8
0
7
0
6
1
5
1
4
3
3
7
2
1
1
5
0
5
Tabulka 6.4: Po£et rozpoznaných znak· z identikátor·
Jak je z tabulky 6.4 patrné, rozeznávání je velice slabé. U p¥ti identikátor· nebyl rozeznán dokonce ani jeden znak. Ani porovnávání s databází uºivatelských jmen by výsledek nezachránilo, nebo´ tém¥° u poloviny identikátor· nemáme dostatek znak· pro úsp¥²né porovnávání.
6.3. IDENTIFIKACE STUDENTA
39
Ukázka vypln¥ných a rozpoznaných identikátor· je na následujícím obrázku 6.5. Správn¥ rozpoznané znaky jsou op¥t zvýrazn¥ny £ervenou barvou.
(a) BAE3A28M (babjatom)
(d) S22RXV2E (staryvac)
(b)
−8HQN28M
(bohuntom)
(c) EHMEG8NB (chmelond)
(e) ZBEB2M2R (zachomar)
(f) Z2E3BN3 (zakjan3)
Obrázek 6.5: Vypln¥ná uºivatelská jména podle vzoru Moºná by stálo za to zkusit p°eu£it klasikátor Tesseract-OCR podle písmen, která vypl¬ovali studenti a pozorovat, zda se rozpoznávání nezlep²í. Bohuºel momentáln¥ nemohu ani tento identikátor ozna£it za spolehlivý.
6.3.4 Identika£ní £íslo psané podle vzoru Tento typ identikátoru jsem m¥l k dispozici od 28 student·. V tomto p°ípad¥ jiº studenti pochopili, jak identikátor vyplnit a proto jsem nemusel ºádný test vy°adit. Ukázalo se v²ak, ºe studenti m¥li problém s psaním znaku 0 6.6a, místo kterého p¥t ze ²esti student· napsalo znak O 6.6b.
(a) znak 0
(b) znak O
Obrázek 6.6: Rozdíl mezi znakem 0 a O
Rozpoznávání tohoto identikátoru dopadlo katastrofáln¥. Ani jeden identikátor nebyl rozpoznán. Dokonce nebyl správn¥ rozpoznán ani jeden jediný znak. Tento typ identikátoru tedy nelze v·bec pouºít.
6.3.5 Test na jméno K testování tohoto typu identikátoru jsem m¥l 26 test·. Kaºdý test byl vytisknut pro konkrétního studenta, jehoº QR kód se nacházel v pravé £ásti hlavi£ky testu. Studenti tedy do hlavi£ky vypl¬ovali pouze pozici (místo, kde se p°i psaní testu nacházeli; pozice by se rozpoznávala pomocí systému OCRopus, ale není pro nás momentáln¥ tak d·leºitá). Výsledky rozpoznávání tohoto typu identikátoru dopadly podle o£ekávání nejlépe. Ve v²ech p°ípadech byl správn¥ rozpoznán jak identikátor testu, tak i identikátor studenta. P°i°azení testu ke studentovi bylo bezchybné.
40
KAPITOLA 6. TESTOVÁNÍ
Tento typ identikace mohu v°ele doporu£it. Je v²ak t°eba po£ítat s tím, ºe bude vznikat velké mnoºství test·, které je pot°eba individuáln¥ tisknout a distribuovat.
6.3.6 Test s nalepovacím QR kódem Tohoto testu se zú£astnilo 26 student·, tudíº mám k dispozici 26 vypln¥ných test·. Tento test m¥l probíhat tím zp·sobem, ºe identikátory se vytisknou na samolepky, které studenti na vyzna£ené místo nalepí. Nakonec se identikátor vytiskl na papír a studenti ho na test p°ipevnili pomocí lepidla. Ne vºdy se student·m poda°ilo nalepit identikátor rovn¥, ale s tím si £te£ka QR kód· dokáºe hrav¥ poradit. Od tohoto testu se o£ekávaly podobné výsledy jako u testu na jméno. Navíc by se odbourala nutnost generovat kaºdému studentovi test zvlá²´. Ov²em tento test nám velice zkomplikovala nekvalitní inkoustová tiskárna, na které byly testy i samotné identikátory tisknuty. U identikace testu 6.2 na za£átku této kapitoly jsem se chlubil perfektním £tením QR kód· (do testu bylo náhodn¥ vybráno 50 test· z 1. aº 5. testu). Ov²em ²patný tisk a jeho následné rozkopírování se na rozpoznávání identikátoru testu neblaze projevilo. V n¥kterých p°ípadech nepomohlo ani zvý²ení kontrastu, které drobné chyby tisku zamaskuje. Následující tabulka 6.5 ukazuje, kolik bylo rozpoznáno jednotlivých identikátor·.
Identikátor testu
Po£et rozpoznaných / celkem identikátor·
5 / 10
0 / 6
9 / 10
Tabulka 6.5: Ukázka identikátor· test· a jejich úsp¥²nost £tení QR kódy s identikátory student· byly rozpoznávány s v¥t²í p°esností. Zde nebyly rozeznány pouze £ty°i identikátory a to z d·vodu p°íli²ného po²kození jiº p°i tisku. Na obrázku 6.7 jsou dva identikátory. První z nich 6.7a nebyl rozeznán. Druhý 6.7b rozeznán byl, i p°es to, ºe ho student nalepil obrácen¥ (rotace 180 stup¬·) a do QR kódu n¥co p°imaloval. Identikaci pomocí QR kód· mohu doporu£it, ale je pot°eba dát si pozor na kvalitu tisku. Ideální je tisknout testy na laserové tiskárn¥ s rozli²ením 600 dpi. Pop°ípad¥ na laserové
6.3. IDENTIFIKACE STUDENTA
41
(a)
(b)
Obrázek 6.7: P°íklad nalepených identikátor· na testu
tiskárn¥ vytisknout pouze jeden test a zbytek namnoºit pomocí kvalitní kopírky.
6.3.7 Porovnání typ· identikátor· V p°edchozích n¥kolika odstavcích bylo popsáno ²est r·zných typ· identikátor·. P°i po£íta£ovém zpracování dosahovaly od 0% aº do 100% úsp¥²nosti p°i p°i°azení studenta ke konkrétnímu testu. Následující tabulka 6.6 shrnuje dosaºené výsledky jednotlivých typ· identikátor·.
Psané jméno P°i°azení
Psané £íslo (OCRopus)
Psané £íslo (Numrecognition)
Jméno
íslo
podle
podle
vzoru
vzoru
QR kód
0
4,7
23,8
0
0
100
P°i°azení
93,3
−
−
47,8
−
−
c
3900
1690
2250
1520
1500
1070
a
základní (%)
b zlep²ené (%) as (ms)
a Je brán v úvahu pouze test na jméno, nebo´ k tak zna£nému mechanickému po²kození, jako se tomu stalo u nalepovacího QR kódu, by nem¥lo docházet
b Jedná se o zlep²ení u identikátor·, které jsou na jméno, p°i porovnávání s databází c as pot°ebný na analyzování testu (rozpoznání identikátoru testu, identikátoru studenta, zápis výsledk· do databáze) Tabulka 6.6: Výsledky lokalizace kalibra£ních zna£ek
Nelze jednozna£n¥ °íci, který identikátor by se m¥l pouºívat. Identikátory s QR kódy vycházejí z tohoto testu nejlépe, ale ne vºdy je vhodné je pouºít. P°i tisku testu na jméno, je zapot°ebí generovat velké mnoºství r·zných test·, coº zahrnuje p°ípravu mnoha r·zných testových otázek. P°i pouºití nalepovacích QR kód· je pot°eba po£ítat s prací navíc, která zahrnuje vytisknutí a distribuci QR kód· mezi studenty. Velice dobrých výsled· dosahoval i test s ru£n¥ psaným uºivatelským jménem.
42
KAPITOLA 6. TESTOVÁNÍ
6.4 asová náro£nost rozpoznávání Rozpoznávání testu je pom¥rn¥ náro£ná úloha. Celková doba rozpoznávání je závislá na mnoºství operací, které se musí provést. Jako první se musí nalézt kalibra£ní zna£ky. Z tabulky 6.1 vidíme, ºe nalezení zna£ek pomocí Houghovy transformace trvá 1436 ms. Pokud je test výrazn¥ nato£en, musí dojít k jeho narovnání. Samotné narovnání testu trvá 2500 ms, ale je pot°eba je²t¥ nalézt kalibra£ní zna£ky, které p°i narovnávání zm¥nily svou polohu. Následuje samotné rozpoznávání testu. Z tabulky 6.6 vidíme, ºe rozpoznávání testu trvá 1070 3900 ms, v závislosti na zvoleném identikátoru. Zpracování testu s identikátorem v QR kódu tedy bude trvat: Bez oto£ení: 1436 + 1070 = 2506 ms S nato£ením: 1436 + 2500 + 1436 + 1070 = 6442 ms
Kapitola 7
Záv¥r V rámci této práce byl navrhnut a implementován systém, který se stará o identikaci digitalizovaných test·. Práce byla koncipována spí²e experimentáln¥. Kladla si za d·raz prozkoumat °adu moºností, které by se daly na poli zpracování test· pouºít.
7.1 Spln¥ní cíl· ze zadání V následujících n¥kolika bodech shrnu, do jaké míry byly spln¥ny jednotlivé poºadavky ze zadání bakalá°ské práce. 1. Vytvo°te ²ablonu testu vhodnou pro následnou digitalizaci. Pro tvorbu ²ablony pouºijte
AT X. L E V rámci této práce byla vytvo°ena ²ablona pro tvorbu test·, jejíº struktura byla pop-
AT X. Výhody a samotná struktura ²ablony je popsána v kapisána v sázecím systému L E tole 3.1.1.1. Generátor test· je jiº schopen bez problém· do této ²ablony testy vygenerovat. 2. Navrhn¥te postup zpracování digitalizovaného testu. Zam¥°te se na lokalizování d·leºitých prvk· testu: identikátor autora, identikátor testu, pozice. Tento bod ze zadání byl také spln¥n. Byly navrhnuty nové kalibra£ní zna£ky, které byly následn¥ lokalizovány pomocí Houghovy transformace. Jak jsem popsal v kapitole testování 6.1, byly nalezeny v²echny kalibra£ní zna£ky, které se na testu nacházely. Navíc bylo identikováno i n¥kolik míst, kde se zna£ky nenacházely, ale takto ozna£ená místa nem¥la na výsledek vliv. Podle pozice kalibra£ních zna£ek byla dopo£ítána pozice jednotlivých prvk· testu. 3. Navrhn¥te zp·sob rozpoznání identikátoru autora, identikátoru testu, pozice. K identikaci autora bylo navrºeno celkem ²est r·zných zp·sob·, které jsou popsány v kapitole 4.3. Pro identikaci testu byl zvolen QR kód. Jak bylo ukázáno v kapitole 6.2 identikátor testu byl s vysokou pravd¥podobností rozeznán. Pro tisk QR kódu je v²ak pot°eba volit kvalitní tiskárnu, nebo´ jinak výsledky rozpoznání nemusí být p°esv¥d£ivé viz. kapitola 6.3.6. Na rozpoznávání pozice nebyl kladen takový d·raz, ale probíhalo by stejným zp·soben, jako rozpoznávání identikátoru studenta.
43
44
KAPITOLA 7. ZÁV R
4. P°i°a¤te s rozumnou pravd¥podobností test ke konkrétnímu studentovi (mnoºina potenciálních autor· je známa). Z celkem ²esti navrºených identikátor·, tento bod splnily pouze t°i z nich. Jak je patrné z tabulky 6.6, vysokou pravd¥podobnost p°i°azení vykazovaly oba identikátory s QR kódy a p°ekvapiv¥ i ru£n¥ psané uºivatelské jméno. U QR kód· (pokud byly vytisknuty kvalitn¥) bylo p°i°azení perfektní. U ru£n¥ psaného uºivatelského jména se pravd¥podobnost p°i°azení (na testovací mnoºin¥) pohybovala kolem 93%. Této vysoké pravd¥podobnosti p°i°azení bylo dosaºeno díky porovnávání rozpoznaných jmen s databází, kde se vyskytovala mnoºina potenciálních jmen autor·.
7.2 Doporu£ení pro volbu identikátoru autora Mé doporu£ení pro volbu identikátoru studenta je z výsledk· rozpoznávání z°ejmé. Tam, kde to p·jde, pouºívat QR kódy, a´ uº testy vytisknuté p°ímo na jméno, nebo nalepovat QR kódy p°ímo na test. P°i tisku QR kód·, jak jsem jiº n¥kolikrát zmi¬oval, je pot°eba zvolit kvalitní tiskárnu. Pokud nebude moºné pouºít QR kódy, není ²patnou volbou ani ru£n¥ psané uºivatelské jméno. Na testovací mnoºin¥ bylo zji²t¥no, ºe v²ichni studenti, kte°í napsali své uºivatelské jméno tiskacími písmeny, byli správn¥ do systému za°azeni. Do p°edm¥t· by se dal zavést motiva£ní systém. Ten by spo£íval v tom, ºe ti studenti, kte°í napí²í identikátor £iteln¥, by vid¥li výsledky testu okamºit¥ po opravení testu. Jinak by se výsledky dozv¥d¥li nap°íklad za 14 dní. Myslím si, ºe tato motivace by p°im¥la studenty psát své identikátory £iteln¥ a procento správn¥ p°i°azených test· by rapidn¥ stouplo.
7.3 Budoucnost Myslím si, ºe kaºdý systém má ambice do budoucna. Není tomu jinak ani u tohoto projektu. Jist¥ by se daly navrhnout je²t¥ dal²í identikátory nebo zvolit jiné systémy a pokusit se zvý²it pravd¥podobnost rozpoznání identikátor· popsaných v této práci. Jistou budoucnost bych vid¥l v roz²í°ení systému o podporu automatického vyhodnocení test·. Mohlo by se jednat nap°íklad o za²krtávací otázky, které by systém automaticky vyhodnotil a výsledky za°adil do systému.
Literatura [1] Hledání parametrického popisu objekt· pomocí Houghovy transformace, 2011.
Dos-
tupné z: . [2] Moodle, 2011. Dostupné z: . [3] MS Class Server, 2011. Dostupné z: . [4] Handwritten Number Recognition, 2011.
Dostupné z:
[11] AND L, J. Studentova berli£ka II- generátor test· a písemek. Bakalá°ská práce, KP FEL VUT, 2009. [12] AUDET, S. JavaCV, 2011. Dostupné z: . [13] BICIK, J. PREPARATION OF ON-LINE ASSESSMENTS. Diplomová práce, KP FEL VUT, 2006. Dostupné z:
2006dipl.pdf>.
[14] BRADSKI, G. KAEHLER, A.
Learning OpenCV.
O'Reilly Media, 1st edition, 2008.
In English. [15] CHMUROVSKÝ, L. Studentova Berli£ka III. Diplomová práce, KP FEL VUT, 2010. Dostupné z:
pdf>.
45
46
LITERATURA
[16] HNAUK, L. Studentova berli£ka IV. Bakalá°ská práce, KP FEL VUT, 2011. [17] HUNKA, J. Studentova Berli£ka II. Diplomová práce, KP FEL VUT, 2009. Dostupné z: . [18] KOTEK, P. Studentova berli£ka II - Automatické vyhodnocení test·. Bakalá°ská práce, KP FEL VUT, 2009. Dostupné z:
kotekpe2_2009bach.pdf>.
[19] KRAML, F. Studentova Berli£ka III - Generátor test· a písemek II. Bakalá°ská práce, KP FEL VUT, 2010. Dostupné z:
kramlfra_2010bach.pdf>.
[20] KRMÁ, P. QR kódy: kilobajty v malém obrázku, 2011. Dostupné z:
root.cz/clanky/qr-kody-kilobajty-v-malem-obrazku/>.
[21] LANGER, J. Studentova Berli£ka III - import dat z KOSu. Bakalá°ská práce, KPGI FEL VUT, 2011.
Dostupné z:
langeja1_2011bach.pdf>. [22] MONTABONE, S.
Instala£ní manuál Instalace této aplikace není triviální a zabere n¥jaký £as. V první °ad¥ je zapot°ebí nainstalovat Linux. Následuje instalace Javy ve verzi 1.6 a aplika£ního serveru, nejlépe GlassFish. Dále instalujeme knihovny pro po£íta£ové vid¥ní OpenCV [22] ve verzi 2.1. OpenCV je zapot°ebí zkompilovat bez podpory SSE a MMX instrukcí. V opa£ném p°ípad¥ by program nefungoval správn¥. Následuje instalace OCR systém· Tesseract-OCR ve verzi 3.0 a OCRopus. Do sloºky tessdata v adresá°i s instalací Tesseract-OCR je pot°eba nahrát soubor mu7.traineddata (obsahuje nau£ený klasikátor pro v této práci navrºený font písma; je k nalezení na p°iloºeném CD). Následuje instalace JAI (Java Advanced Imaging) ve verzi 1.1.2 nebo nov¥j²í.
A.1 Nastavení aplika£ního serveru GlassFish V nainstalovaném aplika£ním serveru je zapot°ebí provést n¥kolik zm¥n. Zm¥ny se týkají p°edev²ím zp°ístupn¥ní knihoven, které z programu volám. To se provede zkopírováním knihoven do adresá°e lib/ (tím poskytneme knihovny v²em doménám v aplika£ním serveru), nebo soubory nahrajeme do konkrétní domény domena/lib/ext (k t¥mto soubor·m budeme mít p°ístup pouze z konkrétní domény). Mezi knihovny, které takto musíme zkopírovat, pat°í jna.jar a javacv.jar pro podporu javovského wrapperu OpenCV, a knihovny ij.jar, joone-engine.jar a libnumrecognition.jar pro podporu knihovny na rozpoznávání £ísel.
A.3 Pouºité technologie Aplika£ní server: GlassFish v3.0.1 Java: 1.6.0_24, OpenJDK Po£íta£ové vid¥ní: OpenCV 2.1, JavaCV (2010-12-02) OCR systémy: Tesseract-OCR 3.00, OCRopus 0.3.1-3, Libnumrecognition 0.03 Práce s obrázky: JAI 1.1.2 te£ka QR kód·: qrcode 0.9
P°íloha B
Uºivatelská p°íru£ka Uºivatelské rozhraní je velice jednoduché a práce s ním je intuitivní. Úvodní obrazovka B.1 slouºí pouze jako rozcestník aplikace. Uºivatel má na výb¥r z n¥kolika moºností. M·ºe do systému nahrát nové digitalizované testy, procházet zpracované testy p°es °adu ltr· nebo se m·ºe podívat na jednotlivé studenty na cvi£eních. V²echny d·leºité vlastnosti aplikace budou v této kapitole rozebrány. Pro ukázku jednotlivých moºností jsem si vybral mnoºinu p¥ti test· s identikátorem studenta uloºeným v QR kódu.
Obrázek B.1: Úvodní obrazovka aplikace
B.1 Rozpoznat nové testy K rozpoznávání nových test· p°istoupíme tak, ºe v menu zvolíme poloºku Recognize. Na stránce B.2 se objeví formulá° s t°emi polí£ky. Do jednotlivých polí£ek formulá°e nastavíme cesty k adresá°·m podle následujícího pravidla. Do polí£ka Source Directory vyplníme cestu k adresá°i, kde se nacházejí nové testy p°ipravené ke zpracování. Output Directory ozna£uje adresá°, kam se uloºí zpracované testy. Zpracované testy jsou správn¥ nato£eny a jsou na nich znázorn¥ny nalezené kalibra£ní zna£ky. Do polí£ka Temporary Directory nastavíme cestu k adresá°i, který bude vyuºit pro ukládání do£asných soubor·. Do£asné soubory jsou na konci rozpoznávání kaºdého testu automaticky smazány. Pokud máme cesty k adresá°·m správn¥ nastaveny, zmá£kneme tla£ítko Recognize. Tím spustíme proces rozpoznávání.
49
50
PÍLOHA B. UIVATELSKÁ PÍRUKA
Obrázek B.2: Rozpoznávání nových test·
B.2 Zobrazení v²ech test· v systému Nyní jiº v systému máme zp°ístupn¥no na²ich p¥t test·. Ov¥°it si to m·ºeme pohledem na v²echny p°ístupné testy v systému. Z menu zvolíme poloºku All Tests, která nás p°esm¥ruje na následující stránku B.3, kde je výpis v²ech test· ze systému. První sloupe£ek z výpisu reprezentuje ID testu v systému. Druhý sloupe£ek nám ukazuje, co bylo rozeznáno z identikátoru studenta (v na²em p°ípad¥ je v QR kódu zakódováno dvojciferné £íslo, reprezentující identika£ní £íslo studenta). T°etí sloupe£ek znázor¬uje p°i°azeného studenta (uºivatelské jméno). tvrtý sloupe£ek reprezentuje p°i°azenou ²ablonu testu. Pátý nás informuje, zda byl test p°i°azen manuáln¥ (pokud byl test manuáln¥ p°i°azen objeví se zde YES). V posledním sloupe£ku se nachází odkaz pro editaci konkrétního testu. Pro pokra£ování zvolíme Edit this test u jednoho z test·.
Obrázek B.3: Zobrazení v²ech p°ístupných test· v systému
B.3 Editování testu Nyní se nacházíme na stránce B.4, kde m·ºeme zm¥nit ²ablonu a studenta u konkrétního testu. V záhlaví stránky nalezneme dv¥ polí£ka Template a User, které reprezentují aktuáln¥ p°i°azenou ²ablonu a studenta k tomuto testu. Pokud chceme ²ablonu nebo studenta zm¥nit, vybereme odpovídající poloºku z rozbalovacích menu. Pokud je k testu p°i°azena n¥jaká ²ablona, zp°ístupní se nám menu Students from Class, které obsahuje studenty, kte°í
B.4. FILTROVÁNÍ TEST
51
jsou zapsáni na cvi£ení, ke kterému je tato ²ablona p°i°azena. Máme také moºnost p°i°adit test k jakémukoli studentovi ze systému All Students. Pokud máme vybránu správnou ²ablonu a studenta, zm¥ny provedeme tla£ítkem Change.
Obrázek B.4: Editace konkrétního testu
B.4 Filtrování test· Pro p°ístup k ltr·m zvolíme z menu poloºku Filter Tests, která nás p°esm¥ruje na následující stránku B.5. Na této stránce máme moºnost volit z n¥kolika ltr·. M·ºeme testy ltrovat podle konkrétního p°edm¥tu Subject, cvi£ení Class, nebo si m·ºeme zobrazit konkrétní test od v²ech student·, kte°í ho psali Test. Pokud zvolíme moºnost Unrecognized only, zobrazí se pouze testy, které nemají p°i°azeného studenta. Máme moºnost zvolit ltr Unrecognized test identier, který nám zobrazí v²echny testy, které nemají p°i°azenou ²ablonu.
B.5 Zobrazení student· Poslední moºností je zobrazit si seznam student· z jednotlivých cvi£ení B.6. Pro tuto moºnost zvolíme poloºku Students z menu. Následn¥ si vybereme cvi£ení, které nás zajímá. U kaºdého studenta vidíme jeho jméno, uºivatelské jméno a mnoºinu test·, které jsou k tomuto studentovi p°i°azeny. Test· je v nabídce ²est, nebo´ testování probíhalo v p°edm¥tu, kde se psalo ²est test· za semestr. P°i kliknutí na p°i°azený test jsme p°esm¥rováni na stránku pro jeho editaci B.3.