Bakalářská práce

Transkript

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

Podobné dokumenty

rupruí sMLoUVA

rupruí sMLoUVA e) prodávajícíse zavazuje zahájit práce na odstranění závady, která byla nahlášena vsouladu s předchozím odstavcem této smlouvy, nejpozději do 72 hodin, I záruční doba neběžípo dobu, po kterou kupu...

Více