Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky
BAKALÁŘSKÁ PRÁCE
Plzeň, 2006
Pavel Gloss
Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky
Bakalářská práce
Konverze dokumentů ve formátech PDF a PostScript
Plzeň, 2006
Pavel Gloss
Abstract
Conversion of Documents in PDF and PS Formats There is a huge amount of documents in publication formats PDF and PostScript on the Internet today. The PDF format is by far the most numerous. The problem is how to extract text information from these documents and with the greatest accuracy. The thesis first deals with the PDF and PS formats generally and then introduces some free available utilities for text extraction. Subsequently, Microsoft Indexing Service and IFilter interface for extracting and indexing text information are described. For the testing of text extraction utilities Batch PDF/PS to plain-text convertor was developed a tool for automated conversions, which includes heuristics being able to detect possible text extraction errors. Finally, the paper gives information about Porovnání kvality konverze utilit (A Comparison of Utility Conversion Accuracy). It is a tool, which evaluates accuracy of utilities conversion by comparing the extracted texts with the original ones (available along with PDF/PS documents). The algorithm for fuzzy string comparison is used in this case. The collections of files needed for the testing are listed as well.
Obsah 1
2
Úvod .................................................................................................................................................... 1 1.1
Cíl............................................................................................................................................... 1
1.2
Platforma ................................................................................................................................... 2
1.3
Struktura práce .......................................................................................................................... 2
1.4
Poděkování................................................................................................................................. 3
Publikační formáty ............................................................................................................................ 4 2.1
Zastoupení publikačních formátů na webu ................................................................................ 4
2.2 PostScript ................................................................................................................................... 5 2.2.1 Vývoj jazyka PostScript ........................................................................................................ 5 2.2.2 Encapsulated PostScript ........................................................................................................ 6 2.3 PDF............................................................................................................................................ 7 2.3.1 PDF versus HTML ................................................................................................................ 8 3
Volně dostupné programy pro konverzi PDF/PS do textu............................................................. 9 3.1 Open source ............................................................................................................................... 9 3.1.1 Ghostscript ............................................................................................................................ 9 3.1.2 ps2ascii .................................................................................................................................. 9 3.1.3 pstotext ................................................................................................................................ 10 3.1.4 PreScript.............................................................................................................................. 11 3.1.5 pdftotext .............................................................................................................................. 11 3.1.6 ps2txt ................................................................................................................................... 11 3.2 Služba MS Windows Indexing Service a rozhraní IFilter......................................................... 12 3.2.1 Filtrování dokumentů .......................................................................................................... 12 3.2.2 IFilter................................................................................................................................... 12 3.2.3 FiltDump ............................................................................................................................. 13 3.2.4 Adobe PDF IFilter ............................................................................................................... 13 3.2.5 PostScript IFilter ................................................................................................................. 14
4
Kolekce souborů pro testování ....................................................................................................... 15 4.1 Hledání dvojic PDF/PS dokumentů s originálními texty.......................................................... 15 4.1.1 Download z internetu .......................................................................................................... 15 4.1.2 Zdroje publikací .................................................................................................................. 16 4.1.3 Třídění skupin dokumentů podle přípon ............................................................................. 16 4.2 Problém s originálními texty .................................................................................................... 17 4.2.1 Originální texty k PDF dokumentům .................................................................................. 17 4.2.2 Originální texty k PS dokumentům ..................................................................................... 17
5
4.3
Kolekce souborů pro dávkovou konverzi.................................................................................. 18
4.4
Kolekce dvojic textů pro porovnávání...................................................................................... 18
4.5
Práce s kolekcemi..................................................................................................................... 19
Program - Batch PDF/PS to plain-text convertor ......................................................................... 20 5.1
Volba programovacího prostředku .......................................................................................... 20
5.2 Implementace ........................................................................................................................... 20 5.2.1 Rozdělení do tříd ................................................................................................................. 20 5.2.2 Procházení adresářové struktury kolekce ............................................................................ 21 5.2.3 Spouštění utilit a přesměrování výstupu.............................................................................. 21 5.2.4 Detekce chybového převodu ............................................................................................... 22 5.3
Export výsledků ........................................................................................................................ 23
5.4
Komunikace programu s okolím .............................................................................................. 23
5.5
Testování a paměťová náročnost ............................................................................................. 24
6
Program - Porovnání kvality konverze utilit................................................................................. 25 6.1
Volba programovacího prostředku .......................................................................................... 25
6.2 Implementace ........................................................................................................................... 26 6.2.1 Rozdělení do tříd ................................................................................................................. 26 6.2.2 Serializace objektů .............................................................................................................. 26 6.3
Statistika podobností textů ....................................................................................................... 27
6.4
Export a import výsledků ......................................................................................................... 27
6.5
Komunikace programu s okolím .............................................................................................. 28
6.6
Testování a paměťová náročnost ............................................................................................. 29
7
Výsledky ........................................................................................................................................... 30 7.1 Konverze dokumentů PDF/PS do textu .................................................................................... 30 7.1.1 Použité utility a ifiltry.......................................................................................................... 30 7.1.2 Modifikace utility pstotext .................................................................................................. 31 7.1.3 Problém při konverzi PDF utilitou pstotext......................................................................... 31 7.1.4 Výsledky konverze PDF do textu........................................................................................ 32 7.1.5 Výsledky konverze PS do textu........................................................................................... 33 7.2 Výsledky porovnání dvojic textů udávající kvalitu konverze utilit............................................ 34 7.2.1 Vyhodnocení kvality konverze............................................................................................ 35
8
Závěr................................................................................................................................................. 38 8.1
Možná rozšíření........................................................................................................................ 38
Přehled zkratek ......................................................................................................................................... 39 Vysvětlení pojmů....................................................................................................................................... 40 Reference.................................................................................................................................................... 41 Příloha A: Příklad výpisu třídícího skriptu ............................................................................................ 43 Příloha B: Uživatelské dokumentace k programům .............................................................................. 45 B1
Batch PDF/PS to plain-text convertor .......................................................................................... 45
B2
Porovnání kvality konverze utilit .................................................................................................. 48
Příloha C: Konfigurační soubory programů .......................................................................................... 50 C1
Batch PDF/PS to plain-text convertor - konfigurační soubor ...................................................... 50
C2
Porovnání kvality konverze utilit - konfigurační soubor............................................................... 52
Příloha D: Příklady exportu výsledků..................................................................................................... 54 D1
Logovací výpis dávkové konverze souborů vybranou utilitou .................................................. 54
D2
Detailní výsledek porovnání dvojic textů u vybrané utility ...................................................... 55
Prohlášení
Prohlašuji, že jsem bakalářskou práci vypracoval samostatně a výhradně s použitím citovaných pramenů.
V Plzni dne 18. května 2006
____________________ Pavel Gloss
Bakalářská práce
1
Úvod
Úvod
V dnešní době je stále více dokumentů šířeno v podobě publikačních formátů PDF (Portable Document Format) a PS (PostScript), zejména prostřednictvím internetu. Tyto formáty se používají kvůli pevnému, neměnnému formátování, tedy jsou vhodné pro vytisknutí na papír. Nejsou ale běžně snadno editovatelné, oproti jiným otevřeným formátům např. HTML, XML, RTF. Převod (konverze) normálního textu do PDF nebo PS je již poměrně dobře proveditelný. Problémem je ale převod opačný, tj. z uvedených formátů do čistého textu. Nebudeme se zabývat problémem, jak konverzi realizovat, ale využijeme již existujících utilit, které k tomuto účelu slouží. Lze jich nalézt mnoho, některé jako robustní programy s vypracovaným GUI, jiné jako strohé konzolové utility. Pokud tedy potřebujeme s dokumentem pracovat, například v něm hledat nějaké slovo, využijeme některý z mnoha zdarma šířených programů, který převede obsah dokumentu do podoby čistého textu (plain-text). Potíž u těchto volně dostupných programů je ale s kvalitou výstupních textů, které často vůbec neodpovídají původnímu dokumentu. Je obtížné rozhodnout, která utilita dokáže konvertovat texty z PDF a PS formátu do čistého textu nejlépe a v přijatelném časovém horizontu. Protože ale tyto utility hrají klíčovou roli v různých automatických úlohách, např. indexování obsahu dokumentů umístěných na webových stránkách, je velmi vhodné zjistit kvalitativní rozdíly (kvalita konverze, chybovost, doba konverze) mezi jednotlivými utilitami, které nejsou při běžném používání patrné.
1.1
Cíl
Prvním úkolem je najít na internetu všechny dostupné open source nebo freeware programy a utility, které umožňují konvertovat soubory publikačních formátů PDF a PS do čistého textu. Zjistit jak tyto programy nainstalovat a zprovoznit (některé jsou šířeny jen v podobě zdrojových souborů, které je nutné zkompilovat nebo interpretovat, jindy je nutné doinstalovat do OS ještě další komponenty…). Chceme zjistit, jak fungují a jak se ovládají z příkazové řádky (pokud to umožňují). Dále je potřeba zhotovit program, který bude získané utility, které lze ovládat z konzole, využívat k dávkové konverzi - pro převod řádově stovek až tisíců dokumentů a bude zaznamenávat doby trvání proběhlých konverzí a chybovost převodů. Pro zjištění chyb při konverzi je nutné navrhnout jednoduchou heuristiku převedeného textu a další možnosti, jak chyby detekovat, protože utility se velmi liší v poskytování informace o chybě a některé nepodají dokonce žádnou zprávu. Také se liší ve způsobu výstupu konvertovaného textu. Některé ukládají získaný text přímo do souboru, jiné vypisují text na obrazovku (stdout) a je nutné jej přesměrovat do souboru. Výsledný program jsme nazvali Batch PDF/PS to plain-text convertor. Dalším cílem bude zhotovit program, který dokáže vyhodnotit kvalitu konverze utilit. Ze dvou možných postupů jsme zavrhli metodu porovnávání slov převedeného textu se slovníkem, tedy jestli je výstupní text smysluplný. Pokud máme k dokumentu PDF/PS i originál v prostém textu, pak můžeme využít fuzzy algoritmu pro porovnávání dvou textů (fstrcmp [2]) a zjistit podobnost zkonvertovaného textu s originálním. Zajímá nás
1
Bakalářská práce
Úvod
podobnost textů bez úprav a s předzpracováním, kdy upravíme oba texty do posloupnosti slov, pro získání objektivnějších výsledků o konverzi, kde nás nezajímá zachování původního layoutu dokumentu (např. indexování dokumentů). Výsledkem práce je program nazvaný Porovnání kvality konverze utilit. Dále je nutné získat rozsáhlou kolekci dokumentů ve fomátech PDF/PS spolu s originálními texty. Zaměříme se pouze na anglické publikace, neboť není cílem zabývat se kódováním češtiny. Texty, získané dávkovou konverzí z PDF/PS dokumentů, tvoří spolu s originálními texty kolekci, pomocí níž ověřujeme kvalitu konverze utilit.
1.2
Platforma
Testované utility pro převod dokumentů ve formátech PDF a PostScript do textu jsou napsány v různých jazycích. Jsou to zejména jazyky C, C++, Python a PostScript samotný. Utility jsou šířeny v podobě zdrojových kódů (kdy je nutná kompilace či interpretace) nebo v binární podobě. Některé z utilit je možné přeložit a spustit na libovolné platformě. U některých je potřeba pro spuštění nainstalovat další software, například Ghostscript [12] (interpret PostScriptu) nebo různé ifiltry, dostupné pouze na platformě Windows. Algoritmus fstrcmp, pro porovnávání textů, je šířen ve zdrojovém kódu jazyka C. Využíváme ho zkompilovaný jako DLL knihovnu (použitelnou z Java aplikace), jejíž jedinou metodu voláme. Program Batch PDF/PS to plain-text convertor, sloužící pro spuštění dávkové konverze kolekce dokumentů pomocí zmíněných utilit, je napsán v Borland Delphi 6 (tedy jazyk Object Pascal) pro platformu Windows. Program Porovnání kvality konverze utilit je napsán v jazyce Java, což umožňuje jeho snadnou přenositelnost na jiné platformy, např. Linux apod. Pro třídění rozsáhlé kolekce dokumentů byl vytvořen krátký skript v jazyce PHP.
1.3
Struktura práce
Kapitola 2 podává základní informace o publikačních formátech PDF a PostScript (vývoj, implementační detaily, rozšíření na webu a použití v praxi). Kapitola 3 poskytuje základní přehled o volně dostupných programech a utilitách pro konverzi PDF a PS dokumentů do textu (popis, instalace…). V kapitole 4 se budeme zabývat kolekcemi dokumentů (jejich získání, návrh struktury…), potřebnými pro testování - pro dávkovou konverzi a následné porovnávání dvojic textů. Vytvořené programy Batch PDF/PS to plain-text convertor a Porovnání kvality konverze utilit podrobně popíšeme v kapitolách 5 a 6. V 7. kapitole uvádíme dosažené výsledky a problémy při testování. Kapitoly 4-7 popisují většinu praktické části práce. Poslední, 8. kapitola, patří zhodnocení výsledků a možným vylepšením. V příloze jsou uvedeny uživatelské dokumentace a screenshoty obou programů, obsah konfiguračních souborů a příklady exportu výsledků. Poznámka: Pro vysvětlení principu fuzzy algoritmu porovnávání textů (fstrcmp [2]) odkazujeme do příslušné literatury [1].
2
Bakalářská práce
1.4
Úvod
Poděkování
Mnoho díků patří vedoucímu této práce, Ing. Daliborovi Fialovi za jeho ochotu a technickou podporu při řešení různých problémů a také za poskytnutí upraveného zdrojového kódu utility pstotext. Velký dík patří také Ing. Romanu Tesařovi za poskytnutí fuzzy algoritmu porovnávání textů (fstrcmp) v podobě DLL knihovny (native.dll) spolu se třídou v Javě (FuzzyStringComparison), jejíž statická metoda volá metodu právě z DLL knihovny. Autor je také velmi vděčný své přítelkyni Michaele za její věčnou trpělivost a za zázemí při tvorbě práce. Za zmínku stojí také poděkovat vývojářům skvělého prostředí Eclipse (pro jazyk Java), v němž byla radost programovat. Děkuji také firmě Borland za její produkt Delphi 6 Personal Edition (pro jazyk Object Pascal), který je možné pro nekomerční účely využívat zdarma.
3
Bakalářská práce
2
Publikační formáty
Publikační formáty
Publikační formáty slouží ke zveřejňování převážně textových dokumentů v elektronické podobě - zejména prostřednictvím internetu. Oproti jiným formátům mají tu výhodu, že jsou systémově i hardwarově nezávislé, přičemž tyto formáty zajišťují, že se libovolný dokument na všech zařízeních zobrazí stejně. Nehrozí proto situace, že by se u dokumentu „rozhodilo“ formátování, pokud by byl načten v jiném programu či na jiném systému, než kde byl dokument pořízen. Jsou proto ideálními formáty pro přenos dokumentů určených pro vytisknutí na papír. Mezi tyto fomáty patří především PDF, PostScript a TEX. Pro tyto formáty existují volně dostupné prohlížeče pro mnoho platforem. Mezi publikační formáty nepočítáme např. formáty DOC, RTF a HTML, které sice také slouží k předávání zejména textové informace, ale nemají výše uvedené vlastnosti.
2.1
Zastoupení publikačních formátů na webu
Z provedené analýzy [25] velkého počtu vyhledávání největšího světového vyhledávače Google bylo zjištěno, že Google vykazuje přes 2 miliardy dokumentů přístupných přes web. Mezi tyto dokumenty patří vedle naprosté většiny (88,9 %) webových stránek také 10,4 % dokumentů v různých formátech. Převážnou většinu z nich tvoří publikační formát PDF, potom formáty DOC a RTF a v neposlední řadě publikační formát PostScript.
Obr. 2.1: Analýza vyhledávání Googlu (březen 2002, zdroj: [25])
4
Bakalářská práce
2.2
Publikační formáty
PostScript
PostScript je univerzální programovací jazyk vycházející z jazyka FORTH, speciálně navrhnutý ke grafickému popisu tisknutelných dokumentů a pro komunikaci grafických aplikací. Popisuje, jak má přesně stránka vypadat. Jazyk PostSript byl vyvinut v roce 1985 firmou Adobe Systems Incorporated. Je považován za standard pro stolní ediční systémy, protože jej podporují osvitové jednotky (tiskárny s velmi vysokým rozlišením používané k tisku kopií publikací). Každá postscriptová tiskárna obsahuje tiskový procesor, který interpretuje postscriptový kód a produkuje grafický výstup. Je nezávislý na použitém zařízení. Díky svým rozsáhlým možnostem se však brzy stal i výměnným formátem používaným k ukládání vektorové grafiky (na dlouhou dobu jediným) a k přenosu obrázků mezi aplikacemi. V UNIXu je téměř výhradním jazykem pro tisk z aplikací. Jedná se o interpretovaný zásobníkově orientovaný jazyk. S veškerou grafikou nakládá jako s objekty. Pokud se na vstupu objeví jakýkoli datový objekt (celé nebo reálné číslo, řetězec, pole apod.), je vložen na vrchol zásobníku. Operátory, které, vyžadují argumenty, objekty ze zásobníku vybírají a na zásobník vkládají výsledek. Mezi základní grafickými objekty paří cesty, které lze obtahovat a vyplňovat, bitové mapy, rastry, vzorky a písma. Téměř celá jeho specifikace je volně dostupná na Internetu v publikaci PostScript Language Reference Manual (PLRM) [9]. Přestože PLRM je v podstatě návodem na napsání interpretu PostScriptu, firma Adobe nikdy neuvolnila referenční implementaci. Interpret PostScriptu postupně prochází kód, interpretuje jeho příkazy a provádí vykreslování (rastrování) do výstupní paměti. Interpretu se proto také někdy říká RIP (Raster Image Processor) a zmíněnému procesu pak slangově „ripování“. Postscriptové soubory mají standardní příponu .ps a MIME typ application/postscript. Pro interpretaci tohoto formátu se používá například volně šiřitelný program Ghostscript [12] s grafickou nadstavbou GSview [13]. Postscriptový soubor je nejčastěji získán jako výsledek zpracování dokumentu v TEXu, což je mocný nástroj pro potřeby DTP. Ve formátu TEX je šířeno značné množství vědeckých prací (zejména pokud obsahují matematické vzorce). Formát PostScript byl z části nahrazen formátem PDF, který z PostScriptu vychází. PDF je vlastně postscriptový soubor, který už byl interpretován. Takže schopnosti obou formátů jsou do značné míry podobné. Zdroje: [3], [4], [8]
2.2.1
Vývoj jazyka PostScript
Ve vývoji PostScriptu existují tři mezníky. PostScript Level 1 (1985): Jazyk pro popis stran pro černobílé tiskárny. Dodnes narazíme na zařízení, která podporují jen PostScript Level 1. PostScript Level 2 (1990): Ještě před vznikem tohoto standardu se objevila nutnost rozšíření. Vznikly tak implementace jazyka Level 1 s podporou barev, stejně jako různá
5
Bakalářská práce
Publikační formáty
rozšíření závislá na zařízení (PostScript Level 1 neměl příkazy pro změnu velikosti stránky, nastavení podavačů či ovládání řezaček). Aby se napříště zabránilo živelnému přidávání příkazů, nebyly žádné z těchto příkazů (s výjimkou podpory barev) zaneseny do nového standardu (nicméně ve většině interpretů doposud tyto příkazy jsou), ale namísto toho vznikla nová datová kategorie: zdroje. PostScript tak mohl být snadno a kompatibilně rozšířen o podporu speciálních funkcí. Navíc přibyla možnost kódovacích a kompresních filtrů (jpeg DCT, LZW, CCITT aj.), které umožnily významně zmenšit zvlášť velikost bitmap. Přibyla také podpora nezávislých barevných prostorů. Největší vnitřní změnou Level 2 je pak podpora úklidu paměti (Garbare Collection), celkový počet změn je však o mnoho vyšší. PostScript LL3 (Language Level 3, 1997): Do LL3 přibylo mnoho dalších funkcí. Mezi hlavní patří podpora přechodů (Gouraudovo stínování), zobecnění rastrovacích funkcí (funkce SuperScreen čtyřnásobně zvýší počet vykreslených odstínů na tiskárně s malým rozlišením), interpretace mnoha dalších typů písem či práce s vícesložkovými barevnými prostory. Pro nás je též důležité, že se do standardního kódování znakových sad dostaly i české znaky. Display PostScript (DPS): Ještě před vznikem Level 2 vznikla speciální mutace PostScriptu pro obrazovkové servery. Většina jeho funkcí byla zařazena do Level 2, ale několik dalších, které nemají pro tisk význam, zůstalo jako rozšíření (podpora více vláken, rolování v oknech apod.). Zdroj: [3]
2.2.2
Encapsulated PostScript
Obyčejný PostScriptový soubor, jaký se používá na tisk, není příliš vhodný pro zařazení do jiného dokumentu - v jeho hlavičce se totiž většinou nacházejí příkazy pro nastavení zařízení a souřadného systému, které by narušily celý zbytek dokumentu. Proto vznikl nový formát - je jím zapouzdřený PostScript (Encapsulated PostScript - EPS). Od normálního strukturovaného PostScriptu se příliš neliší - jediný zásadní rozdíl je v tom, že neobsahuje žádné příkazy pro nastavení zařízení či souřadného systému a nemanipuluje s interpretem tak, aby to ovlivnilo zpracování ostatních částí dokumentu. Některé PostScriptové příkazy tedy formát EPS zcela zakazuje, jiné omezuje. Používá se pro rastrové, vektorové i kombinované obrázky. EPS soubor se vyznačuje tím, že tzv. bounding box (obdélník ohraničující tisknutelnou oblast) obsahuje jen a pouze kýžený obrázek (na rozdíl od klasického PS souboru, kdy bounding box kopíruje formát listu papíru). Pokud soubor začíná „%!PS-Adobe-verze EPSF-verze“, značí to, že se jedná o zapouzdřený PostScript. Protože EPS je formou strukturovaného PostScriptu, aplikace se mohou orientovat podle strukturovaných komentářů. Zdroje: [5], [4]
6
Bakalářská práce
2.3
Publikační formáty
PDF
PDF je zkratkou z anglického názvu Portable Document Format - formát pro přenositelné dokumenty a je velmi rozšířeným souborovým formátem - zejména prostřednictvím internetu (viz odstavec 2.1). Formát PDF byl speciálně vytvořen pro přenášení dokumentů mezi různými počítači (hardware), operačními systémy a aplikačním software. PDF formát zajišťuje, že se na všech zařízeních zobrazí stejně. Formát PDF má otevřený kód a přesné specifikace, díky čemuž se vždy zobrazuje správně. Naproti tomu například formát MS DOC tyto kritéria nesplňuje, protože kompatibilita závisí na verzi Wordu ve kterém byl vytvořen. Formát PDF je založen na jazyce PostScript. Přebral ideu popisu stránky, ovšem vyřadil všechny programovací konstrukce. Naproti tomu přidal podporu komprese celého kódu, kryptografie, náhledů stran, hypertextových odkazů, apletů, barevných profilů ICC, zvuků a dalších. Je nezávislý na fontech, neboť je přidána schopnost vkládat do dokumentu použité fonty tak, aby byly k dispozici na libovolném jiném zařízení (tzv. embedded fonty). Pokud není daný font na daném systému přítomný, tzv. master font bude simulovat, pomocí informací o deskryptoru fontu uložených v dokumentu, původní font tak, aby se zajistilo originální formátování. PDF může být 7-bitový ASCII nebo binární soubor. Formát PDF také obsahuje systém pro uložení různých částí dokumentu do jediného souboru, s použitím komprese obrázků a textu (LZW, JPEG, RLE, …). Proto jsou soubory PDF typicky výrazně menší než odpovídající dokumenty ve formátu PostScript, který je čistě textový. Pro ochranu obsahu dokumentů před neautorizovaným přístupem je podporováno také šifrování. Může být použito symetrického RC4 šifrovacího algoritmu a hash funkce MD5. Autor dokumentu může specifikovat, jaké operace budou uživatelům povoleny (tisk, kopírování textu a grafiky do schránky, změny dokumentu…). PDF používá náhodného přístupu k datům. Na konci souboru je uložena tabulka s křížovými odkazy. Díky tomu je čas na zobrazení libovolné stránky dokumentu téměř nezávislý na celkovém počtu stránek dokumentu. Aktualizace dokumentu je prováděna inkrementálně, na konec souboru. Předchozí data zůstávají netknutá na svém místě. Tím je zajištěna velmi rychlá modifikace a také možnost odvolání posledních (byť uložených) změn. Formát PDF je rozšiřitelný. Pokud načítáte novější verzi PDF čtecí aplikací, která neumí nově implementované prvky, pak je ve většině případů přeskočí a pokračuje ve čtení. Linearizovaný formát PDF umožňuje efektivní přírůstkový přístup k datům. Může být vhodným zejména v případu, kdy dokument načítáme v síťovém prostředí přes pomalý kanál. Nejdříve by měla být načtena nejdůležitější data (např. hypertextové odkazy, abychom nemuseli čekat až se načte kompletní obsah stránky a pak teprve „skočit“ na jinam). Pro formát PDF existují volně dostupné prohlížeče pro mnoho platforem. Nejznámější je prohlížeč mateřské firmy Adobe - Adobe Reader [11], který je k dispozici zcela zdarma. Zatím poslední verze PDF je 1.6 (PDF Reference, Fifth Edition, Version 1.6 [10]). Zdroje: [6], [7], [3]
7
Bakalářská práce 2.3.1
Publikační formáty
PDF versus HTML
Jazyk HTML (Hypertext Markup Language) si za cíl klade popsat obsah WWW stránky tak, že konkrétní způsob zobrazení stránky je na libovůli prohlížeče, potažmo uživatele. To na jedné straně umožňuje zobrazovat dokumenty tak, aby vyhovovaly čtenáři, na straně druhé znemožňuje zaručit přesně stejný vzhled dokumentu u všech konzumentů. Oproti tomu je cílem formátu PDF zajistit co nejpřesněji stejné zobrazení na libovolném zařízení. Formát PDF je proto před HTML upřednostňován zvláště v případě graficky bohatého návrhu, u kterého autor vyžaduje dodržení původního vzhledu, u reklamních materiálů, prospektů apod. V rámci HTML lze téhož dosáhnout pomocí bitmapové grafiky či (v poslední době) pomocí vektorové grafiky, např. ve formátu SVG (Scalable Vector Graphics). Takové řešení však trpí mnoha nedostatky a odstraňuje většinu předností jednoduchého textového formátu. Výsledné dokumenty jsou také obvykle výrazně větší než původní HTML text. Typickým příkladem rozdílů je chování při zvětšování dokumentu, např. pro lepší čitelnost pro osoby s vadou zraku: • Při zvětšení PDF dokumentu se pouze zvětšuje měřítko, vzhled dokumentu zůstává zachován; při vysokém zvětšení se na obrazovku nevejde celý sloupec textu a je třeba horizontální posuv pro čtení celého řádku. • Pro zvětšení HTML dokumentu stačí zvětšit velikost použitého písma, text se přeformátuje tak, aby se stále vešel do šířky okna prohlížeče, při tom se ovšem vzhled dokumentu změní, řádkové zlomy jsou mezi jinými slovy, dokumentu se zvýší počet řádků textu atd. (Poznámka: novější verze formátu PDF umožňují vytvářet dokumenty, které se mohou také přeformátovat stejným způsobem, tato možnost však typicky není využívána.) Zdroj: [6]
8
Bakalářská práce
3
Volně dostupné programy pro konverzi PDF/PS do textu
Volně dostupné programy pro konverzi PDF/PS do textu
Pro převod dokumentů ve formátech PDF a PostScript do čistého textu existuje poměrně mnoho kvalitních komerčních programů. Nejznámější jsou Adobe Acrobat Professional spolu s programem Acrobat Distiller. My se ale zaměříme pouze na utility (sloužící k převodu PDF a PS do textu), které jsou šířené zdarma. Těchto volně dostupných utilit není mnoho. Jsou to velmi často konzolové aplikace tj. ovládají se pomocí příkazové řádky, což lze s výhodou využít k automatickým úlohám dávkové konverze. Pro svou práci často vyžadují podporu Ghostscriptu [12] (open source interpret PostScriptu) či přídavných ifiltrů. Společnou nevýhodou těchto utilit je nízká spolehlivost a chybovost při konverzích. Kvalita úspěšně převedených textů je zřídkakdy dobrá - je ztraceno původní formátování dokumentu apod. Všechny utility mají problémy s českou diakritikou.
3.1
Open source
Uvedené programy (utility) jsou šířeny pod licencí open source, která umožňuje získání zdrojových kódů programu.
3.1.1
Ghostscript
Ghostscript [12] je nejpoužívanější interpret jazyka PostScript. Jeho vývoj je podporovaný firmou Aladdin Enterprises a nyní též firmou Artifex Software (ta vyvíjí komerční OEM verze). Ghostscript dnes zahrnuje implementaci PostScriptu Level 2 a téměř kompletní implementaci LL3. Ghostscript si poradí i s formáty PDF a DPS. Většina ovladačů je na vysoké úrovni, připravena na ostré nasazení v praxi. Ghostscript používá i mnoho jiných aplikací - tiskové ovladače, převodníky grafických formátů, grafické servery, prohlížeče a další. Možnosti Ghostscriptu však nekončí pouhým rastrováním. Pomocné nástroje umějí mnohem více: zjednodušovat postscriptový kód, převádět mezi PostScriptem, zapouzdřeným PostScriptem (EPS) a PDF, počítat ohraničovací rámy apod. (Zdroj: [3]) Tento interpret postscriptového kódu využívají pro extrakci textu z PS či PDF některé jiné utility (dále uvedené). Ghostscript je konzolová aplikace, ale existuje k ní také GUI nadstavba GSview [13], která dovoluje zobrazení a tisk vybraných stránek.
3.1.2
ps2ascii
Jde o část Ghostscriptu, která je samostatně spustitelná. Utilitu najdeme v adresáři, kde je Ghostscript nainstalován - v podadresáři gsverze\lib. Konverze je pomalá. Ve výsledném textu se objevují pouze znaky US-ASCII (7-bitové kódování). Nejsou tedy přítomny znaky s diakritikou.
9
Bakalářská práce
Volně dostupné programy pro konverzi PDF/PS do textu
Spuštění: ps2ascii.bat Dávkový soubor ps2ascii.bat volá jiný dávkový soubor - gssetgs.bat, který nastavuje systémové proměnné GS a GSC na hodnoty gswin32 a gswin32c. Programy gswin32.exe a gswin32c.exe jsou umístěné v adresáři gsverze\bin. Je tedy nutné přidat cestu k tomuto adresáři (např. c:\Program Files\gs\gs8.14\bin) do systémové proměnné PATH. Pro konverzi stačí zkopírovat dávkové soubory ps2ascii.bat a gssetgs.bat kamkoliv na disk a spustit: ps2ascii.bat [filename.ps [output.txt]] Pokud je uveden pouze vstupní soubor, je výsledek vypsán na stdout. Pokud vstupní soubor chybí, pak se utilita chová jako filtr a bere si vstup z klávesnice.
3.1.3
pstotext
Open source projekt [14], naprogramovaný v C a C++. Umí převádět PS a PDF do textu. Používá OCR heuristiky (rozpoznání textu z obrázku) a je proto velmi pomalý. Pstotext pracuje tak, že „řekne“ interpretu Ghostscript, aby načetl postscriptovou knihovnu a předá mu soubor, který má být konvertován. Knihovna zachycuje renderované textové operátory a posílá informace o textu zpátky programu pstotext, který provede postprocessing. Tyto informace obsahují znakové metriky a kódovací vektory a také dodatečné informace o ohraničení textu, takže ve většině případů jsme schopni rekonstruovat plain-text se správnými mezery mezi slovy a odřádkováními. Dokonce vše funguje i pro otočený text. PostScriptová úloha nebo PDF dokument často renderuje jedno slovo jako několik řetězců kvůli dosažení správného odsazení mezi skupinkami znaků. Pstotext se snaží spojit tyto skupinky řetězců zpět dohromady. Používá pro to jednoduché heuristiky: řetězce oddělené na dvě části na vzdálenost menší než 0,3 násobek minima průměrných šířek znaků, jsou považovány za část stejného slova. To způsobuje, že interpunkce následuje správně za slovem. Jazyk PostScript poskytuje různá kódovací schemata, naproti tomu pstotext vždy ukládá výsledek v kódování ISO 8859-1 (Latin-1). Když daný znak není v ISO 8859-1 přítomný, pak pstotext použije sekvenci znaků. Pstotext obsahuje také heuristiky, které si poradí s fonty, jejichž kódovací vektor neodpovídá konvencím společnosti Adobe. Spuštění: Nejprve je nutné zkompilovat zdrojové kódy překladačem jazyka C. Druhou možností je obstarat si přímo binární podobu utility - ta je součástí programu GSview pod Windows, který je sice shareware, ale obsahuje v sobě utilitu pstotext, která má vlastní licenci. Protože utilita volá program gswin32.exe, který je součástí Ghostscriptu, je nutné vložit cestu c:\Program Files\gs\gsverze\bin do systémové proměnné PATH. Pak stačí spustitelný soubor pstotxt3.exe spolu s DLL knihovnou pstotxt3.dll zkopírovat kamkoliv na disk a spustit: pstotxt3.exe [option|file]
10
Bakalářská práce 3.1.4
Volně dostupné programy pro konverzi PDF/PS do textu
PreScript
Jde o projekt knihovny New Zealand Digital Library na univerzitě ve Waikato na Novém Zélandě. Utilita je napsána v jazycích PostScript a Python. Pro její spuštění je tedy potřeba interpret jazyka Python a interpret PostScriptu - GhostScript. Tuto utilitu se bohužel nepodařilo spustit. Podle zjištěných informací [15] nabízí PreScript převod dokumentů ve formátu PostScript do čistého ASCII nebo také do jednoduchého HTML. Při konverzi používá nejrůznější heuristické metody - pro detekování hranic slov a odstavců původního textu.
3.1.5
pdftotext
Utilita pdftotext je součástí balíku Xpdf [16], což je open source projekt napsaný v jazycích C a C++. Výhodou je, že může být spuštěna téměř na všech platformách. Je samostatně spustitelná, nevyžaduje žádný jiný program. Slouží ke konvertování PDF dokumentů do plain-textu. Pdftotext čte soubor PDF a zapisuje do textového souboru. Spuštění: pdftotext.exe [options]
[] Pokud není jméno textového souboru specifikováno, pak je použito jméno původního souboru PDF ale s příponou .txt. Pokud je místo jména souboru zadáno ‘-‘ (pomlčka), pak je text vypsán na stdout. Kódování výstupu může být UTF-8, Latin1, ASCII7. Mezi nejvýznamnější parametry ovlivňující výstupní text patří: - layout snaží se zachovat originální fyzický layout dokumentu - raw ponechá části textu v pořádku, jak jdou obsahově po sobě V běžném režimu si neporadí s textem rozděleným do sloupců. Např. pro tyto sloupce „Zde je text „Tady začíná prvního sloupce.“ druhý sloupec.“ vypíše: „Zde je text Tady začíná prvního sloupce. druhý sloupec.“ Tento problém řeší použití parametru -raw.
3.1.6
ps2txt
Samostatný, velmi jednoduchý prográmek [17], napsaný v jazyce C. Pouze extrahuje uzávorkované řetězce z postscriptového dokumentu a je pro to velmi rychlý. V PostScriptu je sice veškerý zobrazovaný text napsán v závorkách, ale slova nejsou celistvá. Např. (tautologie)j(a)g(pra)n(vidlo) = „tautologie a pravidlo“. Výstup obsahuje pouze znaky US-ASCII - ostatní znaky jsou zapsány ve tvaru escape sekvence. Spuštění: Program je k dostání v podobě zdrojového .c souboru. Po přeložení se spouští: ps2txt.exe [-dvi] [-] [input_file.ps] Vstup může přijít z klávesnice (stdin) nebo ze souboru. Protože výstup je jen na stdout, je nutné pro uložení výsledku do souboru použít přesměrování operačního systému. Parametr -dvi se používá pro PS soubory, generované dvi-to-PostScript konvertory.
11
Bakalářská práce
3.2
Volně dostupné programy pro konverzi PDF/PS do textu
Služba MS Windows Indexing Service a rozhraní IFilter
Služba Indexing Service získává informace ze sady dokumentů a uspořádává je způsobem, který umožňuje rychlý a snadný přístup k těmto informacím (pomocí funkce Hledat, formuláře služby Indexing Service nebo prohlížeče sítě WWW). Tyto informace mohou zahrnovat text dokumentu (jeho obsah) a charakteristiku či vlastnosti dokumentu (např. jméno autora). Po vytvoření indexu můžete zadat dotaz na dokument, obsahující klíčová slova, fráze nebo vlastnosti. Služba Indexing Service vrátí seznam všech dokumentů, které splňují zadaná kritéria vyhledávání. Služba Indexing Service používá filtry dokumentů k extrahování obsahu a hodnot vlastností z dokumentu a tyto informace jsou předány programu pro sestavení indexu. Tento proces se nazývá indexování. Správci a vývojáři aplikací mohou vyvinout vlastní filtry pro různé typy dokumentů. (Zdroj: [18])
3.2.1
Filtrování dokumentů
Dokumenty mohou být uloženy v mnoha různých formátech. Index Server [19] nemůže znát všechny formáty dokumentů. Proto indexovací model dovoluje přidání plug-inů nazvaných filtry (jako DLL knihovny), které slouží k extrahování obsahu z široké škály formátů. Proces extrahování textového obsahu z dokumentu se nazývá filtrování. Když je Index Server připraven filtrovat soubor, určí formát dokumentu podle přípony souboru. V registrech jsou uloženy asociace mezi příponami souborů a DLL knihovnami filtrů. Podle těchto informací rozhodne Index Server, jaká bude použita DLL knihovna pro filtrování daného souboru. Pomocí utility FiltDump [21] můžeme zjistit, co filtr (asociovaný s danou příponou souboru) předá Index Serveru. Pro vypsání seznamu filtrů, přiřazeným k daným příponám, slouží utilita FiltReg [22].
3.2.2
IFilter
Rozhraní IFilter [20] skenuje dokumenty na text a vlastnosti (nazývané atributy). Z dokumentů extrahuje skupinky textových informací, ignoruje veškeré vestavěné formátování dokumentu a uchovává si informace o pozici textu. Také extrahuje hodnoty vlastností celého dokumentu nebo jeho přesně stanovených částí. IFilter poskytuje základy pro vytváření vysokoúrovňových aplikací jako indexery dokumentů a aplikačně nezávislé prohlížeče. Toto rozhraní se implementuje, pokud je potřeba poskytnout filtr pro extrahování informací z proprietárního souborového formátu. Full-textové vyhledávače jako Indexing Service volají metody tohoto rozhraní, aby mohly extrahovat text a informace o vlastnostech dokumentu pro vytváření indexu. Konverze dokumentů PDF a PS do textu: Myšlenkou je, že místo používání utilit jako pstotext, pdftotext a dalších, použijeme volně dostupných ifiltrů, sloužících pro indexování dokumentů ve formátech PDF a PostScript. Pro konverzi těchto dokumentů použijeme navíc utilitu FiltDump...
12
Bakalářská práce 3.2.3
Volně dostupné programy pro konverzi PDF/PS do textu
FiltDump
FiltDump [21] je konzolová utilita od Microsoftu používající rozhraní IFilter pro výpis informací o dokumentu, včetně jeho obsahu. Program byl původně zamýšlen jako debugovací nástroj pro Index Server. FiltDump nahrává pro specifikovaný dokument implementaci rozhraní IFilter (pokud je pro příponu souboru registrován nějaký ifiltr) a vypisuje obsah dokumentu, který produkuje DLL knihovna filtru příslušící dané příponě dokumentu. Jak program získat: Tato utilita je součástí Microsoft Platform SDK: ..\Microsoft SDK\Bin\FiltDump.exe Je možné ji získat také po instalaci vývojového prostředí Microsoft Visual Studio .NET: ..\Microsoft Visual Studio .NET 2003\Common7\Tools\Bin\FiltDump.exe Spuštění konverze: Je nutné mít nainstalovánu službu Indexing Service, která ale nemusí být spuštěna. Dále je potřeba mít nainstalovaný příslušný ifiltr, který bude provádět samotnou extrakci textu z dokumentu. FiltDump.exe [-b] [-o unicode_output_file] [-s buffer_size] ... -b vytiskne pouze obsah dokumentu bez přídavných záznamů -s kontrola velikosti textového bufferu -o uložení výsledného textu do souboru v kódování Unicode Např.: FiltDump.exe -b dokument.pdf FiltDump.exe -b clanek.ps FiltDump.exe -b -o output.ps clanek.ps Text je vypisován na stdout, kromě použití parametru -o, kdy je uložen do souboru (ve formátu Unicode). Jinak je nutné použít přesměrování operačního systému.
3.2.4
Adobe PDF IFilter
Adobe PDF IFilter [23] je určen pro náročné uživatele, kteří chtějí indexovat PDF dokumenty pomocí indexovacích klientů od Microsoftu. To umožní ostatním uživatelům snadné vyhledávání v PDF dokumentech. Adobe PDF IFilter je volně stažitelná DLL knihovna. Poskytuje most mezi MS indexovacím klientem a knihovnu PDF souborů. Skládá se z kódu, který parsuje PDF soubory a také z kódu zajišťující rozhraní s indexovacím klientem. Když indexovací klient potřebuje indexovat obsah PDF souboru, podívá se do registrů po odpovídající DLL knihovně a nalezne Adobe PDF IFilter. Ten vrátí indexovacímu klientovi extrahovaný text. Indexovaní klient potom může indexovat výsledek a vrátí odpovídající výsledky uživateli.
13
Bakalářská práce
Volně dostupné programy pro konverzi PDF/PS do textu
Jde o oficiální řešení od společnosti Adobe a proto podporuje všechny verze PDF dokumentů. Adobe PDF IFilter produkuje text určený výhradně pro indexovací služby, ne pro zobrazovací účely. Proto je všechen text vypsán dohromady (pouze oddělená slova) a chybí oddělení jednotlivých odstavců a původní layout dokumentu. Tento ifiltr je dostupný zdarma [23]. Instalace: Instalace je velmi snadná - stačí zastavit službu Indexing Service, odinstalovat případné předchozí verze Adobe PDF Ifiltru a spustit instalační soubor (ifilter60.exe). Adobe PDF IFilter se sám integruje do systému. Konverze dokumentu se spouští pomocí utility FiltDump.
3.2.5
PostScript IFilter
PostScript IFilter [24] umožňuje indexování a prohledávání postscriptových dokumentů. Rozšiřuje službu Microsoft Indexing Service o extrahování textového obsahu z PS dokumentů. Za vývojem tohoto ifiltru stojí společnost IFilterShop, která jej nabízí komerčně. Pro nekomerční aktivity je ale možné jej využívat zcela zdarma [24]. Instalace: Velmi snadná. Zastavit službu Indexing Service a všechny příslušné klienty (MS vyhledávací služba apod.). Odinstalovat předchozí verze. PostScript IFilter se sám integruje s MSN Desktop Search, službou Indexing Service a vyhledáváním souborů. Konverze dokumentu se spouští pomocí utility FiltDump.
14
Bakalářská práce
4
Kolekce souborů pro testování
Kolekce souborů pro testování
Kolekcí rozumíme množinu nějakých dat (zpravidla rozsáhlou). Může to být množina objektů v paměti, ale také množina souborů na paměťovém médiu. My se budeme zabývat právě kolekcí souborů.
4.1
Hledání dvojic PDF/PS dokumentů s originálními texty
Pro naše účely testování utilit, pro konverzi dokumentů ve formátech PDF a PS do textu, bylo nutné opatřit velké množství souborů ve formátech PDF a PostScript - a to v různých verzích těchto formátů (pro získání objektivních výsledků). To by nepředstavovalo žádný velký problém. Na internetu lze nalézt obrovské množství dokumentů právě v těchto formátech. Protože jsme však při výběru řešení, jak porovnat kvalitu konverze jednotlivých utilit, zvolili porovnávání převedených textů (z PDF/PS dokumentů) s originálními texty, bylo nutné získat PDF a PS soubory spolu s originálními textovými soubory. Poznámka: Originálními textovými soubory budeme rozumět dokumenty v čistě textové podobě, které jsou obsahově rovnocenné stejně pojmenovaným dokumentům ve formátech PDF nebo PS.
4.1.1
Download z internetu
Získání takovýchto dvojic dokumentů (PDF + TXT nebo PS + TXT) není snadný úkol. Na internetu lze nalézt kvantum publikací ve formátech PDF a PostScript, ale jen velmi zřídka je k těmto dokumentům k dispozici ještě textová alternativa. Zaměříme se pouze na anglicky psané publikace a to ze dvou důvodů. Anglicky psaných publikací lze nalézt na internetu nepoměrně více, což nám dává větší šanci nalézt zmiňované dvojice PDF/PS dokumentů s originálními texty a navíc není náplní naší práce zabývat se různým kódováním češtiny textových souborů. S použitím vyhledávače Google bylo nalezeno několik zdrojů (viz dále), odkud byly stáhnuty publikace zvěřejněné ve více formátech. Pro samotné stahování byl použit program FlashGet (v1.6), který je dostupný zdarma (s reklamním bannerem). Program se integruje do prohlížeče MS Internet Explorer a umožňuje stáhnout z webové stránky vybrané odkazy (např. podle zvolené přípony). Při stahování tisíců dokumentů z jediné webové stránky však program bez jakéhokoliv oznámení ukončil svoji činnost. Problém byl vyřešen použitím webového prohlížeče Mozilla Firefox (v1.5.0.1) s doinstalovaným pluginem FlashGot (v0.5.9), který poskytuje rozhraní pro spolupráci se stahovačem FlashGet (a jinými). S tímto vybavením už bylo možné stahovat libovolné množství souborů.
15
Bakalářská práce
Kolekce souborů pro testování
Poznámka: Zkoušel jsem také open source program WinHTTrack určený pro stahování kompletního obsahu webových stránek (tzv. „pavouk“), který se mi ale nepodařilo nakonfigurovat přesně podle představ (ukládání jen vybraných formátů a do generovaných adresářů apod.)
4.1.2
Zdroje publikací
Nejvýznamnějším zdrojem publikací ve formátech PDF + TXT se stal elektronický archiv organizace National Science Foundation. Jde převážně o přírodovědecké, hospodářské či politické publikace - krátké až středně dlouhé texty. Bohužel je zastoupeno malé procento dokumentů se sloupcovým layoutem (se kterým mají utility pro extrakci textu většinou problémy a bylo by vhodné je řádně otestovat). Další dvojice souborů, potřebné pro testování, se podařilo získat zejména na různých zahraničních univerzitách (viz Tabulka 4.1). Dvojic souborů PS + TXT se podařilo nalézt jen malé množství (41). Zdroj http://www.nsf.gov/publications/ http://www.dtc.umn.edu/~odlyzko/doc/recent.html ostatní
Počet dvojic PDF + TXT 2267 19 18
Zdroj http://www.dtc.umn.edu/~odlyzko/doc/recent.html http://www.nsf.gov/publications/ ostatní
Počet dvojic PS + TXT 18 8 15
Zdroj http://www.cs.washington.edu/research/ http://www-inst.eecs.berkeley.edu/ ostatní
Počet dvojic PDF + PS 261 26 9
Tabulka 4.1: Zdroje publikací
4.1.3
Třídění skupin dokumentů podle přípon
Pro třídění značného množství získaných dokumentů v různých formátech byl vytvořen pomocný PHP skript. Ten přemisťuje dokumenty se stejným názvem, ale v různých formátech (podle přípony souborů), do zvláštních adresářů (složek), generovaných podle zastoupení přípon ve skupině stejně pojmenovaných dokumentů.
16
Bakalářská práce
Kolekce souborů pro testování
Použití: Do adresáře „roztridit“ se nakopírují všechny dokumenty (bez vnořených podadresářů). Spustíme skript - je nutné mít nainstalovaný webový server, např. Apache a dále jazyk PHP v libovolné verzi. Skript vypíše abecední seznam souborů a ke každému souboru seznam přípon tj. v kolika různých formátech je dokument k dispozici. V základním adresáři se vytvoří podadresáře, vygenerované podle přípon skupin dokumentů (např. „.pdf + .txt + .ps\“ ), kam se přemístí dokumenty tvořící takovouto skupinu podle přípon. Příklad výpisu třídícího skriptu je uveden v Příloze A.
4.2
Problém s originálními texty
4.2.1
Originální texty k PDF dokumentům
Texty, které považujeme za originální, se mohou od své PDF verze drobně odlišovat. U publikací stáhnutých ze zdroje elektronického archívu organizace National Science Foundation bylo vypozorováno, že v textovém souboru mohou být 2-3 řádky tvořící hlavičku (titulek, datum, ...), které v PDF dokumentu nejsou. Pravděpodobně totiž tyto textové soubory vznikly až extrakcí obsahu z PDF dokumentů. Spoléháme však na jejich vysokou kvalitu (shodnost s obsahem PDF dokumentu), jelikož jde o zveřejněné dokumenty. Výše uvedené drobnosti budeme ignorovat - výsledky porovnání dvojic textů tím budou sice ovlivněny, ale nevýznamně. Poznámka: Ideální dvojice PDF + TXT bychom získali tak, že bychom z připravených textových souborů nechali vygenerovat PDF dokumenty, ovšem v různých variacích. Pak by ale postrádalo smysl testování konverze z PDF do textu, protože PDF dokumenty vytvořené z textových souborů by postrádaly jakýkoliv layout a výsledky by byly značně zkreslené.
4.2.2
Originální texty k PS dokumentům
Jak již bylo zmíněno, dvojic dokumentů ve formátu PostScript spolu s textovou variantou, bylo získáno pouze 41. Takové množství by pro testování, zaměřené na kvalitu konverze utilit z PostScriptu do textu (porovnáváním dvojic převedených textů s originálními), nestačilo. Proto jsme situaci vyřešili získáním dvojic PDF + PS dokumentů (viz Tabulka 4.1) a „originální texty“ k postscriptovým dokumentům jsme získali z PDF dokumentů. Použili jsme k tomu profesionální nástroj Adobe Acrobat 7 Professional, který umožňuje dávkovou úlohou převádět PDF dokumenty do jiných formátů. Provedli jsme tedy dávkovou konverzi PDF do textu. Některé výsledné textové soubory však byly „pokažené“ (např. všechna slova splynula dohromady). Problém jsme vyřešili načítáním PDF souborů v programu (tak aby se zobrazily) a ručním vybráním veškerého textu
17
Bakalářská práce
Kolekce souborů pro testování
z dokumentu, uložením do schránky a vložením do textového souboru. Další nepříjemností bylo, že některé výsledné textové soubory neobsahovaly text, ale znaky z celé ASCII tabulky. To bylo způsobené převodem z PDF, tvořených křivkami (tedy objekty a ne vloženým textem, např. kvůli zobrazení matematických symbolů apod.). Takovéto textové soubory jsme nezahrnuli do testovací kolekce. Ostatní vytvořené textové soubory (celkem 296) jsou velice kvalitní a považujeme je za referenční (velmi blízké neexistujícím originálním textovým souborům) a dále s nimi pracujeme - tj. jsou porovnávány s texty převedenými z PS dokumentů pomocí dostupných utilit.
4.3
Kolekce souborů pro dávkovou konverzi
Kolekce pro otestování dávkové konverze utilit, programem Batch PDF/PS to plain-text convertor, se rozděluje na dvě podmnožiny. Jsou to PDF kolekce a PS kolekce. Tyto kolekce obsahují ovšem kromě samotných PDF/PS souborů také originální texty k těmto dokumentům - kvůli snadnému vytváření výstupní kolekce, sloužící pro následné vyhodnocování kvality konverze (viz dále). Jde tedy o kolekce dvojic stejně pojmenovaných souborů PDF + TXT a PS + TXT, které jsou uloženy v podadresářích, nazvaných podle zdroje dvojic souborů (viz Obr. 4.1).
Obr. 4.1: Struktura kolekce pro dávkovou konverzi
4.4
Kolekce dvojic textů pro porovnávání
Výstupem programu Batch PDF/PS to plain-text convertor je kolekce dvojic textů. Patří do ní texty extrahované z PDF/PS dokumentů a originální texty (získané z internetu spolu s těmito dokumenty PDF nebo PS). Texty tvoří dvojice, které jsou umístěné v adresářích, pojmenovaných podle utilit (a parametrů pro jejich volání), které byly použity ke konverzi (resp. jsou v těchto adresářích ještě roztříděné do podadresářů podle zdroje získání původních dvojic PDF/PS s originálními texty). Texty konvertované z PDF/PS dokumentů mají příponu .pdf.txt nebo .ps.txt. Strukturu kolekce znázorňuje Obr. 4.2. Tato kolekce slouží pro ověření kvality konverze použitých utilit pomocí programu Porovnání kvality konverze utilit, který porovnává dvojice textů fuzzy algoritmem pro porovnávání textů (fstrcmp [2]).
18
Bakalářská práce
Kolekce souborů pro testování
Obr. 4.2: Struktura kolekce dvojic textů pro porovnávání
4.5
Práce s kolekcemi
Skriptem roztříděnou kolekci dokumentů jsme rozdělili na PDF kolekci a PS kolekci (obě spolu s originálními textovými soubory). Tato rozdělená kolekce se načte v programu Batch PDF/PS to plain-text convertor a ten provede konverzi PDF a PS dokumentů voláním jednotlivých utilit. Zkonvertované texty zkopíruje spolu s originálními texty do výstupní kolekce do podadresářů, pojmenovaných podle použitých utilit. Zkonvertované texty mají příponu .pdf.txt nebo .ps.txt, podle toho z jakého formátu dokumentu byly získány. Tato kolekce dvojic textů - zkonvertovaných z PDF/PS spolu s originálními texty k dokumentům, tvoří vstupní kolekci pro následné porovnávání dvojic textů. Načítá se v programu Porovnání kvality konverze utilit.
Obr. 4.3: Práce s kolekcemi pomocí programů
19
Bakalářská práce
5
Program - Batch PDF/PS to plain-text convertor
Program - Batch PDF/PS to plain-text convertor
Program Batch PDF/PS to plain-text convertor slouží k dávkovému převodu dokumentů ve formátech PDF a PS do čistého textu. Využívá při tom volně dostupné programy (popsané v kapitole 3), které provádí samotné konverze. Program dokáže detekovat chybné převody a měří doby jednotlivých konverzí (provedených bez chyb). Na konci dávkové konverze poskytuje základní statistiku o převodech. Výsledné texty, extrahované z PDF/PS dokumentů ze vstupní kolekce, ukládá do souborů s příponou .pdf.txt nebo .ps.txt a umisťuje je (spolu s originálními texty, pokud se ve vstupní kolekci nachází do páru k PDF/PS dokumentům) do výsledné kolekce textů (do specifikované adresářové struktury, popsané v kapitole 4.4).
5.1
Volba programovacího prostředku
Při rozhodování, jaký programovací prostředek pro vývoj toho programu zvolit, bylo nutné zohlednit následující kritéria: • spouštění externích programů s čekáním na jejich ukončení • snadný návrh příjemného GUI • objektově orientovaný jazyk Rozhodl jsem se pro vývojové prostředí Borland Delphi 6 a tedy programovací jazyk Object Pascal, které splňují uvedené požadavky. Toto moderní vývojové prostředí je dostupné pro nekomerční účely zdarma.
5.2
Implementace
5.2.1
Rozdělení do tříd
GUI aplikace tvoří tyto formuláře (jsou to také třídy): • TFormMain - hlavní formulář aplikace • TFormProgress - zobrazení průběhu konverze • TAboutBox - zobrazení informací o programu Dále je program rozdělen do těchto tříd: • TUtilita - reprezentuje jednu z utilit (její parametry a specifické nastavení), použitých pro konverzi; obsahuje referenci na výsledky konverze této utility • TVysledky - objekt této třídy uchovává celkové výsledky konverze jedné utility a také odkazuje na textový seznam (TStringList) s detailním výpisem o konverzi
20
Bakalářská práce • • • •
Program - Batch PDF/PS to plain-text convertor
TUtilsList - třída odděděná od TObjectList; slouží pro uchování seznamu utilit (objektů třídy TUtilita) a pro načítání i ukládání tohoto seznamu ze/do souboru TFiles - procházení adresářové struktury vstupní kolekce souborů, práce se soubory TConvertor - konverze souborů PDF a PS do textu voláním externích utilit, detekce chybových převodů TVlaknoKonverze - třída odděděná od TThread, slouží pro spuštění dávkové konverze v samostatném vlákně
Výčtový typ: • TTypKonverze = (tkPDF, tkPS)
5.2.2
Procházení adresářové struktury kolekce
Ze zadaného adresáře kolekce získáme kompletní seznam všech souborů (zvolené přípony .pdf nebo .ps) a to ze všech podadresářů (do libovolné hloubky). Výsledný seznam souborů (souboryKomplet) je abecedně seřazený podle relativních cest k výchozímu adresáři. Algoritmus: vlož výchozí adresář do seznamu bufferAdresare; dokud není seznam bufferAdresare prázdný { setřídit položky seznamu bufferAdresare podle jména; adresarAktual = vyjmutá položka ze začátku seznamu bufferAdresare; naplnit seznamy soubory a adresare obsahem aktuálního adresáře; získané adresare přidat do seznamu bufferAdresare; setřídit položky seznamu soubory podle jména; přidat položky seznamu soubory do seznamu souboryKomplet; }
5.2.3
Spouštění utilit a přesměrování výstupu
Bylo nutné vyřešit problém, jak spouštět z aplikace externí programy (se zadanými parametry) a odchytit výpisy ze standardního výstupního a chybového zařízení (stdout a stderr). Některé utility totiž neumožňují výstup přímo do souboru, ale pouze na stdout. Odchycení chybových výpisů ze stderr bylo nutné pro detekování chybových převodů. Zvolil jsem možnost volání příkazového interpretu cmd.exe, který je součástí systému MS Windows. Interpret příkazové řádky je volán s parametrem „/C“, což umožňuje spustit z něj další program, uvedený (s možnými parametry) za tímto parametrem „/C“. Příkazový interpret umožňuje snadno přesměrovat výpisy z konzole (stdout i stderr) do souboru (uvedením jako posledních parametrů např. „1>stdout.tmp 2>stderr.tmp”).
21
Bakalářská práce 5.2.4
Program - Batch PDF/PS to plain-text convertor
Detekce chybového převodu
Testované utility nezkonvertují všechny PDF a PS dokumenty do textu bezchybně. Zjišťování chyb bylo problematické, protože pouze utility pstotext, ps2ascii a pdftotext oznamují chyby, které při konverzi nastaly - na standardní chybový výstup (stderr). Příklady chybových hlášení: pstotext, ps2ascii (utility závislé na interpretu GhostScript): - „AFPL Ghostscript 8.14: Unrecoverable error, exit code 1“ - „internal error 202“ Pokud je však na konci hlášení uvedeno „**** This file had errors that were repaired or ignored.“, pak nejde o chybu při konverzi. pdftotext: - „Error (0): PDF file is damaged - attempting to reconstruct xref table... Error: Couldn't find trailer dictionary Error: Couldn't read xref table“ Utilita pdftotext ale při převodu dokumentu s obrázky (a ne textem) žádné chybové hlášení neposkytne a uloží extrahovaný obsah dokumentu do souboru. Ten však místo textu obsahuje nesmyslné znaky. Další příklad chyby, která je však součástí převedeného textu (jako první řádek) : - „Error: Your printer driver needs to be configuredfor printing to a PostScript Language Level 1 printer.“ ___________ Bylo tedy nutné chyby při převodech vhodným způsobem detekovat (pokud možno všechny). • analýza výpisů standardního chybového zařízení • jednoduchá heuristika kontroly obsahu extrahovaných textů - jestli byl výstupní soubor vůbec vytvořen - nalezení řetězce „error“ úplně na začátku textu - počet písmen v textu je menší než minimální nastavený limit - kontrola četnosti výskytu určitých znaků
Poznámka: Chybové konverze nebyly zahrnuty do měřených průměrných časů konverzí jednotlivých utilit a vyprodukované texty nebyly umístěny do výsledné kolekce pro porovnávání dvojic textů. Poznámka: Utilita pstotext neextrahuje u některých postscriptových souborů jejich kompletní obsah a bez zahlášení chyby přečasně skončí. Získané texty nejsou pak úplné. Problém je blíže popsán v kapitole 7.1.2.
22
Bakalářská práce
5.3
Program - Batch PDF/PS to plain-text convertor
Export výsledků
Celkovou statistiku o provedených převodech je možné exportovat do formátu CSV, který lze načíst v libovolném tabulkovém procesoru. Podrobné výsledky převodů (logy) jednotlivých utilit lze uložit do textových souborů, pojmenovaných podle typu převodu (PDF nebo PS) a použité utility (se zadanými parametry). Příklad podrobného logovacího výpisu, vybranou utilitou provedené konverze, je uveden v Příloze D1.
5.4
Komunikace programu s okolím
Následující schematický obrázek 5.1 ukazuje činnost programu pro dávkovou konverzi a jeho vztah k externím programům, volaných z příkazového interpretu cmd.exe. Ukazuje také vstupy a výstupy souborů.
Obr. 5.1: Činnost programu pro dávkovou konerzi
23
Bakalářská práce
Program - Batch PDF/PS to plain-text convertor
Popis činnosti programu: 1 2 3 4
5 6 7 8 9 10 11 12 13
Volání příkazového interpretu cmd.exe (příkazová řádka systému Windows) z programu Batch PDF/PS to plain-text convertor. Testované utility jsou spouštěny z příkazového interpretu (s vhodnými parametry) a provádějí konverze PDF nebo PS dokumentů do textu. Extrahovaný text je uložen do dočasného souboru (converted.tmp) přímo utilitou. Po provedení konverze předá utilita řízení zpět příkazovému interpretu (cmd.exe) a ten ukončí svoji činnost - program pro dávkovou konverzi zaznamená dobu proběhlé konverze. Extrahovaný text může být vypsán některou utilitou pouze na stdout (místo uložení přímo do souboru). Některé utility zobrazí zprávu o chybách při převodu na stderr. Text vypsaný na stdout je přesměrován do dočasného souboru stdout.tmp. Hlášení o chybách, zobrazené na stderr, se ukládá do dočasného souboru stderr.tmp. Přejmenování souboru stdout.tmp na converted.tmp (v případě, že utilita poskytuje převedené texty pouze vypsáním na stdout). Soubor stderr.tmp, s informacemi o možných chybách při převodu, je analyzován. Extrahovaný text je prověřen jednoduchou heuristikou, pro zjištění, jestli byla konverze úspěšná. Pokud byla konverze úspěšná, je text umístěn do výsledné kolekce. K převedenému textu je do výsledné kolekce zkopírován i originální text.
S/L Načtení nebo uložení seznamu utilit (s kompletním nastavením pro spouštění konverze) do konfiguračního .INI souboru. Obsah souboru je uveden v Příloze C1. V1 Export celkových výsledků provedených konverzí. V2 Uložení podrobného logovacího výpisu konverze vybrané utility.
5.5
Testování a paměťová náročnost
Mnoho času zabralo ladění detekce chybových převodů. Při provádění dávkové konverze celé kolekce dokumentů všemi utilitami (sekvenčně za sebou) došlo k problému. Dávka nebyla dokončena celá - ve třech čtvrtinách celkového postupu testování se spouštění utilit ke konverzi zastavilo. Testování tak bylo znehodnoceno. Z přesměrovaného chybového výstupu byla zaznamenána tato chyba příkazového interpretu cmd.exe (resp. operačního systému): „Systém nemůže spustit určený program“. Příčina vzniku chyby nebyla zjištěna. Převody byly poté rozděleny po jednotlivých utilitách a po převodu celé kolekce danou utilitou byl systém pravidelně restartován. Problém se již neopakoval. Testování tak ale zabralo velmi mnoho času. Samotný program Batch PDF/PS to plain-text convertor zabírá kolem 3 MB operační paměti. Při provádění dávkové konverze se spotřeba paměti dynamicky mění, podle toho, kolik paměti ke své činnosti vyžadují spouštěné utility (zpravidla od 1 do 10 MB).
24
Bakalářská práce
6
Program - Porovnání kvality konverze utilit
Program - Porovnání kvality konverze utilit
Program Porovnání kvality konverze utilit slouží pro otestování kvality (přesnosti převodů) volně dostupných programů pro převod PDF a PS souborů do textu. Vznikl implementací navrhuté metody testování - zjišťování podobnosti konvertovaných textů s originálními texty (které bylo nutné získat spolu s PDF a PS dokumenty). Průměrné podobnosti takových dvojic textů pak vypovídají o přesnosti konverzí testovaných programů. Pro vypočtení podobnosti textů je použit algoritmus fstrcmp [2], který je volně dostupný pod GNU licencí. Neporovnává texty jedna ku jedné, ale používá fuzzy míru podobnosti. Poznámka: Algoritmus je značně složitý, proto pro pochopení problematiky fuzzy porovnávání textů odkazujeme do příslušné literatury [1]. Podobnosti textů jsou v aplikaci porovnávány: • bez úprav - konverzí získané texty jsou porovnány se svými originálními texty bez jakéhokoliv zásahu • s předzpracováním - u obou textů ze dvojice je nejprve snaha eliminovat veškeré formátování a tím transformovat texty do posloupností slov, oddělených mezerami
6.1
Volba programovacího prostředku
Při rozhodování, jaký programovací prostředek pro vývoj této aplikace zvolit, bylo nutné zohlednit následující kritéria: • využití algoritmu fstrcmp pro porovnávání textů • snadný návrh komplexního GUI • objektově orientovaný jazyk Protože získaný algoritmus fstrcmp [2] je napsaný v jazyce C a je natolik komplikovaný, že ho nelze snadno přepsat do jiného jazyka vyšší úrovně (zejména kvůli práci s ukazateli), bylo nutné zvolit jiné řešení: •
V úvahu připadla možnost volat algoritmus z naší aplikace jako samostatný program. Protože je ale funkce (pro porovnání textů) typu double, nelze ji předat po skončení programu jako návratovou hodnotu naší aplikaci. Toto omezení by se dalo řešit drobnou úpravou kódu programu tak, aby ukládal vypočtenou podobnost do souboru. Po skončení tohoto programu bychom vždy v naší aplikaci hodnotu ze souboru načetli. Není to ale příliš praktické řešení.
•
Pro vývoj aplikace byl zvolen jazyk Java, protože se podařilo získat algoritmus fstrcmp v podobě DLL knihovny, kterou je možné načíst v javovské aplikaci. Algoritmus lze následně volat jako metodu fStrCmp(...) z obalující třídy FuzzyStringComparison.
25
Bakalářská práce
Program - Porovnání kvality konverze utilit
Aplikace byla vytvářena ve vývojovém prostředí Eclipse, které je velmi robustní a umožňuje efektivní psaní javovského kódu. Jedinou nevýhodou vývoje aplikace v jazyce Java bylo pracné vytváření GUI.
6.2
Implementace
6.2.1
Rozdělení do tříd
Aplikace je napsána objektově s důsledným rozdělením tříd do jednotlivých vrstev podle modelu třívrstvé architektury (viz Obr. 6.1). Vrstvy jsou následující: • Prezentační vrstva - obsahuje funkce uživatelského rozhraní (zobrazení GUI) • Aplikační vrstva - tvoří prostředníka mezi vrstvou prezentační a vrstvou datovou, obsahuje tzv. business logiku aplikace, v této vrstvě dochází k transformaci dat mezi vstupně / výstupními požadavky a datovou vrstvou • Datová vrstva - obsahuje funkce pro přístup k informacím v datovém úložišti
Prezentační vrstva Vrstva aplikační logiky Datová vrstva Obr. 6.1: Model třívrstvé architektury
Aplikaci tvoří celkem 19 tříd (plus množství anonymních vnitřních tříd, použitých v GUI). Třídy jsou spolu s obsahujícími metodami podrobně popsány ve vygenerované dokumentaci (pomocí javadoc), umístěné na CD příloze.
6.2.2
Serializace objektů
Jazyk Java umožňuje uložit objekty tříd z paměti na disk nebo je naopak z disku načíst do paměti. Slouží k tomu metody writeObject a readObject ze tříd ObjectOutputStream a ObjectInputStream. Tato možnost byla využita pro načítání a ukládání kompletní reprezentace výsledků (všech provedených porovnání textů). Třídy, ze kterých se skládá objekt kompletních výsledků, musejí implementovat rozhraní Serializable. Dále musejí obsahovat statickou proměnnou (konstantu) static final long serialVersionUID, které se přiřadí pro každou třídu unikátní číslo.
26
Bakalářská práce
6.3
Program - Porovnání kvality konverze utilit
Statistika podobností textů
Z rozsáhlého statistického souboru podobností textů jsou počítány následující veličiny:
aritmetický průměr
∑x
x=
i
i
(6.1)
n
Pokud jsou pozorování soustředěna kolem svého průměru, je jejich variabilita malá. Pokud jsou naopak roztroušena ve značné vzdálenosti od průměru, pak je jejich variabilita velká. Variabilitu tedy často měříme právě pomocí odchylek pozorování od průměru. [26]
D=
rozptyl
∑ (x
i
− x) 2
n
směrodatná odchylka
σ= D=
variační koeficient
v=
___ 2
= x − x2
i
∑ (x
i
− x)2
i
n
σ
(6.2)
(6.3)
(6.4)
x
Poznámka: Celkové výsledky porovnání kvality konverze utilit (viz kapitola 7.2) jsou odvozené (a graficky znázorněné) pouze z vypočtených aritmetických průměrů podobností textů (průměry vypočteny u každé testované utility zvláště).
6.4
Export a import výsledků
Kompletní reprezentaci výsledků provedeného testování (jako objektu) je možné ukládat i načítat (z paměti na disk nebo naopak z disku do paměti). Uložený objekt (soubor se zvolenou koncovkou .obj) má podobu binárního souboru a není proto čitelný. Celkové výsledky vybrané utility, zároveň s detailním výpisem (logem) jednotlivých podobností textů, je možné vyexportovat do formátu CSV, který lze načíst v libovolném tabulkovém procesoru. Příklad exportovaného výsledku je uveden v Příloze D2.
27
Bakalářská práce
6.5
Program - Porovnání kvality konverze utilit
Komunikace programu s okolím
Následující schematický obrázek 6.2 ukazuje činnost programu pro hromadné testování podobnosti dvojic textů. Je znázorněno volání metody algoritmu fstrcmp z externí DLL knihovny a vstup porovnávaných textů.
Obr. 6.2: Činnost programu pro testování podobnosti dvojic textů
Popis činnosti programu: 1
Program volá algoritmus fstrcmp pro porovnání textů, jako metodu z DLL knihovny. 2+3 Texty určené k porovnání jsou programem načtené do paměti. Dále jsou porovnány (bez úprav anebo s předzpracováním) algoritmem fstrcmp - metodě jsou předány reference na tyto texty uložené v paměti. 4 Metoda algoritmu vrací podobnost dvou textů jako číslo typu double z intervalu <0;1>. V1 Načtení nebo uložení kompletní reprezentace výsledků (jako objektu) z/do paměti. V2 Export podrobného výsledku vybrané utility do formátu CSV. S/L Načtení nebo uložení seznamu testovaných utilit (s kompletním nastavením testů) do konfiguračního souboru ve XML formátu. Obsah vytvořeného konfiguračního souboru je uveden v Příloze C2.
28
Bakalářská práce
6.6
Program - Porovnání kvality konverze utilit
Testování a paměťová náročnost
Při testování tohoto programu na rozsáhlé kolekci dvojic textů se nevyskytly žádné problémy. Po spuštění programu je využíváno kolem 23 MB operační paměti. To je poměrně mnoho, navíc spotřeba paměti kolísá. Je to způsobené interpretací javovské aplikace pomocí Java Virtual Machine. Porovnávání textů pomocí fstrcmp [2] algoritmu je velmi rychlé. Kompletní zpracování testovací kolekce (porovnání 14 722 dvojic textů) trvalo 110 minut a spotřeba paměti se navýšila o 6 MB, protože uchováváme kompletní výsledky (jako objekt) v paměti. Tato paměťová spotřeba je zcela zanedbatelná.
29
Bakalářská práce
7
Výsledky
Výsledky
V první fázi byla prostřednictvím programu Batch PDF/PS to plain-text convertor provedena dávková konverze rozsáhlé kolekce PDF a PS dokumentů. Byla testována rychlost a chybovost převodů z PDF a PS do textu u volně dostupných utilit. Následně vytvořená kolekce - převodem získaných textů, spolu s originálními texty (k PDF/PS dokumentům) - byla v další fázi zpracována programem Porovnání kvality konverze utilit pro otestování kvality (přesnosti) převodů. Tímto programem byly porovnány podobnosti dvojic textů bez úprav a s předzpracováním. Pro samotné porovnání textů byl využit fuzzy algoritmus (fstrcmp [2]).
7.1
Konverze dokumentů PDF/PS do textu
7.1.1
Použité utility a ifiltry
Pro konverzi dokumentů PDF a PS do plain-textu, byly testovány pouze volně dostupné programy (popsané v kapitole 3). Dělí se do dvou základních skupin: •
utility pro převod PDF a PS do čistého textu - samostatně spustitelné, případně vyžadující podporu programu GhostScript (interpret jazyka PostScript)
•
ifiltry, doplňující službu Indexing Service o extrakci textových informací z uvedených formátů - pomocí utility FiltDump lze provést samostatnou konverzi dokumentů do textu
Tabulka 7.1 uvádí přehled testovaných utilit a ifiltrů (včetně verzí), dále udává závislosti mezi programy a typ konverze (PDF/PS do textu). Utilita pstotext pstotext [2] filtdump filtdump pdftotext ps2ascii ps2txt
Verze 1.8i 1.8h – – 3.01 1.7.2 2.1
(08.01.2003) (02.06.2001)
(17.08.2005) (12.12.2003) (22.02.1992)
Využívá Ghostscript v8.14 Ghostscript v8.14 Adobe PDF IFilter v6.0 PostScript IFilter v0.9 Beta – Ghostscript v8.14 –
Typ PDF/PS PDF/PS PDF PS PDF PS PS
Tabulka 7.1: Testované utility a ifiltry pro převod PDF/PS do textu Poznámka: pstotext[2] bude označovat modifikovanou verzi původní utility - viz dále
30
Bakalářská práce 7.1.2
Výsledky
Modifikace utility pstotext
Při konverzi některých postscriptových souborů utilitou pstotext bylo zjištěno, že extrahované texty nejsou úplné (tj. texty předčasně končí). Soubor pstotxtd.c utility pstotext původně zahrnoval tyto dvě řádky: #define LINELEN 2000 gs = fopen(gstemp, "r"); Řádky byly takto pozměněny: #define LINELEN 2048 gs = fopen(gstemp, "rb"); První změna nemá žádný vliv, zatímco druhá umožňuje utilitě úspěšně konvertovat postscriptové soubory, které obsahují znak ‘^Z’. Tento znak by se měl vyskytovat pouze v binárních souborech - v textových souborech znamená konec souboru. Při případném výskytu tohoto znaku v postscriptovém souboru původní verze utility selhala - přestala soubor parsovat a proto extrahovaný text nebyl kompletní. Poznámka: PostScript je čistě textový formát a proto by se v něm znak ‘^Z’ neměl vyskytovat.
Zdroj: [7]
7.1.3
Problém při konverzi PDF utilitou pstotext
U rozsáhlé kolekce PDF dokumentů byl při konverzi těchto dokumentů do textu pomocí utility pstotext (v původní i modifikované verzi) zjištěn následující problém: Utilita pstotext pro svou činnost vyžaduje interpret GhostScript (při konverzi volá tuto konzolovou aplikaci). Při konverzi několika PDF souborů (4 z celkem 2308), však provedla volaná aplikace GhostScript neplatnou operaci (viz Obr. 7.1) a konverze se nezdařila (jiné utility využívající GhostScript však problémy neměly). Protože jsme testovali konverzi utilit z PDF (a PS) do textu automatickou dávkou, pomocí programu Batch PDF/PS to plain-text convertor, který spouští jednotlivé konverze sekvenčně za sebou, velice nám tato chyba znepříjemnila testování. Po zobrazení dialogového okna o neplatné operaci nemohla dávková konverze pokračovat, dokud nebylo okno zavřeno. Program pro dávkovou konverzi totiž čeká, až utilita použitá ke konverzi ukončí svoji činnost. První testování bylo znehodnocené, protože byly ovlivněny časy konverzí (nebylo možné zavřít dialogové okno s chybou ihned po výskytu chyby, protože konverze celé kolekce trvala několik hodin...). Byly tak ale zjištěny soubory PDF, které způsobovaly
31
Bakalářská práce
Výsledky
problémy. Tyto 4 soubory byly vyřazeny z testovací kolekce, aby druhé (ostré testování) mohlo proběhnout v pořádku.
Obr. 7.1: Dialogové okno informující o chybě
7.1.4
Výsledky konverze PDF do textu
Nejpomaleji konvertuje PDF dokumenty (o průměrné velikosti 0,17 MB) utilita pstotext. Průměrná doba konverze je u této utility 3,9 sekund v neupravené verzi (1.8i) a 3,3 sekund v modifikované verzi. Za tuto drobnou časovou úsporu však nemůže samotná úprava kódu utility. Upravena byla totiž starší verze utility (1.8h), která zřejmě používá jiné algoritmy pro extrakci textu a je proto mírně rychlejší. Nejrychlejší konverze PDF souborů do textu provádí utilita pdftotext (s použitím paremetru -raw). Průměrná doba konverze byla změřena na 141 ms. Největší chybovost převodů byla naměřena u utility pstotext, která činí 12,1 % (u neupravené i modifikované verze). Naopak nejlépe, co se týče úspěšnosti konverzí (míry chybovosti), dopadla v testu utilita filtdump, využívající rozhraní Adobe PDF IFilter v6.0. Chybovost byla pouze 1,3 %. Podobný výsledek byl očekáván, protože použitý ifilter poskytuje společnost Adobe, která stojí za vývojem formátu PDF.
Detailní výsledky konverze PDF do textu: počet souborů: průměrná velikost:
2304 176 880 B (0,17 MB)
32
Bakalářská práce
Výsledky
(1,3 %)
Průměrná doba bezchybných konverzí 481 ms
Celková doba 0:23:29
132
(5,73 %)
155 ms
0:10:43
pdftotext (-layout)
132
(5,73 %)
155 ms
0:11:43
pdftotext (-raw)
132
(5,73 %)
141 ms
0:10:13
pstotext (-output)
280
(12,15 %)
3 943 ms
2:24:45
pstotext[2] (-output)
280
(12,15 %)
3 389 ms
2:05:34
Utilita (parametry)
Chybovost
filtdump (-b)
30
pdftotext (---)
Tabulka 7.2: Statistika konverze PDF do textu
7.1.5
Výsledky konverze PS do textu
Konverze postscriptových souborů jsou oproti konverzím PDF souborů časově mnohem náročnější. PS soubory jsou totiž typicky výrazně větší než soubory PDF. Průměrná velikost konvertovaných postscriptových souborů z testovací kolekce byla 1,01 MB. Nejkratší doba konverze byla změřena u utility ps2txt (s parametrem -dvi) na 200 ms. Tato utilita však disponuje pouze jednoduchými algoritmy pro extrahování uzávorkovaných řetězců z postscriptového kódu. Doby konverzí ostatních utilit jsou kolem 6 až 9 sekund. Nejhůře dopadla utilita pstotext (a to v obou verzích - obdobně jako u výše popsané konverze PDF do textu). Největší chybovost převodů byla naměřena u utility ps2ascii (využívající interpret GhostScript). Chybovost činí téměř 19 %, což je přibližně 5x více než u ostatních utilit. Nejmenší chybovost (3,56 %) byla zaznamenána u utility filtdump, využívající rozhraní PostScript IFilter v0.9 Beta. Chybovost převodů utility pstotext v modifikované verzi je o něco větší než v neupravené verzi (3,86 % a 5,04 %).
Detailní výsledky konverze PS do textu: počet souborů: průměrná velikost:
337 1 064 244 B (1,01 MB)
33
Bakalářská práce
Výsledky
12 (3,56 %)
Průměrná doba bezchybných konverzí 6 093 ms
Celková doba 0:38:10
ps2ascii (---)
64 (18,99 %)
5 186 ms
0:27:57
ps2txt (---)
17 (5,04 %)
206 ms
0:04:23
ps2txt (-dvi)
13 (3,86 %)
200 ms
0:03:21
pstotext (-output)
13 (3,86 %)
9 114 ms
0:52:05
pstotext[2] (-output)
17 (5,04 %)
8 977 ms
0:51:09
Utilita (parametry)
Chybovost
filtdump (-b)
Tabulka 7.3: Statistika konverze PS do textu
7.2
Výsledky porovnání dvojic textů udávající kvalitu konverze utilit
Algoritmem fstrcmp [2] bylo porovnáno celkem 2x 14 722 dvojic textů (bez úprav a s předzpracováním). Testování trvalo 110 minut. Algoritmus je i přes svou značnou složitost (fuzzy logika) velice rychlý. Zprůměrované podobnosti textů, konvertovaných z PDF/PS dokumentů, s originálními texty (k těmto dokumentům), významně vypovídají o kvalitě převodu použitých utilit. Je nutné zmínit, že výsledky jsou zatížené chybou - kvůli nemožnosti porovnávání převedených textů se zcela přesnou textovou podobou dokumentů PDF/PS (viz kapitola 4.2). Tato chyba je výrazně potlačena porovnáváním dvojic textů až po provedeném předzpracování (viz dále). Dvojice textů byly porovnávané: •
bez úprav Konverzí získané texty byly porovnány se svými originálními texty bez jakéhokoliv zásahu. Ve výsledném hodnocení kvality konverze má významnou váhu dodržení alespoň přibližného formátování (layoutu) původního dokumentu.
•
s předzpracováním U obou textů ze dvojice byla snaha eliminovat veškeré formátování a tím transformovat texty do posloupností slov, oddělených mezerami. Výsledky porovnání takto předzpracovaných textů pak vypovídají především o kvalitě konverze, využitelné pro extrahování textů pro indexovací účely (kde nezáleží na původním layoutu dokumentu). Je však nutné počítat s tím, že si takto předzpracované texty budou více podobné a tím se sníží rozdíly mezi kvalitou jednotlivých utilit.
34
Bakalářská práce 7.2.1
Výsledky
Vyhodnocení kvality konverze
Kvalita utilit pro konverzi PDF do textu Nejlepších výsledků konverze z PDF do textu dostála kombinace filtdump + Adobe PDF IFilter v6.0 - převedené a originální texty si byly podobné v průměru na 92,05 %. Jde o zajímavé zjištění, protože použitý ifilter od společnosti Adobe by měl produkovat texty určené pro indexovací služby a ne pro zobrazovací účely. Velice dobrého výsledku dosáhla také utilita pdftotext s parametrem -raw. Texty si byly podobné na 91,65 %. Stejná utilita ale s parametem -layout dopadla překvapivě nejhůře. Pro indexovací účely zvítězila utilita pdftotext s parametrem -raw (průměrná podobnost dvojic textů po předzpracování byla 97,65 %). Dále se umístily: modifikovaná verze utility pstotext, kombinace filtdump + PostScript IFilter v0.9 Beta a neupravená verze utility pstotext (v uvedeném pořadí, s nevýznamnými rozdíly). Nejméně kvalitní převody (nyní pro indexovací účely) poskytuje opět pdftotext (-layout).
Obr. 7.2: Průměrné podobnosti dvojic textů (originální + konvertované z PDF)
35
Bakalářská práce
Výsledky
Kvalita utilit pro konverzi PS do textu Při porovnání podobností originálních textů s texty získanými z PS dokumentů jednotlivými utilitami, jsou patrné výraznější rozdíly než u podobností originálních textů s texty převedenými utilitami z PDF dokumentů. Nejlepších výsledků konverze z PS do textu dosáhla modifikovaná verze utility pstotext. Dále pak utilita ps2ascii, která je součástí postscriptového interpretu Ghostscript. U obou utilit se převedené a originální texty podobají z více než 93,7 %. Nejhorších výsledků dosáhly utility ps2txt (bez parametru) a neupravená verze utility pstotext. Zde je velmi zajímavé zjištění, které statisticky potvrzuje již dříve zjištěný poznatek (viz kapitola 7.1.2), že původní verze utility pstotext nedokáže vždy extrahovat kompletní obsah postscriptového dokumentu (když je uprostřed souboru znak ‘^Z’). Výsledky pro indexovací účely jsou obdobné (pouze jsou podobnosti dvojic textů po předzpracování o několik procent vyšší).
Obr. 7.3: Průměrné podobnosti dvojic textů (originální + konvertované z PS)
36
Bakalářská práce
Výsledky
Podrobná statistika podobností dvojic textů Kromě průměrných podobností byly po porovnání všech dvojic textů rozsáhlé kolekce vypočteny ještě další statistické údaje: rozptyl a směrodatná odchylka. Podrobné výsledky uvádí Obr. 7.4. Poznámka: U jednotlivých vyexportovaných výsledků je uveden navíc ještě variační koeficient.
Obr. 7.4: Podrobná statistika podobností textů
Poznámka: Dávkové konverze i následné porovnávání textů byly testovány na počítačové sestavě s procesorem AMD Athlon XP 1,26 GHz a pamětí 384 MB DDR.
37
Bakalářská práce
8
Závěr
Závěr
Zabývali jsme se publikačními formáty PDF a PostScript, používanými zejména pro přenos dokumentů určených k tisku. Zajímala nás extrakce textu z těchto dokumentů. Cílem bylo vyhledat a otestovat volně dostupné programy pro konverzi dokumentů ve formátech PDF a PostScript do textu. Nejprve byla testována rychlost a chybovost konverzí u těchto volně dostupných programů. K tomuto účelu byl vytvořen program Batch PDF/PS to plain-text convertor, který slouží pro dávkové konvertování PDF a PS dokumentů do textu (voláním externích programů). Program obsahuje jednoduchou heuristiku pro rozpoznání chyb při převodech. Výsledky provedeného testování popisuje kapitola 7.1. Dále byla testována kvalita (přesnost) provedených konverzí. Zvolili jsme metodu porovnávání převedených textů s originálními texty (získanými spolu s PDF a PS dokumenty z internetu). Podobnosti dvojic textů byly testovány ve vytvořeném programu Porovnání kvality konverze utilit (s použitím volně dostupného fuzzy algoritmu fstrcmp [2] pro porovnávání textů). Výsledky tohoto testování (uvedené v kapitole 7.2) jsou mírně zkreslené - kvůli nemožnosti získat dokonalé originální texty k dokumentům PDF a PS (problém popisuje kapitola 4.2). Pro převod z PDF se ukázalo jako nejlepší použít volně dostupný ifiltr Adobe PDF IFilter (ovládaný utilitou filtdump). Pro převod z PS to byly utility ps2ascii (větší chybovost) a modifikovaná verze utility pstotext (menší chybovost, delší doba konverze). Jako úplně nejhorší utilita pro všechny konverze se jeví pstotext v neupravené verzi. Nekvalitní převody z PS (ale velmi rychlé) poskytuje utilita ps2txt.
8.1
Možná rozšíření
Pravděpodobně budou existovat ještě jiné volně dostupné programy pro převod PDF/PS do textu, které by bylo vhodné otestovat. Dále by bylo zajímavé testovat různé verze použitých utilit (a využívaného interpretu GhostScript) a ifiltrů. Bohužel se nepodařilo zprovoznit utilitu PreScript - tento problém by bylo dobré vyřešit a utilitu otestovat. V programu pro dávkovou konverzi Batch PDF/PS to plain-text convertor by bylo vhodné vyhnout se volání příkazového interpretu cmd.exe pro spouštění utilit a přesměrovávání výpisů do souborů. Situace by šla vyřešit spouštěním utilit rovnou z programu pro dávkovou konverzi, s propojením pomocí tzv. rour, pro přímé předání výpisů (poskytnutých utilitami) tomuto programu. Oba programy, vytvořené za účelem testování utilit, by se daly sloučit do jednoho výsledného programu, který by mohl poskytovat výsledky o kvalitě (přesnosti) konverzí utilit s ohledem na rychlost a chybovost konverzí.
38
Přehled zkratek ASCII CSV DLL DOC DPS DSC DTP EPS GNU GPL GUI HTML INI ISO JDK JPEG LZW MD5 MIME MSN OCR OOP OS PDF PHP PS RC4 RIP RLE RTF SDK SVG TEX TXT UTF WWW XML
American Standard Code for Information Interchange Comma-Separated Values Dynamic Link Library Document Display PostScript Document Structure Comments Desktop Publishing Encapsulated PostScript GNU's Not Unix GNU General Public Licence Graphical User Interface Hypertext Markup Language Initialize International Organization for Standardization Java Development Kit Joint Photographic Experts Group Lempel Ziv Welch Message Digest 5 Multipurpose Internet Mail Extensions Microsoft Network Optical Character Recognition Object Oriented Programming Operating System Portable Document Format Hypertext PreProcessor PostScript Rivest Cipher 4 Raster Image Processor Run Length Encoding Rich Text Format Software Development Kit Scalable Vector Graphics τέχνη (technē) Text Unicode Transfer Format World Wide Web eXtensible Markup Language
39
Vysvětlení pojmů formát dokumentu freeware fstrcmp fuzzy logika heuristika ifiltr
indexování
interpret kolekce kompilátor konverze layout dokumentu opensource plain-text plugin publikační formát stderr stdin stdout unicode utilita zásobník
způsob vnitřní reprezentace dokumentu, rozlišení příponou typ licence, binární podoba programu šířena zdarma Fuzzy String Comparison - algoritmus pro porovnávání textů, [2] vícehodnotová logika, snaží se pokrýt realitu v její nepřesnosti a neurčitosti postup, hledající dostatečně přesné řešení (když neexistuje lepší algoritmus) rozhraní, které se implementuje, pokud je potřeba službě Indexing Service poskytnout filtr pro extrahování textové informace z neznámého souborového formátu extrakce textových informací ze sady dokumentů a jejich následné uspořádání pro rychlý a snadný přístup, po vytvoření indexu lze v dokumentech snadno vyhledávat pomocí dotazů program, který prochází zdrojový soubor a současně vykonává uvedené příkazy množina dat, např. souborů překladač zdrojových souborů do spustitelné podoby převod z jednoho formátu do jiného fyzické rozvržení (podoba) dokumentu typ licence, zdrojové kódy programu šířeny zdarma čistý text - neformátovaný dokument, přípona souboru je .txt zásuvný modul - doplňkový modul aplikace rozšiřující její funkčnost, využívá připraveného rozhraní aplikace formát dokumentu vhodný pro přenášení dokumentů určených pro tisk, nezávislý na platformě (zobrazí se na všech zařízeních stejně) standardní chybový výstup (do konzole) standardní vstup (z klávesnice) standardní výstup (do konzole) původně šestnáctibitová tabulka znaků všech existujících abeced program, většinou málo rozsáhlý, zaměřený na konkrétní problém datová struktura pro uchování prvků, poslední vložený prvek je vybírán jako první
40
Reference [1] [2] [3] [4] [5] [6] [7] [8] [9]
[10]
[11] [12] [13] [14] [15] [16] [17] [18] [19]
[20]
[21]
[22]
Myers E.: An O(ND) Difference Algorithm and its Variations, Algorithmica, Vol. 1, No. 2, pp. 251-266, 1986 Algoritmus - Fuzzy String Comparison http://search.cpan.org/src/MLEHMANN/String-Similarity-1.02/fstrcmp.c http://www.root.cz/clanky/grafika-v-unixu-ix-postscript/ http://cs.wikipedia.org/wiki/PostScript http://www.root.cz/clanky/postscriptove-formaty-a-pisma/ http://cs.wikipedia.org/wiki/PDF Fiala Dalibor: A System for Citations Retrieval on the Web, Pilsen 2003 Petrlík Lukáš: Úvod do PostScriptu a .eps, 2004 Adobe Systems Incorporated: PostScript Language Reference, Third Edition Addison-Wesley, 1999 http://www.adobe.com/products/postscript/pdfs/PLRM.pdf Adobe Systems Incorporated: PDF Reference, fifth edition: Adobe Portable Document Format version 1.6, 2004 http://partners.adobe.com/public/developer/en/pdf/PDFReference16.pdf Adobe Reader http://www.adobe.com/products/acrobat/readstep2.html Ghostscript http://www.ghostscript.com/ GSview http://www.cs.wisc.edu/~ghost/gsview/ pstotext http://www.research.compaq.com/SRC/virtualpaper/pstotext.html PreScript http://www.nzdl.org/html/prescript.html Xpdf (pdftotext) http://www.foolabs.com/xpdf/ ps2txt ftp://ftp.funet.fi/pub/archive/alt.sources/volume92/Feb/920223.01.gz Nápověda systému MS Windows Indexing with Microsoft Index Server http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnindex/html/msdn_is-index.asp IFilter http://msdn.microsoft.com/library/default.asp?url=/library/enus/indexsrv/html/ixrefint_9sfm.asp FiltDump http://msdn.microsoft.com/library/default.asp?url=/library/enus/indexsrv/html/ixufilt_55yd.asp FiltReg http://msdn.microsoft.com/library/default.asp?url=/library/enus/indexsrv/html/ixufilt_5691.asp
41
[23] [24] [25] [26]
[27] [28] [29] [30] [31]
Adobe PDF IFilter v6.0 http://download.adobe.com/pub/adobe/acrobat/win/all/ifilter60.exe PostScript IFilter http://www.ifiltershop.com/postscript-ifilter.html http://searchengineshowdown.com/features/google/dbanalysis.shtml Výběr a popisné statistiky http://new.euromise.org/czech/tajne/ucebnice/html/html/node7.html
Java 2 Platform Standard Edition 5.0 API Specification http://java.sun.com/j2se/1.5.0/docs/api/index.html A Visual Index to the Swing Components http://java.sun.com/docs/books/tutorial/uiswing/components/components.html Herout Pavel: Učebnice jazyka Java, KOPP, České Budějovice, 2003 Písek Slavoj: Delphi - praktické příklady, Grada Publishing, Praha, 2002 Písek Slavoj: Začínáme programovat v Delphi, Grada Publishing, Praha, 2000
42
Příloha A: Příklad výpisu třídícího skriptu Soubory celkem souborů: 39 přípony: 1. .pdf 2. .ps 3. .txt 4. .htm
.pdf + .ps + .txt/ 1. ALPHA_FORT080_SPD.pdf 2. ALPHA_FORT080_SPD.ps 3. ALPHA_FORT080_SPD.txt .pdf + .txt/ 4. bcs0501.pdf 5. bcs0501.txt .pdf + .txt/ 6. bes0401.pdf 7. bes0401.txt .pdf + .txt/ 8. bio0401.pdf 9. bio0401.txt .pdf + .ps/ 10. context.pdf 11. context.ps .htm + .pdf/ 12. faq_nsf03586.htm 13. faq_nsf03586.pdf .pdf + .ps + .txt/ 14. FORT_IG_ALPHA.pdf 15. FORT_IG_ALPHA.ps 16. FORT_IG_ALPHA.txt .pdf + .ps + .txt/ 17. fortunixig.pdf 18. fortunixig.ps 19. fortunixig.txt .pdf + .ps/ 20. ICCNS03.pdf 21. ICCNS03.ps .pdf + .ps/ 22. ICCNSref.pdf 23. ICCNSref.ps .pdf + .ps/ 24. icml02.pdf 25. icml02.ps .htm + .pdf/ 26. nsb00217.htm 27. nsb00217.pdf
43
.htm + .pdf/ 28. nsb01136.htm 29. nsb01136.pdf .htm + .pdf/ 30. nsb01202.htm 31. nsb01202.pdf .ps + .txt/ 32. nsf921.ps 33. nsf921.txt .ps + .txt/ 34. nsf92104.ps 35. nsf92104.txt .ps + .txt/ 36. nsf92112.ps 37. nsf92112.txt .ps + .txt/ 38. nsf92115.ps 39. nsf92115.txt
_______________ Pro tuto ukázkovou množinu souborů vytvoří skript následující adresářovou strukturu:
Obr. A.1: Příklad skriptem vytvořených adresářů
44
Příloha B: Uživatelské dokumentace k programům
B1
Batch PDF/PS to plain-text convertor
Program se spouští souborem BatchConvertor.exe na platformě Windows. Pro spuštění dávkové konverze je nutné mít v adresáři programu umístěné volané utility, které konvertují PDF nebo PS do textu. Dále je nutné mít nainstalován interpret Ghostscript (který většina utilit využívá) a do systémové proměnné PATH vhodně nastavit cestu k tomuto interpretu. Také musí být v systému přítomné volané ifiltry. Instalaci testovaných utilit a ifiltrů popisuje kapitola 3. Po spuštění programu stačí nahrát již připravený konfigurační soubor se seznamem testovaných utilit (utility.ini) a potřebným nastavením pro jejich volání - Nahrát seznam utilit. Je možné také vytvářet vlastní konfiguraci - například pro otestování nově získané utility. Zadává se typ konverze (PDF nebo PS), název a popis dané utility. Dále pak příkaz obsahující parametry pro volání utility. Symbol %IN% zastupuje vstupní soubor (konvertovaný dokument) a %OUT% zastupuje výstupní soubor (extrahovaný text). Výstup se zvolí podle schopnosti dané utility - přímo do souboru nebo na stdout (odkud je programově přesměrován). Pro detekci chybných převodů se musí nastavit analýza chybových hlášení a/nebo jednoduchá heuristika extrahovaného textu. Nastavení výstupu a detekce chyb jsou pro každou utilitu specifické. Před zahájením dávkové konverze je vhodné pozavírat ostatní spuštěné aplikace.
Obr. B1.1: Průběh dávkové konverze
45
Výsledky dávkové konverze utilit je možné exportovat do formátu CSV (viz Obr. B1.3). Detailní logovací zprávu dávkové konverze jedné utility je možné uložit do formátu TXT (viz Obr. B1.4).
Screenshoty z programu Batch PDF/PS to plain-text convertor:
Obr. B1.2: GUI programu Batch PDF/PS to plain-text convertor
46
Obr. B1.3: Zobrazení výsledků
Obr. B1.4: Logovací výpisy dávkové konverze
47
B2
Porovnání kvality konverze utilit
Program se spouští souborem start.bat, který obsahuje příkaz java -jar porovnani.jar, který slouží pro spuštění javovské aplikace z archívu JAR. Je nutné mít nainstalován Java Development Kit verze minimálně 1.5.0. Pro testování podobnosti dvojic textů je nutné mít v adresáři programu (vně JARu) přiloženou DLL knihovnu native.dll, která obsahuje metodu algoritmu fstrcmp [2]. Po spuštění programu stačí nahrát již připravený konfigurační soubor se seznamem prováděných testů (testy.xml) a potřebným nastavením. Nastavení je možné upravit. Zadává se typ konverze (PDF nebo PS), název a popis testované utility. Pro test každé utility se nastavuje adresář kolekce porovnávaných dvojic textů. Dále je možné nastavit porovnávání textů bez úprav a/nebo s předzpracováním. Před zahájením testování je vhodné pozavírat ostatní spuštěné aplikace.
Obr. B2.1: Průběh porovnávání dvojic textů
Výsledky se zobrazují graficky jako histogram průměrných podobností dvojic textů a také v přehledné tabulce s doplňujícími statistickými veličinami. Kompletní výsledky je možné uložit do souboru a jindy je opět načíst (s obnovením grafů a tabulky). Detailní výsledky vybrané testované utility je možné exportovat do formátu CSV (viz Obr. B2.3).
48
Screenshoty z programu Porovnání kvality konverze utilit:
Obr. B2.2: GUI programu Porovnání kvality konverze utilit
Obr. B2.3: Volba exportu detailních výsledků testované utility
49
Příloha C: Konfigurační soubory programů
C1
Batch PDF/PS to plain-text convertor - konfigurační soubor
utility.ini [utils] count=12 [1] typKonverze=0 nazevUtility=filtdump parametry=-b popis=konzolová utilita od MS, používající rozhraní Adobe PDF IFilter v6.0 prikaz=cmd.exe /C filtdump.exe -b %IN% vystupUtilitou=0 analyzaStderr=1 analyzaVystup=1 analyzaSoubor=1 [2] typKonverze=0 nazevUtility=pdftotext parametry=--popis=součást balíku Xpdf prikaz=cmd.exe /C pdftotext.exe %IN% %OUT% vystupUtilitou=1 analyzaStderr=1 analyzaVystup=1 analyzaSoubor=1 [3] typKonverze=0 nazevUtility=pdftotext parametry=-layout popis=součást balíku Xpdf, parametr udává dodržení layoutu dokumentu prikaz=cmd.exe /C pdftotext.exe -layout %IN% %OUT% vystupUtilitou=1 analyzaStderr=1 analyzaVystup=1 analyzaSoubor=1 [4] typKonverze=0 nazevUtility=pdftotext parametry=-raw popis=součást balíku Xpdf prikaz=cmd.exe /C pdftotext.exe -raw %IN% %OUT% vystupUtilitou=1 analyzaStderr=1 analyzaSoubor=1 [5] typKonverze=0 nazevUtility=pstotext parametry=-output popis=využívá Ghostscriptu, umí převádět PS i PDF do textu prikaz=cmd.exe /C pstotxt3.exe -output %OUT% %IN% vystupUtilitou=1 analyzaStderr=1 analyzaVystup=1 analyzaSoubor=0 [6] typKonverze=0 nazevUtility=pstotext[2] parametry=-output popis=využívá Ghostscriptu, umí převádět PS i PDF do textu, upravená verze
50
prikaz=cmd.exe /C pstotxt3.exe -output %OUT% %IN% vystupUtilitou=1 analyzaStderr=1 analyzaVystup=1 analyzaSoubor=0 [7] typKonverze=1 nazevUtility=filtdump parametry=-b popis=konzolová utilita od MS, používající rozhraní PostScript IFilter v0.9 Beta prikaz=cmd.exe /C filtdump.exe -b %IN% vystupUtilitou=0 analyzaStderr=1 analyzaSoubor=1 [8] typKonverze=1 nazevUtility=ps2ascii parametry=--popis=část Ghostscriptu, která je samostatně spustitelná prikaz=cmd.exe /C ps2ascii.bat %IN% %OUT% vystupUtilitou=1 analyzaStderr=1 analyzaSoubor=1 [9] typKonverze=1 nazevUtility=ps2txt parametry=--popis=velmi jednoduchý prográmek napsaný v jazyce C prikaz=cmd.exe /C ps2txt.exe %IN% vystupUtilitou=0 analyzaStderr=0 analyzaSoubor=1 [10] typKonverze=1 nazevUtility=ps2txt parametry=-dvi popis=velmi jednoduchý prográmek napsaný v jazyce C prikaz=cmd.exe /C ps2txt.exe -dvi %IN% vystupUtilitou=0 analyzaStderr=0 analyzaSoubor=1 [11] typKonverze=1 nazevUtility=pstotext parametry=-output popis=využívá Ghostscriptu, umí převádět PS i PDF do textu prikaz=cmd.exe /C pstotxt3.exe -output %OUT% %IN% vystupUtilitou=1 analyzaStderr=1 analyzaSoubor=1 [12] typKonverze=1 nazevUtility=pstotext[2] parametry=-output popis=využívá Ghostscriptu, umí převádět PS i PDF do textu, upravená verze prikaz=cmd.exe /C pstotxt3.exe -output %OUT% %IN% vystupUtilitou=1 analyzaStderr=1 analyzaSoubor=1
51
C2
Porovnání kvality konverze utilit - konfigurační soubor
testy.xml 0 filtdump <parametry>-b <popis>konzolová utilita od MS, používající rozhraní Adobe PDF IFilter v6.0 D:\kolekce pro porovnani textu\PDF filtdump (-b) 0 pdftotext <parametry>--- <popis>součást balíku Xpdf D:\kolekce pro porovnani textu\PDF pdftotext (---) 0 pdftotext <parametry>-layout <popis>součást balíku Xpdf, parametr udává dodržení layoutu dokumentu D:\kolekce pro porovnani textu\PDF pdftotext (-layout) 0 pdftotext <parametry>-raw <popis>součást balíku Xpdf D:\kolekce pro porovnani textu\PDF pdftotext (-raw) 0 pstotext <parametry>-output <popis>využívá Ghostscriptu, umí převádět PS i PDF do textu D:\kolekce pro porovnani textu\PDF pstotext (-output) 0 pstotext[2] <parametry>-output <popis>využívá Ghostscriptu, umí převádět PS i PDF do textu, upravená verze D:\kolekce pro porovnani textu\PDF pstotext (-output) [modified] 1 filtdump <parametry>-b <popis>konzolová utilita od MS, používající rozhraní PostScript IFilter v0.9 Beta D:\kolekce pro porovnani textu\PS filtdump (-b) 1 ps2ascii <parametry>--- <popis>část Ghostscriptu, která je samostatně spustitelná D:\kolekce pro porovnani textu\PS ps2ascii (---) 1 ps2txt <parametry>---
52
<popis>velmi jednoduchý prográmek napsaný v jazyce C D:\kolekce pro porovnani textu\PS ps2txt (---) 1 ps2txt <parametry>-dvi <popis>velmi jednoduchý prográmek napsaný v jazyce C D:\kolekce pro porovnani textu\PS ps2txt (-dvi) 1 pstotext <parametry>-output <popis>využívá Ghostscriptu, umí převádět PS i PDF do textu D:\kolekce pro porovnani textu\PS pstotext (-output) 1 pstotext[2] <parametry>-output <popis>využívá Ghostscriptu, umí převádět PS i PDF do textu, upravená verze D:\kolekce pro porovnani textu\PS pstotext (-output) [modified]
53
Příloha D: Příklady exportu výsledků
D1
Logovací výpis dávkové konverze souborů vybranou utilitou
PDF pdftotext (-raw).TXT Konverze souboru D:\PDF kolekce\h21007.www2.hp.com\ALPHA_FORT080_SPD.pdf (457 286 B) OK (218 ms) Konverze souboru D:\PDF kolekce\h21007.www2.hp.com\FORT_IG_ALPHA.pdf (288 787 B) OK (531 ms) Konverze souboru D:\PDF kolekce\h21007.www2.hp.com\fortunixig.pdf (663 069 B) Error (1) Konverze souboru D:\PDF kolekce\h21007.www2.hp.com\HPFAU_SPD_56.pdf (159 783 B) OK (203 ms) Konverze souboru D:\PDF kolekce\h21007.www2.hp.com\v56relnotes.pdf (880 531 B) Error (1) Konverze souboru D:\PDF kolekce\h21007.www2.hp.com\V80_RELNOTES.pdf (511 985 B) OK (922 ms) Konverze souboru D:\PDF kolekce\nepojmenovany zdroj\Frederick_Akalin's_Resume.pdf (11 964 B) OK (94 ms) Konverze souboru D:\PDF kolekce\nepojmenovany zdroj\resume navin.pdf (70 751 B) OK (109 ms) Konverze souboru D:\PDF kolekce\nepojmenovany zdroj\resume2.pdf (45 996 B) OK (62 ms) Konverze souboru D:\PDF kolekce\people.csail.mit.edu pesha Public papers.html\ICCN02.pdf (15 727 B) OK (77 ms) Konverze souboru D:\PDF kolekce\people.csail.mit.edu pesha Public papers.html\ICCNS.pdf (267 118 B) OK (77 ms) Konverze souboru D:\PDF kolekce\wscg\Full_template.pdf (47 172 B) OK (93 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\bumpy.road.pdf (67 347 B) OK (250 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\case.against.micropayments.pdf (78 099 B) OK (156 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\competition.cooperation.pdf (79 740 B) OK (234 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\decline.pdf (138 537 B) Error (5) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\discr.bound.tables.pdf (44 669 B) Error (5) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\econ.psych.security.pdf (80 884 B) OK (171 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\economics.journals.pdf (115 455 B) OK (844 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\high.network.cost.pdf (21 457 B) OK (109 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\modest.proposal.pdf (169 813 B) OK (1 468 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\paris.metro.minimal.pdf (88 781 B) Error (5) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\paris.metro.pricing.pdf (146 734 B) Error (5) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\price.war.pdf (175 713 B) Error (5) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\privacy.unsolvable.pdf (62 043 B) OK (109 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\rapid.evolution.pdf (152 684 B) OK (1 016 ms) Konverze souboru D:\PDF kolekce\www.dtc.umn.edu ~odlyzko\silicon.dreams.pdf (94 261 B) OK (860 ms) ...
54
D2
Detailní výsledek porovnání dvojic textů u vybrané utility
vysledek PDF - pstotext (-output).CSV PDF;; pstotext (-output);; popis testu;využívá Ghostscriptu, umí převádět PS i PDF do textu; adresář kolekce;D:\kolekce pro porovnani textu\PDF pstotext (-output); podobnosti;bez úprav;s předzpracováním aritmetický průměr;0,89511821;0,97007689 rozptyl;0,01465954;0,01118406 směrodatná odchylka;0,12107658;0,10575473 variační koeficient;0,13526323;0,10901686 počet dvojic;2024;2024 originální text;podobnost;podobnost h21007.www2.hp.com\ALPHA_FORT080_SPD.txt;0,90367992;0,98011865 h21007.www2.hp.com\FORT_IG_ALPHA.txt;0,79207921;0,97115378 h21007.www2.hp.com\HPFAU_SPD_56.txt;0,85396097;0,95094539 h21007.www2.hp.com\V80_RELNOTES.txt;0,79823519;0,95242036 h21007.www2.hp.com\fortunixig.txt;0,38698801;0,39421037 h21007.www2.hp.com\v56relnotes.txt;0,78946309;0,95712453 nepojmenovany zdroj\Frederick_Akalin's_Resume.txt;0,92550315;0,96626010 nepojmenovany zdroj\resume navin.txt;0,96692440;0,99463822 people.csail.mit.edu pesha Public papers.html\ICCN02.txt;0,97144447;0,98741548 people.csail.mit.edu pesha Public papers.html\ICCNS.txt;0,98172874;0,99976326 wscg\Full_template.txt;0,74202050;0,77137687 www.dtc.umn.edu ~odlyzko\bumpy.road.txt;0,96390295;0,99522276 www.dtc.umn.edu ~odlyzko\case.against.micropayments.txt;0,91071726;0,95278843 www.dtc.umn.edu ~odlyzko\competition.cooperation.txt;0,95957456;0,99442371 www.dtc.umn.edu ~odlyzko\decline.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\discr.bound.tables.txt;0,00610022;0,00502513 www.dtc.umn.edu ~odlyzko\econ.psych.security.txt;0,94343229;0,97810928 www.dtc.umn.edu ~odlyzko\economics.journals.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\high.network.cost.txt;0,94450012;0,97961368 www.dtc.umn.edu ~odlyzko\modest.proposal.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\paris.metro.minimal.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\paris.metro.pricing.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\price.war.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\privacy.unsolvable.txt;0,93757775;0,97669565 www.dtc.umn.edu ~odlyzko\rapid.evolution.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\silicon.dreams.txt;0,00000000;0,00000000 www.dtc.umn.edu ~odlyzko\slow.evolution.txt;0,92031623;0,96191932 www.dtc.umn.edu ~odlyzko\stupid.networks.txt;0,96058121;0,99619740 www.dtc.umn.edu ~odlyzko\tv.internet.txt;0,94820103;0,99430029 www.dtc.umn.edu ~odlyzko\visible.problems.txt;0,95999142;0,99465641 www.evoting.cs.may.ie download.shtml\JFitzpatrickNiceReferendumReportNov2002.txt;0,96901408;0,99947045 www.evoting.cs.may.ie download.shtml\JFitzpatrickPostElectionReportJune2002.txt;0,97832992;0,99927231 www.evoting.cs.may.ie download.shtml\QuestionsforDoEHLG.txt;0,00118618;0,00010118 www.evoting.cs.may.ie download.shtml\ReconcileVotesDublinNorth.txt;0,91733498;0,95088409 www.evoting.cs.may.ie download.shtml\ReconcileVotesDublinWest.txt;0,91736305;0,95266272 www.evoting.cs.may.ie download.shtml\report_oniescountingsoftware.txt;0,00103413;0,00000000 www.nsf.gov publications archive\bcs0501.txt;0,90948651;0,99905616 www.nsf.gov publications archive\bio0301.txt;0,94230769;0,99906455 www.nsf.gov publications archive\bio0302.txt;0,94611771;0,99869471 www.nsf.gov publications archive\bio2001.txt;0,90025158;0,99217479 www.nsf.gov publications archive\bul9705.txt;0,76685337;0,83761439 www.nsf.gov publications archive\bul9709.txt;0,80437389;0,86400852 www.nsf.gov publications archive\bul9710.txt;0,29886205;0,32228681 www.nsf.gov publications archive\c20010004.txt;0,92189921;0,99393698 www.nsf.gov publications archive\c20010007.txt;0,92304872;0,99508335 ...
55
Evidenční list Souhlasím s tím, aby moje bakalářská práce byla půjčována k prezenčnímu studiu v Univerzitní knihovně ZČU v Plzni. ____________________ Pavel Gloss
V Plzni dne 18. května 2006
Uživatel stvrzuje svým čitelným podpisem, že tuto bakalářskou práci použil ke studijním účelům a prohlašuje, že ji uvede mezi použitými prameny. Jméno
Fakulta/katedra
56
Datum
Podpis