Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky BAKALÁŘSKÁ PRÁCE



Podobné dokumenty
FAKULTA STAVEBNÍ OBOR GEODÉZIE A KARTOGRAFIE KATEDRA MAPOVÁNÍ A KARTOGRAFIE

Osnova přednášky. Formáty uložení dat. Vyjádření hodnot datového typu. Vyjádření hodnot datového typu. Datové formáty. Výpočetní technika I

VY_32_INOVACE_INF3_18. Textové formáty PDF, TXT, RTF, HTML, ODT

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

Rastrový obraz, grafické formáty

Úvod...12 Součásti aplikace Použité konvence... 13

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web,

DTP1. Digitální grafický výstup. ernobílé grafické objekty. (příprava textu pomocí počítače) Kapitola 8 / Obrázky a rastrování

INFORMAČNĚ TECHNOLOGICKÝ ZÁKLAD

b) červená, zelená, modrá, c) černá, bílá, d) černá, bílá, šedá. 5. PNG je formát: a) textový,

Převody datových formátů

Počítačová grafika a vizualizace I

7. Nástroje. 7.1 Pravopis. 7.2 Jazyk. Kapitola 7: Nástroje 47. Kontrola pravopisu

Instalujeme a zakládáme databázi Oracle Database 11g

Správa barev. PS a PDF. Správa barev. Vytvořila: Jana Zavadilová Vytvořila dne: 13. února DUM číslo: 18 Název: PS a PDF

Analýza dat na PC I.

Stejná stránka se v různých prohlížečích může zobrazit odlišně.

Manuál k aplikaci SDO PILOT v.0.2

- 1 - Smlouva o dílo. uzavřená podle 536 a násl. obchodního zákoníku v účinném znění

Maturitní témata. Informační a komunikační technologie. Gymnázium, Střední odborná škola a Vyšší odborná škola Ledeč nad Sázavou.

MATURITNÍ PRÁCE dokumentace

Generování žádostí o kvalifikovaný certifikát a instalace certifikátu Uživatelská příručka pro prohlížeč Internet Explorer

Elektronická pošta... 3 Historie... 3 Technické principy... 3 Komunikační protokoly... 3 MBOX... 4 Maildir... 4 Jak funguje POP3...

Individuální projekt z předmětu webových stránek Anketa Jan Livora

! Nauka o tom, jak má tiskovina vypadat. ! dobře čitelná. ! snadná orientace v textu. ! estetické působení. ! Klasické umělecké řemeslo

Obsah. Kapitola 1 Stažení a instalace Kapitola 2 Orientace v programu a základní nastavení Úvod... 9

Dnešní téma. Oblasti standardizace v ICT. Oblasti standardizace v ICT. Oblasti standardizace v ICT

VY_32_INOVACE_INF.19. Inkscape, GIMP, Blender

Operační systémy (OS)

Kolaborativní aplikace

Software. Mgr. Renáta Rellová. Výukový materiál zpracován v rámci projektu EU peníze školám

Tvorba jednoduchých WWW stránek. VŠB - Technická univerzita Ostrava Katedra informatiky

Extrakce metadat z dokument. Ond ej Vodá ek. ƒeské vysoké u ení technické v Praze Fakulta elektrotechnická Katedra po íta.

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Předtisková příprava a tisk. 1. Ofsetový tisk. 2. Tiskové rozlišení

Funkce Chytrý dotyk. verze 1.4. A-61629_cs

INFORMATIKA. Grafické studio ve škole

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Manuál k užívání aplikace Monitoringrejstriku.cz

Rastrové grafické formáty. Václav Krajíček KSVI MFF UK, 2007

Univerzita Jana Evangelisty Purkyně v Ústí nad Labem. Jak na PDF

Příloha č. 18. Specifikace bloku PŘÍPRAVA. Příloha k zadávací dokumentaci veřejné zakázky Integrační nástroje, vstupní a výstupní subsystém

Rozdělení operačních systémů

Změňte styly nadpisů takto: Nadpis úvodní styl: Nadpis1 Nadpisy kurzivou Nadpis2 Podtržené nadpisy Nadpis3. Do dokumentu vložte č. stránek.

Digitální video, formáty a kódování. Jan Vrzal, verze 0.8

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY BAKALÁŘSKÁ PRÁCE. Vytváření a evidence smluv Petr Čulík

1. SMART Notebook 11.1

Aplikační programové vybavení

Generování žádostí o certifikát Uživatelská příručka pro prohlížeč Apple Safari

1. HDR. 2. Test Práce ve Windows. 3. Tilt-shift efekt. 4. Excel tisk a tvorba grafů. Informatika Ditta Kukaňová

1. Jak pracuje počítač 3. Už víme, jak pracuje počítač, ale jak se pracuje s počítačem? 9

INFORMATIKA Charakteristika volitelného předmětu

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk

MULTIMEDIÁLNÍ A HYPERMEDIÁLNÍ SYSTÉMY

TVORBA TEXTOVÉHO DOKUMENTU PROSTŘEDKY, PŘENOSITELNOST

Převod prostorových dat katastru nemovitostí do formátu shapefile

Vývoj, výroba, prodej a montáž docházkových a identifikačních systémů

Delphi podstata, koncepce a metody MDI aplikace

SOFTWARE A POČÍTAČOVÉ SÍTĚ. Alice Nguyenová

TECHNICKÁ UNIVERZITA V LIBERCI FAKULTA UMĚNÍ A ARCHITEKTURY. Studijní program: B8206 Výtvarná umění. Obor: Vizuální komunikace BAKALÁŘSKÁ PRÁCE

Formáty WWW zdrojů. Mgr. Filip Vojtášek.

FREEWAROVÉ ŘEŠENÍ DICOM SERVERU S NÍZKÝMI NÁROKY NA HARDWAROVÉ VYBAVENÍ

First Prev Next Last Go Back Full Screen Close Quit. Roman Plch katedra matematiky PřF MU. 3. května 2005

Obsah. Stručná historie World Wide Webu 7

VNITŘNÍ POKYN Č. 3/2004 PROVOZNÍ ŘÁD POČÍTAČOVÉ SÍTĚ

Úvod Používané konvence Seznámení s Outlookem...17

Běžný výběr textu v PDF

Malý systém počítačové podpory pro rozvrh obhajob a zkoušek

Programovací jazyky Přehled a vývoj

Přehled verzí aplikace WinTechnol

9. Software: programové vybavení počítače, aplikace

Statistica, kdo je kdo?

Uživatelský manuál Správce úloh. Verze dokumentu 1.0

- doplnění dotazu před provedením výmazu dlaždice nebo všech dlaždic

Elektronická distribuce a správa dokumentů v rámci Policie České Republiky

Bezpečnost ve světě ICT - 10

VZDĚLÁVACÍ MATERIÁL III/2


Uživatelský manuál Radekce-Online.cz

Implementovaný webový server HP LaserJet M9040/M9050 MFP Uživatelská příručka

Srovnání aplikací pro převod dat z formátu PDF do Excelu

ZÁVĚREČNÁ STUDIJNÍ PRÁCE dokumentace

Předmětem části B) veřejné zakázky je dodávku existujícího licencovaného softwaru dle této technické specifikace.

ECL MODBUS OPC. Návod k použití

e Utility Report Vyjadřování k existenci sítí

DTP1. (příprava textu pomocí počítače) Kapitola 3 / Obrázky a rastrování

Kapitola 1: Co je Delphi 19. Překlad projektu 23

DUM 01 téma: Úvod do Corelu

Prezentační software a tvorba posterů

Modul ročních zpráv o výsledcích finančních kontrol

M I S Y S - W E B. Intranet řešení systému MISYS. Verze Příručka uživatele

Základy informatiky. Elektronické publikování. Daniela Szturcová Část převzata z přednášky P. Děrgela

Projekt Konsolidace IT a nové služby TC ORP Litomyšl

Co je nového v SolidWorks Enterprise PDM 2009

Transkript:

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 Úvod... 1 1.1 Cíl... 1 1.2 Platforma... 2 1.3 Struktura práce... 2 1.4 Poděkování... 3 2 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 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 5 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

Úvod 1 Ú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

Ú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

Úvod 1.4 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

Publikační formáty 2 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 T E X. 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

Publikační formáty 2.2 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 T E Xu, což je mocný nástroj pro potřeby DTP. Ve formátu T E X 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

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

Publikační formáty 2.3 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

Publikační formáty 2.3.1 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

Volně dostupné programy pro konverzi PDF/PS do textu 3 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

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

Volně dostupné programy pro konverzi PDF/PS do textu 3.1.4 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] <PDF-file> [<text-file>] 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

Volně dostupné programy pro konverzi PDF/PS do textu 3.2 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

Volně dostupné programy pro konverzi PDF/PS do textu 3.2.3 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. Např.: FiltDump.exe [-b] [-o unicode_output_file] [-s buffer_size] <file> <file>... -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 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

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

Kolekce souborů pro testování 4 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

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 Počet dvojic PDF + TXT http://www.nsf.gov/publications/ 2267 http://www.dtc.umn.edu/~odlyzko/doc/recent.html 19 ostatní 18 Zdroj Počet dvojic PS + TXT http://www.dtc.umn.edu/~odlyzko/doc/recent.html 18 http://www.nsf.gov/publications/ 8 ostatní 15 Zdroj Počet dvojic PDF + PS http://www.cs.washington.edu/research/ 261 http://www-inst.eecs.berkeley.edu/ 26 ostatní 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

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

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

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

Program - Batch PDF/PS to plain-text convertor 5 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

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

Program - Batch PDF/PS to plain-text convertor 5.2.4 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

Program - Batch PDF/PS to plain-text convertor 5.3 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

Program - Batch PDF/PS to plain-text convertor Popis činnosti programu: 1 Volání příkazového interpretu cmd.exe (příkazová řádka systému Windows) z programu Batch PDF/PS to plain-text convertor. 2 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. 3 Extrahovaný text je uložen do dočasného souboru (converted.tmp) přímo utilitou. 4 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. 5 Extrahovaný text může být vypsán některou utilitou pouze na stdout (místo uložení přímo do souboru). 6 Některé utility zobrazí zprávu o chybách při převodu na stderr. 7 Text vypsaný na stdout je přesměrován do dočasného souboru stdout.tmp. 8 Hlášení o chybách, zobrazené na stderr, se ukládá do dočasného souboru stderr.tmp. 9 Přejmenování souboru stdout.tmp na converted.tmp (v případě, že utilita poskytuje převedené texty pouze vypsáním na stdout). 10 Soubor stderr.tmp, s informacemi o možných chybách při převodu, je analyzován. 11 Extrahovaný text je prověřen jednoduchou heuristikou, pro zjištění, jestli byla konverze úspěšná. 12 Pokud byla konverze úspěšná, je text umístěn do výsledné kolekce. 13 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

Program - Porovnání kvality konverze utilit 6 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

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

Program - Porovnání kvality konverze utilit 6.3 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 xi i x = n (6.1) 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] rozptyl D = i ( x i n x) 2 2 = x x 2 (6.2) směrodatná odchylka 2 ( xi x) i σ = D = (6.3) n variační koeficient σ v = (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

Program - Porovnání kvality konverze utilit 6.5 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

Program - Porovnání kvality konverze utilit 6.6 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

Výsledky 7 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 Verze Využívá Typ pstotext 1.8i (08.01.2003) Ghostscript v8.14 PDF/PS pstotext [2] 1.8h (02.06.2001) Ghostscript v8.14 PDF/PS filtdump Adobe PDF IFilter v6.0 PDF filtdump PostScript IFilter v0.9 Beta PS pdftotext 3.01 (17.08.2005) PDF ps2ascii 1.7.2 (12.12.2003) Ghostscript v8.14 PS ps2txt 2.1 (22.02.1992) 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

Výsledky 7.1.2 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

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ů: 2304 průměrná velikost: 176 880 B (0,17 MB) 32

Výsledky Utilita (parametry) Chybovost Průměrná doba bezchybných konverzí Celková doba filtdump (-b) 30 (1,3 %) 481 ms 0:23:29 pdftotext (---) 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 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ů: 337 průměrná velikost: 1 064 244 B (1,01 MB) 33

Výsledky Utilita (parametry) Chybovost Průměrná doba bezchybných konverzí Celková doba filtdump (-b) 12 (3,56 %) 6 093 ms 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 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

Výsledky 7.2.1 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

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

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

Závěr 8 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 American Standard Code for Information Interchange CSV Comma-Separated Values DLL Dynamic Link Library DOC Document DPS Display PostScript DSC Document Structure Comments DTP Desktop Publishing EPS Encapsulated PostScript GNU GNU's Not Unix GPL GNU General Public Licence GUI Graphical User Interface HTML Hypertext Markup Language INI Initialize ISO International Organization for Standardization JDK Java Development Kit JPEG Joint Photographic Experts Group LZW Lempel Ziv Welch MD5 Message Digest 5 MIME Multipurpose Internet Mail Extensions MSN Microsoft Network OCR Optical Character Recognition OOP Object Oriented Programming OS Operating System PDF Portable Document Format PHP Hypertext PreProcessor PS PostScript RC4 Rivest Cipher 4 RIP Raster Image Processor RLE Run Length Encoding RTF Rich Text Format SDK Software Development Kit SVG Scalable Vector Graphics T E X τέχνη (technē) TXT Text UTF Unicode Transfer Format WWW World Wide Web XML extensible Markup Language 39

Vysvětlení pojmů formát dokumentu způsob vnitřní reprezentace dokumentu, rozlišení příponou freeware typ licence, binární podoba programu šířena zdarma fstrcmp Fuzzy String Comparison - algoritmus pro porovnávání textů, [2] fuzzy logika vícehodnotová logika, snaží se pokrýt realitu v její nepřesnosti a neurčitosti heuristika postup, hledající dostatečně přesné řešení (když neexistuje lepší algoritmus) ifiltr 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 indexování 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ů interpret program, který prochází zdrojový soubor a současně vykonává uvedené příkazy kolekce množina dat, např. souborů kompilátor překladač zdrojových souborů do spustitelné podoby konverze převod z jednoho formátu do jiného layout dokumentu fyzické rozvržení (podoba) dokumentu opensource typ licence, zdrojové kódy programu šířeny zdarma plain-text čistý text - neformátovaný dokument, přípona souboru je.txt plugin zásuvný modul - doplňkový modul aplikace rozšiřující její funkčnost, využívá připraveného rozhraní aplikace publikační formát 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ě) stderr standardní chybový výstup (do konzole) stdin standardní vstup (z klávesnice) stdout standardní výstup (do konzole) unicode původně šestnáctibitová tabulka znaků všech existujících abeced utilita program, většinou málo rozsáhlý, zaměřený na konkrétní problém zásobník datová struktura pro uchování prvků, poslední vložený prvek je vybírán jako první 40

Reference [1] Myers E.: An O(ND) Difference Algorithm and its Variations, Algorithmica, Vol. 1, No. 2, pp. 251-266, 1986 [2] Algoritmus - Fuzzy String Comparison http://search.cpan.org/src/mlehmann/string-similarity-1.02/fstrcmp.c [3] http://www.root.cz/clanky/grafika-v-unixu-ix-postscript/ [4] http://cs.wikipedia.org/wiki/postscript [5] http://www.root.cz/clanky/postscriptove-formaty-a-pisma/ [6] http://cs.wikipedia.org/wiki/pdf [7] Fiala Dalibor: A System for Citations Retrieval on the Web, Pilsen 2003 [8] Petrlík Lukáš: Úvod do PostScriptu a.eps, 2004 [9] Adobe Systems Incorporated: PostScript Language Reference, Third Edition Addison-Wesley, 1999 http://www.adobe.com/products/postscript/pdfs/plrm.pdf [10] 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 [11] Adobe Reader http://www.adobe.com/products/acrobat/readstep2.html [12] Ghostscript http://www.ghostscript.com/ [13] GSview http://www.cs.wisc.edu/~ghost/gsview/ [14] pstotext http://www.research.compaq.com/src/virtualpaper/pstotext.html [15] PreScript http://www.nzdl.org/html/prescript.html [16] Xpdf (pdftotext) http://www.foolabs.com/xpdf/ [17] ps2txt ftp://ftp.funet.fi/pub/archive/alt.sources/volume92/feb/920223.01.gz [18] Nápověda systému MS Windows [19] Indexing with Microsoft Index Server http://msdn.microsoft.com/library/default.asp?url=/library/enus/dnindex/html/msdn_is-index.asp [20] IFilter http://msdn.microsoft.com/library/default.asp?url=/library/enus/indexsrv/html/ixrefint_9sfm.asp [21] FiltDump http://msdn.microsoft.com/library/default.asp?url=/library/enus/indexsrv/html/ixufilt_55yd.asp [22] FiltReg http://msdn.microsoft.com/library/default.asp?url=/library/enus/indexsrv/html/ixufilt_5691.asp 41

[23] Adobe PDF IFilter v6.0 http://download.adobe.com/pub/adobe/acrobat/win/all/ifilter60.exe [24] PostScript IFilter http://www.ifiltershop.com/postscript-ifilter.html [25] http://searchengineshowdown.com/features/google/dbanalysis.shtml [26] Výběr a popisné statistiky http://new.euromise.org/czech/tajne/ucebnice/html/html/node7.html [27] Java 2 Platform Standard Edition 5.0 API Specification http://java.sun.com/j2se/1.5.0/docs/api/index.html [28] A Visual Index to the Swing Components http://java.sun.com/docs/books/tutorial/uiswing/components/components.html [29] Herout Pavel: Učebnice jazyka Java, KOPP, České Budějovice, 2003 [30] Písek Slavoj: Delphi - praktické příklady, Grada Publishing, Praha, 2002 [31] 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