}w!"#$%&'()+,-./012345<ya Masarykova universita Fakulta informatiky POSUDEK DIPLOMOVÉ PRÁCE Datum: 2. února 2014 Student(ka): Bc. Daniel Gašper Vedoucí práce: doc. RNDr. Petr Sojka, Ph.D. Název práce: Rozpoznávání matematických formulí První kapitola textu práce, pojmenovaná Motivace, má ve čtyřech krátkých odstavcích seznámit čtenáře s důvodem práce na daném tématu a strukturou členění zbytku textu. Je však nutné podotknout, že tento účel neplní příliš dobře. Bez podrobnějšího vysvětlení je letmo zmíněna digitalizace textů z odborných knihoven, dva konkrétní projekty digitálních matematických knihoven bez naznačení jejich konkrétního vztahu k tématu práce, a dále je užíván termín OCR bez vysvětlení jeho významu. Pro čtenáře neznalého kontextu a daných pojmů tato kapitola pravděpodobně nebude příliš přínosná, nabude dojmu, že řada informací zůstala nevyřčena a motivace práce na daném tématu mu zůstane utajena. Dále diplomant text práce rozdělil do dvou velkých celků. V první části se na 17 stranách zabývá teorií optického rozpoznávání znaků (OCR), v navazující 27stránkové části popisuje návrh a implementaci vlastního systému pro OCR matematických formulí. Úvodní kapitola teoretické části je věnována krátkému, ale zajímavému pohledu na historický vývoj OCR nástrojů, počínaje prvními mechanickými čtečkami dokumentů, vysvětlení pojmu OCR a oblastem jeho využití. Mělo být ale zmíněno více historicky významných projektů a software, respektive algoritmů a metod používaných pro OCR. Tvrzení [...] Rozpoznávanie bežného textu je dnes relatívne dobre zvládnutá úloha [...] ze strany 5 by mělo být něčím podloženo. Běžně používané nástroje pro OCR dokumentů v plně automatickém režimu v mnoha případech nepodávají zdaleka optimální výsledky. Tvrzení mělo nejspíše směřovat k faktu, že OCR běžného textu je dobře zvládnuté v porovnání s OCR matematických formulí a jejich struktury. Navazující třetí kapitola stručně popisuje obecné kroky procesu OCR. Tvrzení [...] Pre väcšinu OCR sysémov je nutné dodat obrazový materiál v rozlíšení minimálne 600 dpi. [...] ze strany 7 je však nepřesné. Rozlišení minimálně 600 DPI pro vstupní dokumenty je doporučeno 1 např. pro program InftyReader 2 (akceptováno je ale i rozlišení 400 DPI), který je asi jediným nástrojem schopným uspokojivého OCR matematických formulí. U nástrojů pro OCR běžného textu je často doporučováno rozlišení nižší, např. 300 DPI pro Abbyy 1 <http://inftyreader.org/inftyreader-guidelines.doc> 2 <http://www.inftyreader.org/>
FineReader 3, neboť vyšší hodnoty zbytečně prodlužují čas zpracování bez znatelného vlivu na kvalitu rozpoznání textu. Vyšší rozlišení (u Abbyy FineReader 400 600 DPI) jsou doporučována v případě rozpoznávání drobného textu, což je relevantní i pro OCR matematických formulí. Tvrzení [...] pre pocítacové spracovanie sú farebné obrazy príliš komplexné [...] ze strany 8 nedává dobrý smysl a odkazovat má spíše na zjednodušení vstupních dat převodem do bitonální podoby, které je žádoucí pro specifické potřeby OCR. Další tvrzení [...] Väcšina známych algoritmov, urcených na rozpoznávanie obrazu, pracuje práve s bitonálnymi obrázkami. [...] z téže strany by mělo být nějak podloženo (například vhodnou citací). Jelikož třetí kapitola tvoří jádro teoretické části práce, mohla být zpracována do větší hloubky a mohlo být podrobněji popsáno větší množství používaných algoritmů. Nepříliš přesvědčivě působí a bez podrobného vysvětlení zůstává např. popis funkce algoritmů na straně 10 a použití tam uvedené matice 3.4. Dalším příkladem může být odkaz na Houghovu transformaci ze strany 11, která zůstala bez jakéhokoliv vysvětlení nebo odkazu do literatury. Připomínku bych měl také k tvrzení ze strany 13, že kód znaku bývá uchováván najcastejšie v ASCII alebo UTF-8. Domnívám se, že interně bude znak reprezentován spíše svou Unicode pozicí, nikoliv posloupností bytů v některém konkrétním kódování. Vzhledem k celkovému rozsahu práce je však objem teoretické části textu přijatelný. Čtvrtá kapitola je věnována specifikům OCR matematických formulí. Diplomant se ve své práci zaměřil výhradně na OCR předem izolovaného jednoho matematického výrazu, nikoliv celé textové stránky obsahující souvislé úseky textu smísené s matematickými výrazy. Přesto by bylo vhodné v této kapitole naznačit cesty, jak je možné detekovat a izolovat jednotlivé formule z uceleného textu, neboť v případě praktického nasazení OCR matematiky v odborných textech tato potřeba nevyhnutelně nastává. Postup detekce matematiky v rámci celé strany je stručně naznačen až na začátku páté kapitoly v rámci popisu nástrojů z projektu Infty, kde ale na straně 18 dole není zcela zřejmé, který oficiální dokument deklaruje více než 89% úspěšnost rozpoznávání matematiky nástrojem InftyReader. Pravděpodobně měl autor na mysli článek odkazovaný z textu práce pod položkou [10]. Tento jediný odkaz na další informace o projektu Infty je však poněkud nešťastně uveden až na úplném konci kapitoly 5.1, která o projektu pojednává. Obdobně nevhodné je i umístění odkazu [13] až na konci kapitoly 5.3 projednávající o nástroji MaxTract. Tam navíc postrádám podrobnější popis principu práce tohoto programu a uvedení omezení, která má např. na použití konkrétních typů fontů a způsob jejich vložení do analyzovaného PDF. Dále diplomant pokračuje popisem vlastního systému pro OCR matematických formulí. V úvodní kapitole této části jako cíl své práce stanovuje přípravu systému pro OCR izolovaného matematického výrazu. Nalezení těchto výrazů v obsahu celé stránky přenechává dalšímu vývoji. Vzhledem k náročnosti úkolu vývoje kompletního OCR systému pro matematiku je toto v rámci jedné diplomové práce přípustné zjednodušení. Na straně 22 mne však zaujalo tvrzení: [...] Výstup systému umožní transformáciu dát do bežne používaného formátu pre prácu s matematikou. [...] Tam, ani nikde jinde v textu práce, jsem však nenalezl jakýkoliv popis výstupního formátu programu. Z praktického vyzkoušení demonstrační implementace, která je součástí práce, pak vyplynulo, že výstupem jsou data 3 <http://abbyyindia.com/finereader/professional/faq/>
o znacích a jejich pozicích a umístění ve vzorci uložená do SQLite databáze, respektive vypsaná na standardní výstup programu. Není však ani naznačeno, jak tato data převést do některého běžně používaného formátu, např. MathML. Následující sedmou a osmou kapitolu, ve kterých jsou popsány detaily návrhu a implementace OCR systému, považuji za nejzdařilejší a nejužitečnější část textu práce. Velmi kladně hodnotím ilustrační obrázky, které vhodně doplňují popis mechanismů práce vytvořeného OCR systému. Na straně 31 však mohlo být vysvětleno, proč nejsou za sousední pixely považovány body ležící na diagonále vzhledem ke zpracovávanému pixelu. Bez vysvětlení také zůstává, proč byla jako limit plochy souvislé komponenty pro filtrování šumu stanovena právě hodnota 10 pixelů. Obdobné je to se stanovením normalizované velikosti bitmapy znaku na právě 20 20 px na straně 34. Na straně 36 je popsán postup skládání znaků sestávajících ze dvou souvislých komponent (např. znaky =, :, j apod.). Není ale zřejmé, jak je zajištěna podpora pro znaky sestávající ze třech, případně více komponent (např. matematické symboly, =, apod.). Charakteristiky znaků používané při rozpoznávání předlohy jsou v rámci implementovaného programu ukládány do SQLite databází. Bylo přitom myšleno i na jejich snadné přidávání uživatelem, které vede k rozšíření systémem rozpoznávané sady znaků. V textu práce ale velmi postrádám informaci o tom, jak byly získány a do potřebné databázové podoby převedeny charakteristiky znaků, které jsou součástí demonstrační implementace. Očekával bych existenci nějakého podpůrného nástroje, který toto usnadňuje, a jeho přiložení k demonstrační implementaci OCR systému. Obdobné platí i pro data uložená v souboru sizes_latex.txt (viz strana 40). Toto je přitom velmi důležité pro uživatelské rozšíření množiny rozpoznávaných fontů a obecně další vývoj programu. Devátá kapitola je věnována vyhodnocení úspěšnosti demonstrační implementace, pro kterou nebyla ground truth databáze vytvořena od základů, ale byla využita existující testovací sada matematických formulí. Za poměrně závažný nedostatek však považuji to, že součástí odevzdaného řešení nejsou výstupní data z testování, na základě kterých byla vyplněna tabulka 9.2 na straně 49. Uveden není ani seznam 300 obrázků, které byly pro testování vybrány ze sady InftyMDB-1, aby na nich bylo možné udávané výsledky nezávisle ověřit. Z procesu testování by měla být součástí odevzdané práce optimálně i sada ladících obrázků, která vzniká při spuštění programu s parametrem -d. Z popisu v tabulce 9.1 na straně 49 také není zřejmé, zda kategorie 0 (správně rozpoznané) zahrnuje pouze vzorce, kde byly krom struktury korektně rozpoznány všechny znaky, nebo se jedná jen o korektní rozpoznání vztahů mezi znaky ve vzorci s případnou chybou v určení znaku samotného. Po typografické stránce, a pokud je oponent schopen v rámci slovenštiny posoudit také po stránce jazykové, je práce zpracována přijatelně. V textu se sice nachází několik překlepů (např. na straně 44) a chyb, na několika místech zůstaly na začátku nové stránky osiřelé řádky z předchozích odstavců, ojediněle došlo k přetoku textu přes pravý okraj sazby (např. strana 25), znak ĺ nevypadá v použitém fontu optimálně a větší pozornost by si zasloužil také seznam použité literatury, kde občas chybí vedoucí nuly v datech uváděných v ISO 8601 formátu, není dodržena velikost písmen v názvech odkazovaných webových stránek, či není dodržen správný formát při citování patentů. Celkově je ale text vysázen na slušné úrovni, je logicky členěn do kapitol a působí dobrým dojmem.
Dobrým dojmem působí i zdrojový kód demonstrační implementace navrženého OCR systému. K jeho přehlednosti přispívají nejen syntaktické požadavky zvoleného programovacího jazyka, ale také přítomné komentáře jednotlivých metod. Jako doplněk bych však ocenil jejich strojový převod do HTML dokumentace celého systému. Velmi kladně hodnotím také ladící režim (parametr -d při spuštění programu), který generuje obrázky přehledně vizuálně demonstrující výsledek rozpoznání matematické formule a vnitřní činnost programu. Škoda jen, že adresář pro zápis ladících výstupů není možné snadno uživatelsky nastavit obdobně, jako je to možné pro vstupní a výstupní adresáře. Při testování se také ukázalo, že program minimálně pod Linuxem havaruje, pokud je v cestě vstupního adresáře použit některý z českých znaků. Hlavní cíl práce, tj. navrhnout systém pro OCR matematiky, byl naplněn a doprovodila jej funkční demonstrační implementace navržených postupů. Ta má své limity, nicméně je funkční a může být použita pro další rozvoj nástroje (což velmi doporučuji). I přes výše uvedené výtky, které se týkají zejména textu práce a relativně snadno napravitelných nedostatků v dokumentaci podpůrných nástrojů a postupů, doporučuji práci přijmout za diplomovou. Vzhledem k výše uvedenému a celkové vysoké náročnosti úkolu vytvoření OCR systému pro matematické formule (posílené navíc o původně neplánovaný vývoj vlastního OCR modulu) navrhuji práci hodnotit známkou B nebo C dle přesvědčivosti její obhajoby diplomantem. Obhajoby práce se plánuji zúčastnit osobně. Dotazy a náměty k diskusi: Na straně 52 je uvedeno [...] Najväčším prínosom je poznatok, že aj cesta pravidlového spracovávania vzorcov má v dnešnej dobe opodstatnenie. [...]. Jsou tedy známy perspektivnější cesty? Jaké? Proč nebyly vyzkoušeny? Postup rozpoznávání struktury matematického vzorce popsaný na stranách 45 47 je zcela původní myšlenkou autora, anebo byl inspirován postupy již dříve popsanými? Jak složité by bylo použít místo vyvinutého OCR modulu jiný OCR systém, např. komerční Abbyy FineReader? Proč to případně nebylo vyzkoušeno? Je pravdivé tvrzení ze strany 18, že Systém INFTY a jeho súcasti sú volne použitelné len pre výskumné a súkromné úcely.? Domnívám se, že např. InftyReader není volně k dispozici ani pro výzkumné účely. K dispozici je jen časově omezená zkušební verze. Jaké formáty obrázků jsou podporovány na vstupu programu? Volbu jazyka Python pro implementaci sytému považuji za vhodnou, proč byl ale zvolen Python verze 2.7, když řada 2.x jazyka je v současnosti již pouze v režimu údržby a do budoucna bude dále vyvíjena a udržována verze 3.x, která je s verzí 2.x do značné míry nekompatibilní? Proč je maximální počet paralelně spuštěných procesů omezen na nejvýše fyzický počet procesorů v systému? Při některých typech zátěže (např. častý přístup na pomalé diskové úložiště) může být výhodné spustit více procesů, aby byl procesor vytížen i v případě, že část procesů čeká na dokončení v/v operací.
Konstatování [...] Hlavná časť programu, modul linker, funguje v rámci svojich možností spoľahlivo.[...] ze závěru práce na straně 51 nepůsobí příliš přesvědčivě. Co tím bylo myšleno? Co bylo myšleno větou Podobne ako v prípade MathML, sú aj pri použití balíkov AMS-LATEX rovnice vyjadrené v špeciálnom kóde a pre cítanie ich nástrojmi prevedieme do lahko citatelnej podoby. na straně 16? Proč je na straně 44 uvedena informace v poznámce pod čarou 1? Užití právě standardní funkce max() je z nějakého důvodu podstatné? Hodnocení: B nebo C dle přesvědčivosti obhajoby RNDr. Michal Růžička