ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta Bakalá ská práce Extrakce metadat z dokument Ond ej Vodá ek Vedoucí práce: Ing. Jan Koutník, Ph.D. Studijní program: Elektrotechnika a informatika, strukturovaný, Bakalá ský Obor: Výpo etní technika 13. ervence 2009
iv
v 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). V Praze dne 13. 7. 2009.............................................................
vi
Abstract The aim of this thesis is a comparation of tools for metadata extraction from documents, in particular from PDF documents and integration of a selected library into DipRep - a system for archiving thesises at CTI. The result of this work will be a expansion of the DipRep system on the metadata extraction, which will then be prelled int the formular when entering new works. Abstrakt Cílem bakalá ské práce je porovnání nástroj pro extrakci metadat z dokument, zejména z dokument formátu PDF a následné integrace vybrané knihovny do DipRepu - systému pro archivaci absolventských prací na ƒvut. Výsledkem práce bude roz²í ení systému DipRep o extrakci metadat z dokument, které pak budou p edvypln ny ve formulá i p i vkládání nových prací. vii
viii
Obsah 1 Úvod 1 2 Popis problému, specikace cíle 3 2.1 Metadata...................................... 3 2.2 DipRep....................................... 3 2.3 Diakritika v PDF dokumentech.......................... 3 2.4 Cíl práce....................................... 4 3 Analýza a návrh e²ení 5 3.1 Porovnání dostupného software.......................... 5 3.1.1 Xena..................................... 5 3.1.2 Metadata Extraction Tool......................... 5 3.1.3 ExifTool................................... 5 3.1.4 Práce Martina Fúska............................ 6 3.2 Struktura DipRepu................................. 6 3.2.1 Filtr pdf2txt................................ 6 3.2.2 Filtr txt2meta............................... 6 4 Realizace 7 4.1 Oprava diakritiky.................................. 7 4.2 Extrakce metadat.................................. 8 5 Testování 11 6 Záv r 13 Literatura 15 A Instala ní p íru ka 17 B Seznam pouºitých zkratek 19 C Obsah p iloºeného CD 21 ix
x OBSAH
Seznam obrázk 5.1 P edvypln ný formulá............................... 12 xi
xii SEZNAM OBRÁZK
Seznam tabulek 5.1 Úsp ²nost korekce e²tiny a extrakce metadat.................. 11 xiii
xiv SEZNAM TABULEK
Kapitola 1 Úvod Cílem této práce je porovnat dostupný software pro extrakci metadat a pak jej implementovat do systému DipRep digitálního archivu diplomových, bakalá ských a diserta ních prací, vznikajících na ƒvut. Výsledkem práce a implementace by m lo být zjednodu²ení a zrychlení vkládání nových dokument. Systém by se m l sám pokusit najít vhodné údaje, p edvyplnit formulá a tím uleh it práci uºivateli. 1
2 KAPITOLA 1. ÚVOD
Kapitola 2 Popis problému, specikace cíle 2.1 Metadata Metadata jsou strukturovaná data o datech.[7] Metadata mohou mít r znou podobu, mohou být zaznamenána na lístku nebo ve sv t po íta uloºena v souborech. Nej ast ji se s metadaty setkáme u HTML dokument na webových stránkách, kde je nap íklad obsaºeno jméno autora, klí ová slova i popis dokumentu. Dal²ím p íkladem metadat jsou Exif informace u digitálních fotograí. Tyto bývají více obsáhlé a kup íkladu zde m ºeme najít datum po ízení, výrobce a model fotoaparátu, nastavení fotoaparátu blesk, clona i citlivost. Samoz ejm mohou obsahovat i jméno autora nebo krátký popis. Velmi asto se s metadaty setkáme u hudebních soubor nap. formát MP3 s ID3 tagy. Z nich m ºe nap íklad p ehráva p e íst a zobrazit autora i název skladby, hudební album ze kterého skladba pochází a mnoho dal²ích. V této práci se v²ak budu zabývat p edev²ím dokumenty ve formátu PDF, které mohou taky obsahovat metadata. Jsou to nap íklad název, autor, klí ová slova. Metadata jsou v souborech uloºeny na denovaných místech, takºe aplikace k nim p istupující, v dí, kde je mají hledat. 2.2 DipRep DipRep je systém pro digitální archivaci diplomových, bakalá ských a diserta ních prací. Hlavním úkolem systému je ukládat práce a umoºnit je prohlíºet a vyhledávat v nich. Aby v nich mohl systém vyhledávat, pot ebuje v d t o jaké dokumenty se jedná, jejich názvy, autory a obsahy metadata. Vzhledem k tomu, ºe z nahrávaných dokument nelze získat v²echny pot ebné údaje, je pot eba p i vkládání práce do systému tyto údaje vyplnit. 2.3 Diakritika v PDF dokumentech Znaky s diakritikou jsou ob as v PDF dokumentech vysázeny jako dvojice znak samostatné písmeno a diakritické znaménko, které jsou pak posunuty na stejnou pozici. Tato skute nost pak zp sobuje problémy p i p evodu PDF dokumentu na text. Tímto problémem se jiº zabýval Vojt ch Sidek ve své práci Oprava diakritiky v PDF dokumentech[5]. 3
4 KAPITOLA 2. POPIS PROBLÉMU, SPECIFIKACE CÍLE 2.4 Cíl práce Jak jsem jiº zmínil, p i vkládání práce do DipRepu je pot eba vyplnit formulá s údaji o práci. V t²inou se v²ak jedná o data a údaje, které jsou ve vkládaném dokumentu obsaºeny. Proto by bylo rozumné uºivateli uleh it práci kopírování/p episování dat z dokumentu. V ideálním p ípad by m l systém v²echna pot ebná data najít a uºivatele jen nechat a potvrdit formulá. N které pot ebné údaje v²ak nejsou v dokumentech uloºeny jako metadata a proto je nelze jednodu²e p e íst. P esto se systém pokusí tato data získat a nabídnout uºivateli ve formulá i. Pro správnou moºnost extrakce bude také do DipRepu implementován PDFCorrector[5].
Kapitola 3 Analýza a návrh e²ení 3.1 Porovnání dostupného software 3.1.1 Xena Program je dostupný na adrese http://xena.sourceforge.net/. Jedná se o nástroj slou- ºící k p evodu r zných formát soubor do otev ených formát vhodných k dlouhodobému ukládání - normalizaci. Jedná se o opensource program napsáný v jazyku Java. Xena zvládá na vstupu ²irokou ²kálu formát soubor : od textových (prostý text, soubor RTF, dokument Microsoft Oce - doc) aº po multimediální - obrázky (JPG, GIF, PNG) a audio (FLAC, MP3, WAV). Výstupem normalizace je soubor ve formátu XML. Tento soubor obsahuje informace o procesu normalizace a p vodní soubor. Z tohoto programu se mi v²ak nepoda ilo získat ºádná metadata p vodního souboru a proto mi nep ijde jako vhodný nástroj pro ú ely této práce. 3.1.2 Metadata Extraction Tool Tento program je dostupný na adrese http://meta-extractor.sourceforge.net/. Metadata Extraction Tool je velmi podobný nástroji Xena. Program op t zvládá celou adu vstupních formát. Výstupem je taktéº XML soubor, který jiº obsahuje n jaká metadata ze vstupního souboru. U testovaných soubor (3 soubory typu PDF) jsem z výstupního souboru byl schopen zjistit datum vytvo ení, velikost souboru a PDF verzi. Program lze roz²i ovat o vstupní adaptéry, které se starají o extrakci metadat z vstupních soubor. Dal²í údaje by tedy ²ly získat po napsání nového nebo roz²í ení stávajícího adaptéru. 3.1.3 ExifTool ExifTool je dostupný na adrese http://www.sno.phy.queensu.ca/~phil/exiftool/. Jedná se o perlový program pro tení a zápis metadat r zných formát soubor. Tento nástroj dokáºe z PDF souboru p e íst datum, po et stránek, PDF verzi a pokud jsou metadata vypln na tak i autora, název a klí ová slova. Vzhledem k tomu, ºe se autor ani název nejsou v t²inou v PDF dokumentech vypln ny, nebo jsou vypln ny nesprávn, nemá podle mého názor cenu se tímto nástrojem zabývat. 5
6 KAPITOLA 3. ANALÝZA A NÁVRH E ENÍ 3.1.4 Práce Martina Fúska[3] Jedná se o bakalá skou práci Martina Fúska s názvem Automatické zpracování PDF dokument (https://dip.felk.cvut.cz/browse/pdfcache/fusekm1_2006bach.pdf). Tento nástroj hledá metadata p ímo v textu dokumentu. Vzhledem k tomu, ºe program byl napsán p ímo pro systém ukládání studentských prací, je v porovnání s ostatními vý²e zmín nými nástroji nejvhodn j²í. 3.2 Struktura DipRepu Pro p evod soubor mezi r znými formáty obsahuje DipRep sadu ltr. Ty se nacházejí v balí ku diprep.filterclasses. Ten obsahuje n kolik t íd, kdy kaºdá t ída reprezentuje jeden ltr, tedy p evod z jednoho formátu do druhého. V této práci se budu zabývat pouze ltry pro p evod PDF dokument na text a ltrem pro vyhledávání metadat v textu. 3.2.1 Filtr pdf2txt P evod PDF dokumentu na text je reprezentován t ídou FilterClassPDF2TXT. Pro p evod je pouºíván opensource program pdftotext. Filtr bude pot eba roz²í it o PDFCorrector[5] tak, ºe p ed samotným p evodem prob hne oprava diakritiky. 3.2.2 Filtr txt2meta Tento ltr je realizován t ídou FilterClassTXT2META, která slouºí pro vyhledávání metadat v textu. V sou asné implementaci umí t ída najít pouze abstrakt práce, pokud jsou v dokumentu obsaºeny. Do této t ídy implementuji program z práce Automatické zpracování PDF dokument [3]. Filtr by tedy m l být schopen hledat i dal²í metadata název, autora a dal²í.
Kapitola 4 Realizace 4.1 Oprava diakritiky Oprava diakritiky se bude provád t jen ve ltru pdf2txt t ída FilterClassPDF2TXT v balíku diprep.filterclasses, takºe nahraný PDF dokument z stane nezm n n, ale úsp ²nost správného p evodu na text se zvý²í. Zm n ný kód vypadá následovn : public void process(){... Process p; try { // oprava diakritiky File temp = File.createTempFile("text", ".pdf"); AccentCorrector ac = new AccentCorrector(); String srcfile = doc.getdocumentfile().getabsolutepath(); ac.doit(srcfile, temp.getabsolutepath()); p = Runtime.getRuntime().exec("pdftotext " + temp.getabsolutepath() + " " + newdoc.getdocumentfile().getabsolutepath()); p.waitfor(); temp.delete(); } catch (IOException ex) { ex.printstacktrace(); } catch (InterruptedException ex) { ex.printstacktrace(); }... } Nejd íve si vytvo íme do asný soubor metodou createtempfile, vytvo íme nový objekt t ídy AccentCorrector a zavoláme jeho metodu doit s parametry cesty k nahranému souboru a cesty k do asnému souboru. Opravený PDF dokument pak p edáme programu pdftotext. Nakonec smaºeme opravený dokument, který jiº není pot eba. 7
8 KAPITOLA 4. REALIZACE 4.2 Extrakce metadat Extrahování metadat probíhá ve ltru, který je p edstavován t ídou FilterClassTXT2META. Upravená metoda process vypadá následovn : public void process(){... if (!filterprocessor.documentexists(newdoc)){ /* if output document not exists */ /* convert file, write output file */ System.out.println("doc not exist - writing file"); Finder finder = new Finder(System.getProperty("user.home"). ".DipRep/MetaExtractorConfig/"); String text = readtextfile(doc.getdocumentfile()); } finder.najdimetadata(text); Metadata meta = new Metadata(); meta.setstringvalue("abstrakt", finder.getabstract("cs")); meta.setstringvalue("abstract", finder.getabstract("en")); meta.setstringvalue("title", finder.gettitle()); meta.setstringvalue("creator", finder.getauthor()); meta.setstringvalue("year", finder.getyear()); meta.setstringvalue("supervisor", finder.getsupervisor()); switch (finder.gettype()) { case 1: meta.setstringvalue("typeid", DocumentType.BACH.toString()); break; case 2: meta.setstringvalue("typeid", DocumentType.DIPL.toString()); break; } try { meta.savetonativefile(newdoc.getdocumentfile()); } catch (MetadataNotSavedException ex) { } /* ouput document */ outputdocuments.add(newdoc); }else{ System.out.println("doc "+newdoc+" exists - not writing"); } Nejd íve je pot eba vytvo it nový objekt t ídy Finder. Konstruktor dostane jako jediný parametr cestu ke kongura ním soubor m. Následn zavoláme jeho metodu najdimetadata,
4.2. EXTRAKCE METADAT 9 která nám v zadaném textu najde metadata. Nakonec nalezená metadata uloºíme do objektu t ídy Metadata, která je pak uloºí do souboru.
10 KAPITOLA 4. REALIZACE
Kapitola 5 Testování B h systému DipRep jsem testoval na serveru GlassFish v2.1 [1]. Pro testování funk nosti korekce e²tiny a extrakce metadat jsem pouºil 10 náhodn vybraných prací ze sou asného DipRepu, které jsem postupn nahrával. Následující tabulka ukazuje úsp ²nost provedených operací: p evod na text extrakce metadat angelj1_2009bach.pdf 4,5 / 7 aufarm1_2009bach.pdf X 3 / 7 kobetv1_2009bach.pdf X 3 / 7 lambep1_2009dipl.pdf 4 / 7 lysikk1_2009bach.pdf 3,5 / 7 pecino1_2009dipl.pdf X 2 / 7 travnj2_2009bach.pdf 3 / 7 treso_2009dipl.pdf 4 / 7 vlcekj2_2009dipl.pdf X 2 / 7 zittar1_2009dipl.pdf X 3 / 7 Tabulka 5.1: Úsp ²nost korekce e²tiny a extrakce metadat První sloupec obsahuje jméno práce. V druhém sloupci je zda se poda ilo p evést dokument na text se správnou diakritikou a v posledním sloupci je kolik se poda ilo extrahovat polí. Porovnával jsem sedm polí: jméno autora jméno vedoucího rok vzniku název název anglicky abstrakt 11
12 KAPITOLA 5. TESTOVÁNÍ abstrakt anglicky P evod na text se úsp ²n poda il v 50% p ípad. V ostatních byly místo znak s diakritikou znaky úpln jiné, nap íklad místo malého byl ve výsledném textu symbol libry. Najít správná metadata se poda ilo asi v 46% p ípad. V n kterých p ípadech se poda ilo najít metadata i p esto, ºe se dokument nepoda ilo správné p evést na text. Nejv t²í úsp ²nost hledání m l abstrakt ( esky i anglicky) a rok vzniku práce. Pokud budeme porovnávat úsp ²nost jako celek, tedy správn extrahovaná data a se správnou diakritikou, dostáváme úsp ²nost kolem 40%. Následující obrázek zachycuje p edvypln ný formulá, v tomto p ípad po neúsp ²né oprav diakritiky. Obrázek 5.1: P edvypln ný formulá
Kapitola 6 Záv r Práce se poda ilo splnit v rozsahu zadání. Korekce diakritiky i extrakce metadat fungují v rámci moºností pouºitých knihoven. Dal²ím vylep²ení funk nosti by ²lo tedy dosáhnout roz²í ením a vylep²ením knihoven PDFCorrectoru a MetaExtractoru. U p evodu n kterých PDF dokument na text jsou n které znaky s diakritikou ²patn p evedeny a objevují se místo nich jiné znaky. Tento problém je odli²ný od problému, který je e²en v PDFCorrectoru[5]. Zobrazení takovýchto dokument probíha v²ak bez problém. Pokud by se poda ilo vy e²it tento problém, jist by se zvedla i úspe²nost extrakce metadat. Nicmén by se ur it dali najít dal²í moºnosti vylep²ení MetaExtractoru. 13
14 KAPITOLA 6. ZÁV R
Literatura [1] R. Bedná. Glasssh. https://glassfish.dev.java.net/. [2] R. Bedná. Latex manual. http://www.cstug.cz/latex/lm/frames.html, stav z 23. 5. 2009. [3] M. Fúsek. Automatické zpracování pdf dokument, 2006. https://dip.felk.cvut.cz/browse/pdfcache/fusekm1_2006bach.pdf. [4] P. Harvey. Exiftool. http://www.sno.phy.queensu.ca/~phil/exiftool/. [5] V. Sidek. Oprava diakritiky v pdf dokumentech, 2008. https://dip.felk.cvut.cz/browse/pdfcache/sidekv1_2009bach.pdf. [6] Metadata extraction tool. http://meta-extractor.sourceforge.net/, stav z 5. 3. 2009. [7] Wikipedia: Metadata. http://cs.wikipedia.org/wiki/metadata, stav z 12. 6. 2009. [8] Xena. http://xena.sourceforge.net/, stav z 5. 3. 2009. 15
16 LITERATURA
Dodatek A Instala ní p íru ka K spu²t ní DipRepu je pot eba J2EE aplika ní server nap íklad GlassFish. V adresá i dist DipRepu najdeme war archiv, který m ºeme nahrát na server. Dále je pot eba umístit sloºku.diprep do domovského adresá e uºivatele, pod kterým server b ºí. V této sloºce se nachází kongura ní soubor globalconfig.xml. V n m je pot eba upravit jednotlivé cesty. Nakonec je pot eba správn umístit adresá font, který obsahuje písma pro PDFCorrector. Nap íklad na serveru GlassFish jsem ho musel nahrát do adresá e domains/domain1/config. Pokud bychom cht li DipRep upravovat a sestavovat je pot eba n kolik knihoven. Ty se bu nacházejí v adresá i lib DipRepu. Dal²í pot ebné knihovny: MyFaces, Tomahawk, PDFCorrector a MetaExtractor se nacházejí v adresá i lib na p iloºeném disku. 17
18 DODATEK A. INSTALAƒNÍ P ÍRUƒKA
Dodatek B Seznam pouºitých zkratek PDF Portable Document Format XML Extensible Markup Language HTML HyperText Markup Language MP3 MPEG-1 Layer III - formát zvukových soubor FLAC Free Lossless Audio Codec - zvukový kodek WAV Waveform audio format - zvukový formát JPG formát obrázkových soubor GIF Graphics Interchange Format PNG Portable Network Graphics RTF Rich Text Format 19
20 DODATEK B. SEZNAM POUšITÝCH ZKRATEK
Dodatek C Obsah p iloºeného CD DipRep - aplikace DipRep -- build -- build.xml -- dist -- lib - knihovny pro DipRep -- src - zdrojové kódy -- conf `-- java `-- diprep -- archive -- exceptions -- filterclasses - zdrojové kódy ltr -- FilterClass.java -- FilterClassPDF2TXT.java - ltr pdf2txt -- FilterClassTXT2META.java - ltr txt2meta -- ldap `-- web `-- web Extrakce_fusek -- Java -- Konfugurace -- PHP `-- XML MetaExtractor -- build -- fonts `-- src PDFCorrector -- build `-- src fonts testovaci_prace - program M. Fúska[3] - program M. Fúska jako projekt NetBeans - PDFCorrector V Sidka[5] - písma pro PDFCorrector - práce pouºité pro testování úsp ²nosti 21
22 DODATEK C. OBSAH P ILOšENÉHO CD text `-- Extrakce.pdf lib -- MetaExtractor -- MetaExtractor.jar -- PDFCorrector -- PDFCorrector.jar -- myfaces-core-1.2.7-bin `-- tomahawk12-1.1.9 - tato práce - dal²í knihovny pro DipRep