DjVu/Tisk
DjVu
Aktuální, editovalná verze této knihy je dostupná ve Wikiknihách, knihovně svobodných knih na adrese
//cs.wikibooks.org/wiki/DjVu/Tisk
Celý text je vydán pod GNU Free Documentation License.
Obsah
[editovat | editovat zdroj]- DjVu
- Nástroje pro práci s DjVu
- DjVuLibre
- Licence
- Dokument ve formátu DjVu
- Tvorba a úprava DjVu dokumentů
Nástroje pro práci s DjVu
[editovat | editovat zdroj]Editory DjVu dokumentů
[editovat | editovat zdroj]Nástroje pro úpravu DjVu dokumentů
[editovat | editovat zdroj]Open source nástroje
[editovat | editovat zdroj]Na základě empirického srovnávání konverzních výsledků komerční aplikace Document Express a opensource nástrojů z DjVuLibre, lze konstatovat, že u kvalitních předloh, skenovaných na kvalitním skeneru lze s komerčním nástrojem dosáhnout mnohem lepší výsledek. A to jak z hlediska kompresního poměru, tak i pokud jde o kvalitu OCR.
Naopak u předloh velice špatné kvality byl lepší výsledek spíše na straně opensource nástrojů. Navíc na straně opensource je jeden velice důležitý trumf - skutečný editor skryté textové vrstvy djvusmooth kterým lze provést korekturu výsledku OCR.
Djvusmooth
[editovat | editovat zdroj]http://jwilk.net/software/djvusmooth
Je opensource editor DjVu dokumentů, jehož autorem (stejně jako ocrodjvu je Jakub Wilk.
Jde v podstatě o grafickou nadstavbu k jeho pythonovského modulu pro práci s DjVu, která je určena pro práci s metainformacemi a již existující skrytou textovou vrstvou..
- Plusy
- - umožňuje vytvářet a editovat záložky obsahu (outline)
- - umožňuje vkládat hyperlinky a metainformace
- - umožňuje editovat skrytou textovou vrstvu a měnit umístění a rozměry všech prvků textové vrstvy
- - Pro OCR lze nastavit použitý jazyk a funguje docela dobře
- Mínusy
- - pouze v omezené míře umožňuje přidávat a odstraňovat nové prvky ve skryté textové vrstvě
- - neumí prvky ve skryté textové vrstvě přesouvat
Aplikace je stále v aktivním vývoji
Ocrodjvu
[editovat | editovat zdroj]http://jwilk.net/software/ocrodjvu
Je ve své podstatě konzolová nadstavba pro aplikaci OCR na DjVu dokumenty. Jako engine může používat buď Tesseract, nebo Cuneiform.
Zatím co ocrodjvu je samostatná konzolová aplikace, komerční nástroje pro zpracování DjVu obvykle pracují přímo s OCR aplikací třetích stran, kterou si nesou sebou. Výhodou ocrodjvu je že umožňuje zvolit která aplikace se má na OCR použít. Např.při použití cuneiform u stránky s českým textem lze dosáhnout mnohem lepšího výsledku, než komerčního produktu.
Také vhodnou volbou parametrů a úpravou zpracování vstupního dokumentu, lze dosáhnout kvalitnějšího výsledku OCR
Příklad aplikace ocrodjvu na DjVu dokument najdete jako přílohu. Pro porovnání je uveden výsledek OCR u aplikace Document Express.
Výstup z ocrodjvu byl upraven tím že odstavce byly zalomeny na řádky, pro větší přehlednost.
ocrodjvu | Document Express |
---|---|
Mat/ic Icosa/tec/ran
!icet'b
IV/ KOMBINATOR ICKÉ HLAVOLAMY
5/ PLATONOVA TĚLESA A HRAČKY FIRMY PYRAMINX
ce těchto hraček je však velmi obtížné provádět, pokud hračky samy nejsou k dispozi-
ci. Jako u Rubikovy kostky, i zde je potřeba si trochu zaexperimentovat, abychom na-
lezli užitečné postupy.
Řekli jsme, že všechna Platónova tělesa byla vvužita ke konstrukci těchto hraček.
Kdepak tedy márne ikosaedr?, zeptáte se zcela oprávněně. Ten je šikovně zamaskován
do tvaru koule s názvern „Incredi Ball" — tedy neuvěřitelnÝ míč. Hračka je to krásná,
ale víte-li si rady s dodekaedÍ ickou íílohou na Megaminxu, zvládnete ji okamžitě. In-
credi Ball je totiž k IVIegaminxu ve stejnétn vztahu, jako minikostka ke klasické kostce.
Trojůhelníky, ze kterúch se tato hračka skládá, se totiž při otáčení pohybují stejně jako
rohové kostičky Megantinxu a navíc nemáte žátlné starosti s hranovými kostičkamL
Na těchto příkladech vzájemných vztahů jednotlivúch hraček je vidět, že má smysl Še
jimi zabúvat hlouběji jako celkem.
|
Scewb
Magic /cosahedron
ce těchto hraček je však velmi obtížné provádět, pokud hračky samy nejsou k dispozi-
ci. Jako u Rubikovy kostky, i zde je potřeba si trochu zaexperimentovat, abychom na-
lezli užitečné postupy.
Í{.ekli jsme, že všechna Platónova tělesa byla využita ke konstrukci těchto hraček
Kdepak tedy máme ikosaedr?, zeptáte se zcela oprávněně. Ten je šikovně zamask()Ván
do tvaru koule s názvem ..Incredi Bali" - tedy neuvěřitelný míč. Hračka je to krásná,
ale víte-li si rady s dodekaedrickou úlohou na Megaminxu, zvládnete ji okamžitě. In-
credi Bali je totiž k Megaminxu ve stejném vztahu, jako minikostka ke klasické kostce.
Trojúhelníky, ze kterých se tato hračka skládá, se totiž při otáčení pohybují stejně jako
rohové kostičky Megaminxu a navíc nemáte žádné starosti s hranovými kostičk mi.
Na těchto příkladech vzájemných vztahů jednotlivých hraček je vidět, že má smysl s
jimi zabývat hlouběji jako celkem.
lVI KOMBINATORICKÉ HLAVOLAMY
51 PLATONOVA Ti:LESA A HRACKY FIRMY PYRAMINX
209
|
Rozdíly:
- ocrodjvu se pokusí rozpoznat nejenom řádky, ale také odstavce (Document express pracuje pouze s řádky)
- ocrodjvu při rozpoznávání pravděpodobně primárně postupuje zleva doprava. Proto je text záhlaví umístěn před vlastním obsahem.
- pokud jde o chyby při rozpoznávání, je výsledek tak 50:50
Komerční produkty
[editovat | editovat zdroj]Komerční produkty oproti opensource produkují lepší výsledky z hlediska kompresního poměru. Je to dáno tím, že obsahují další algoritmy, které podle charakteru dokumentu volí optimální parametry pro vlastní kompresi.
Velmi přitom záleží na kvalitě vstupního souboru. Čím kvalitnější předloha, tím lepší výsledek poskytne komerční produkt.
DjVuSolo 3.1
[editovat | editovat zdroj]Poslední verzi této aplikace, která je pouze pro MS Windows uvolnila fa. Lizzardtech k volnému použití, protože její vývoj byl ukončen a začal místo ní nabízet DjVu Document Express Editor.
Aplikace umožňuje:
- konvertovat do DjVu (verze 24) obrázky z formátu bmp, jpeg, tiff, pict, pbm, pnm, ppm, pgm
- spojovat a rozdělovat DjVu dokumenty
- vytvářet hyperlinky v grafickém prostředí
- generovat náhledy stránek
Plusy - aplikace funguje bez problémů také pod wine
Mínusy - neumožňuje práci s textovými vrstvami - hledání textu, atp. - nepracuje s metainformacemi - nezobrazuje rejstřík
DjVu dokumenty které produkuje komerční DjVu Document Express ( a ty co jsou prezentovány jako DjVu verze 25 a vyšší ), neumí DjVuSolo otevřít!
Dokumenty, které jsou vytvořené pomocí open source nástrojů z DjVuLibre sice s prskáním otevře, ale jelikož neumí pracovat se skrytou textovou vrstvou, metainformacemi, ani záložkami, může dojít při přepsání původních souborů ke ztrátě informací v nich uložených!
DjVu Document Express
[editovat | editovat zdroj]Je komerční sada nástrojů společnosti LizardTech. Její součástí je editor DjVu dokumentů který nahradil DjVuSolo. Má sice omezené možnosti editace zdrojového textu - umožňuje na něj pouze pasivně aplikovat OCR, umožňuje ale práci s poznámkami, metainformacemi a hyperlinky.
- Document Express Editor 5.0.0 build 16
- již je sice zastaralý, bohužel novější verzi se mi nepodařilo nainstalovat, byť má jít o trial.
- Plusy
- - funguje bez problémů také pod WINE
- - lze pracovat také s hyperlinky typu polygon
- - Pro OCR lze nastavit použitý jazyk a funguje docela dobře
- Mínusy
- - neumožňuje hledání v textu
- - nepracuje s metainformacemi
- - OCR je možné aplikovat pouze na celou stránku
Nástroje pro dávkové zpracování
[editovat | editovat zdroj]Document Express 7.5 Enterprise
[editovat | editovat zdroj]DjVuLibre
[editovat | editovat zdroj]http://djvulibre.djvuzone.org/
Dodělat:
Chybí stránky pro utility:
- cpaldjvu - pro kompresi obrázku s nízkým počtem barev (používá jb2 kompresi)
- csepdjvu - podobně jako přes djvumake lze přes něj tvořit djvu dokumenty. Umožňuje však sofistikovanější generování popředí a pozadí (které lze pak sloučit přes djvumake)
- ddjvu - dekodér pro DjVu dokumenty
- djvm - utilita pro přehazování a mazání stránek ve svazku
- djvmcvt - utilita pro převod svazků Djvu z bundled na indirect a naopak
- djvutxt - utilita použitelná pro hledání, jinak stačí djvused
- djvuxmlparser - výsledné XML není optimální..
DjVuLibre (neboli svobodné DjVu) je rozšířená verze DjVu enkodéru postavená nad původním kódem verze 3.5, který uvolnila v říjnu 2000 pod GPL2 licencí firma LizardTech Inc. ( v současné době, tj. k červnu r.2010 komerční software vyvíjí a nejspíš i vlastní práva k původnímu kódu fa. Camino) S vývojem DjVuLibre začal v říjnu 2001 jeden ze spoluautorů tohoto formátu - Léon Bottou.
Součástí DjVuLibre je kromě základní knihovny také sada utilit pro práci s DjVu soubory a plugin pro internetové prohlížeče. Dříve byl součástí také prohlížeč DjVu souborů Djview 3.0. V současné době je prohlížeč Djview 4.0 samostatou aplikací. DjVuLibre obsahuje následující utility:
any2djvu | skript pro on-line konverzi dokumentů do DjVu skrze veřejný server |
djvudigital | utilita pro konverzi postsciptových souborů do DjVu (vyžaduje speciální ovladač pro ghostscript gsdjvu!) |
djvups | nástroj pro konverzi DjVu do postscriptu (pro tisk) |
djvuserve | nástroj pro práci se svázanými DjVu dokumenty (distribuován v samostatném instalačním balíku) |
gsdjvu | ovladač pro ghostscript pro přímý tisk z postscriptu do DjVu (není součástí DjVuLibre) |
pdf2djvu | nástroj pro konverzi dokumentů z PDF do DjVu (není součástí DjVuLibre) |
bzz | kompresní utilita pro DjVu soubory |
cjb2 | enkodér pro černobílé soubory (text) |
cpaldjvu | enkodér pro obrázky s omezenou barevnou paletou (kresby) |
c44 | enkodér pro barevné soubory (fotky) |
csepdjvu | nástroj pro tvorbu DjVu souboru ze surových dat |
ddjvu | dekodér DjVu souborů |
djvm | nástroj pro manipulaci s obsahem DjVu souborů |
djvmcvt | nástroj pro práci s DjVu svazky |
djvudump | nástroj pro výpis struktury DjVu souboru |
djvuextract | nástroj pro extrakci jednotlivých vrstev z DjVu souboru |
djvumake | nástroj pro tvorbu DjVu souboru slučováním jednotlivých vrstev |
djvused | nástroj pro práci s textovou vrstvou DjVu souboru |
djvutoxml | pro export textové vrstvy do DjVuXML |
djvutxt | zjednodušená nadstavba pro djvused, pro export holého textu |
djvuxmlparser | nástroj pro import DjVuXML (pozor nezvládá všechny elementy!) |
Licence
[editovat | editovat zdroj]Formát DjVu byl uvolněn pod licencí GPL2 v březnu 2001. Nejprve verze 2.0 a posléze i verze 3.5. Na jejím základě začal Léon Bottou vyvíjet, jakožto odvozené dílo, opensource knihovnu DjVulibre.
Dvě důležité části DjVu enkodéru - ZP-kodér a technika maskování pozadí která se používá u iw44 enkodéru, však chrání několik patentů z nichž většinu vlastní AT&T. Firma Lizardtech proto získala na tyto patenty rozsáhlá práva a veřejným prohlášením poskytla pro tento formát a s ním spojené patenty pro použití v rámci GPL software trvalou volnou licenci.
Text několika odstavců tohoto prohlášení však nebyl zcela jednoznačný a mohl bránit dalšímu vývoji opensource DjVu knihovny, proto dopisem z 19. června 2002 Lizardech změnil text omezujících odstavců tak, aby bylo zřejmé že se omezení vztahuje pouze na jeho originální kód. Tím, že Lizardtech výslovně zmínil, že se omezení vztahuje pouze na původní část kódu, umožnil další vývoj knihovny DjVulibre pod GPL2, který je zárukou, že kromě těchto původních patentově chráněných technologií knihovna již žádný jiný patentově chráněný kód neobsahuje.
Nástroje
[editovat | editovat zdroj]Tento skript je specifickou utilitou linuxové verze DjVuLibre!
Název
[editovat | editovat zdroj]any2djvu - je shellový skript, který odesílá ke konverzi postscriptové a pdf dokumenty na veřejný DjVu server
Použití
[editovat | editovat zdroj]any2djvu [volby] [URL_k_souboru] { konvertovaný_soubor_A konvertovaný_soubor_B … }
Popis
[editovat | editovat zdroj]Skript any2djvu - je shellový skript, který odesílá ke konverzi postscriptové a pdf dokumenty na veřejný DjVu server http://any2djvu.djvuzone.org Aby bylo možné použít skript any2djvu, je tedy nutné mít funkční připojení do internetu!
Skriptu se v případě souboru umístěného někde na webu předá jako první parametr URL k postscriptovému či pdf souboru a teprve jako druhý parametr! název souboru. V případě že se ke konverzi odesílá lokální soubor se URL vynechá.
Skript pak - v případě souboru z internetu - předá parametry serveru. Při konverzi lokálního souboru provede upload na server. Pro odesílání a stahování souborů využívá skript curl.
DjVu server provede konverzi a nabídne hotový DjVu dokument ke stažení.
Volby ovlivňující kvalitu komprese
[editovat | editovat zdroj]Je univerzální kompresní a dekompresní utilita, která se u DjVu využívá pro kompresi a dekompresi textových vrstev ANTz ( metainformace, hyperlinky a záložky), TXTz ( skrytá textová vrstva ) a barevných složek v JB2. Podobně jako bzip2 využívá pro přípravu dat ke kompresi Burrows-Wheelerovu transformaci ovšem pro samotnou kompresi používá vlastní aritmetický ZP adaptive kodér navržený speciálně pro potřeby DjVu.
U bzip2 se používá pro vlastní kompresi Huffmanovo kódování, které sice nemá tak dobrý kompresní poměr jako aritmetické kódování, není však zatíženo patenty.
Použití
[editovat | editovat zdroj]Při kompresi
bzz -e[ velikost bloku ] vstupní_soubor výstupní_soubor
Při dekompresi
bzz -d vstupní_soubor výstupní_soubor
Místo vstupního a výstupního souboru lze použít standardní vstup či výstup a propojit bzz s dalšími utilitami pomocí roury
Volby ovlivňující kvalitu komprese
[editovat | editovat zdroj]V komprimačním režimu lze předat parametru -e jako volitelný argument velikost bloku v kilobajtech, s jakou má pracovat Burrows-Wheelerova transformace (výchozí velikost je 2048 KB). Je-li velikost bloku menší, je komprimace (a dekomprimace) méně náročná na paměť. Na druhou stranu nastavení velikosti bloku je výhodné tehdy, pokud je velikost vstupního souboru menší než jeho velikost. Maximální použitelná velikost bloku je 4096 KB.
Název
[editovat | editovat zdroj]cjb2 - Jednoduchý DjVuBitonal enkodér
Použití
[editovat | editovat zdroj]cjb2 [ volby ] vstupní_soubor [ výstupní_djvu_soubor ]
Popis
[editovat | editovat zdroj]Pomocí cjb2 se komprimuje tzv. maska ( která se do výsledného dokumentu vloží jako Sjbz vrstva ), co byla použita pro vrstvu s popředím ( FGbz vrstva ) budoucího DjVu dokumentu.
U tištěných ( nebo psaných ) materiálů či pérovek zabírá většinu plochy pozadí - plocha. To samo o sobě většinou nenese podstatnou informaci. Je-li tedy z plochy pozadí odfiltrováno popředí (písmo či kresba), může wavelet kompresor pracovat s velkými spojitými barevnými plochami a tím i dosáhnout mnohonásobně lepšího kompresního poměru.
Pro toto odfiltrování se používá tzv. bitonální maska. Tj. rastrový soubor, který tvořený kombinací prázdných bodů a bodů jednobarevné kresby. Před vložením do DjVu dokumentu je nutno tuto masku komprimovat. Komprese jb2 ( se kterou pracuje cjb2 ) funguje podobně jako komprese JBig2, kterou používá PDF ke kódování černobílých obrázků.
- Vstupní obrázek je rozdělen na jednotlivé znaky (shluky barevných pixelů), které jsou hierarchicky setříděny na základě podobnosti.
- Část z těchto znaků se komprimuje přímo na základě aplikace statistického modelu a aritmetického kódování.
- Další část se komprimuje nepřímo, na základě podobnosti s jinými již rozpoznanými znaky
- Zbytek, kterým obvykle bývá grafika se pak komprimuje klasickým souřadnicovým způsobem
V DjVu prohlížečce se tato maska (v kombinaci s vrstvou popředí) interpretuje jako černobílá verze stránky, kdy prázdné body jsou prezentovány jako bílé a barevné jako černé.
Volby ovlivňující kvalitu komprese
[editovat | editovat zdroj]Komprese pomocí cjb2 může být bezztrátová, ale i ztrátová. Ve výchozím nastavení cjb2 komprimuje bezztrátově (tj. stejně jako by byla použita volba -losslevel 100
). Vstupní soubor musí být černobílý obrázek ve formátu PBM (portable bitonal-map) nebo jednostránkový černobílý TIFF soubor. Výstupem je pak DjVuBitonální soubor.
Tento DjVuPhoto enkodér do formátu IW44 slouží ke kompresi obrázků.
Mezi hlavní cíle sledované při návrhu DjVu, patřilo nejenom dosažení vysokého kompresního poměru, ale také plynulé zobrazování velkých obrázků i na strojích s omezeným množstvím paměti. Formát IW44 proto používá wavelet koeficienty, které se průběžně aktualizují během dekódování obrazu. Díky nim může prohlížeč rychle poskytnutout libovolnou část obrazu, bez zdlouhavého přepočítávání.
Dekódování obrazu a přepočet těchto koeficientů probíhá při zobrazování souběžně, proto hodně záleží na tom, jak byla komprese do IW44 provedena. Při nevhodně zvolených parametrech sice můžeme dosáhnout menší velikosti výstupního souboru, ovšem zaplatíme za to zvýšenými nároky při zpětné interpretaci obrazové informace.
Použití
[editovat | editovat zdroj]c44 [ volby ] vstupní_soubor [ výstupní_soubor ]
- Vstup nelze předávat ke zpracování rourou.
- Pokud není uveden výstupní soubor pak je název výstupního souboru vygenerován automaticky za použití názvu vstupního souboru, s přidáním přípony .djvu
Vstupní soubor může být buď ve formátu PGM (portable gray-map) nebo PPM (portable pixmap). Enkodér akceptuje také obrázky komprimované ve formátu JPEG. V takovém případě je však doporučeno používat pouze vysoce kvalitní JPEG soubory (tj. s nízkým kompresním poměrem a v maximální velikosti).
Volby které ovlivňují výslednou kvalitu komprese
[editovat | editovat zdroj]Tyto volby lze kombinovat jen v omezené míře. Prioritu má vždy ta, je uvedena naposled
DjVuPhoto soubor je logicky složen ze sekvence "řezů" (slices). Ty jsou složeny do vrstev (chunks). Z těchto vrstev se postupně renderuje obrázek. Prohlížeč je tak schopen zobrazit přinejmenším částečně obrázek již po zpracování první vrstvy. Běžný DjVuPhoto soubor obsahuje 80 až 120 řezů rozdělených do 1 až 4 vrstev.
Volbami pro nastavení kvality zpracování tak můžete ovlivnit jak počet vrstev tak počet řezů do kterých bude obrazová informace během kódování rozdělena. c44 přidává jednotlivé řezy při kompresi do aktuální vrstvy tak dlouho, dokud nedosáhne předem definovaného kritéria. Tímto kritériem může být počet řezů, velikost souboru nebo nastavení celkové kvality.
Při předávání argumentů pro jednotlivé vrstvy, se hodnoty od sebe oddělují buďto čárkou, nebo znaménkem plus. Při plus se použije stejný počet řezů na vrstvu, jako je definován číslem. Je-li použitá čárka, pak musí číslu odpovídat celkový počet řezů na aktuální úrovni
-slice 74+13+10 bude mí stejný efekt jako -slice 74,87,97
- -slice
- nastavení počtu řezů na vrstvu. Mezní hodnoty jsou od 1 do 140
- -size
- nastavení velikosti vrstvy v bajtech ( Barevné řezy jsou do vrstvy přidávány tak dlouho, dokud není dosaženo určené velikosti. )
- -bpp
- nastavení velikosti vrstvy v bitech na pixel ( Dobrý výsledek dává -bpp 0.25,0.5,1 )
- -percent
- specifikace velikosti vrstvy procentuálně vůči celkové velikosti vstupního souboru (Pozor, výsledek se může výrazně lišit v závislosti na použitém formátu vstupního souboru. Nezapomeňte že formáty jako např. JPEG budou před konverzí dekomprimovány )
- -decibel
- Pozor, předcházející hodnota musí být vždy nižší než následující. (Tato volba může výrazně ovlivnit čas komprese)
- -dbfrac
- indikuje že hodnoty, předané parametrem -decibel mohou být vzorek.. ( Tato volba se používá souběžně s volbou -decibel. Je vhodná zvláště při kompresi souborů, které obsahují velké souvislé barevné plochy, např. obrázky s velkým bílým okrajem)
Použití masky
[editovat | editovat zdroj]- -mask
- předávaným parametrem je cesta k černobílému PBM souboru stejných rozměrů jako je Vstupní soubor.
Maska se používá, pokud chceme komprimovat obrázek jako pozadí a odfiltrovat z něj text či kresbu, která bude ve vrstvě popředí. Každý černý pixel masky říká enkodéru, že hodnota stejného pixelu ve vstupním souboru je nepodstatná. Ten pak nahrazuje tyto odmaskované pixely barvou, která má nejmenšími nároky na enkódování.
Volby, které ovlivní výsledné barevné podání
[editovat | editovat zdroj]Barevné podání lze ovlivnit nastavením sytosti barev ( chrominance ) a jasu ( luminance ). Volby které ovlivňují nastavení barev jsou:
- -crcbnone
- při kompresi dojde k zahození barevných složek (zůstane pouze jasová ) výsledný obrázek tak bude ve stupních šedi
- -crcbnormal
- barevné složky obrázku jsou kódované ve stejném poměru jako jasová
- -crcbhalf
- hodnota všech barevných složek je snížena o polovinu jasu
- -crcbfull
- nejvyšší možné nastavení kvality kódování barev ( alternativa k -crcbnormal )
- -crcbdelay
- Volba, jejímž parametrem je číslo, které udává počet řezů u kterých má být zredukována barevná informace (výchozí hodnota je 10), takže hodnota 0 odpovídá volbě -crcbnormal (resp. -crcbfull).
- -gamma
- upravuje nastavení gammy výchozího souboru. Ta by měla odpovídat hodnotě zařízení na kterém bude obrázek zobrazován. Výchozí hodnota, která by měla odpovídat standardnímu monitoru je 2.2
Volby které ovlivní defaultní zobrazení
[editovat | editovat zdroj]- -dpi
- Rozlišení v dpi. Může se pohybovat v hodnotách od 25 do 1200 (výchozí hodnota je 100) Určuje v jaké výchozí velikosti bude soubor zobrazovat dekodér
DjVu/DjVu/DjVuLibre/djvudigital
Název
[editovat | editovat zdroj]djvused - Víceúčelový editor DjVu dokumentů
Použití
[editovat | editovat zdroj]djvused [volby] djvusoubor
Popis
[editovat | editovat zdroj]Aplikace djvused je silný konzolový nástroj pro práci s obsahem vícestránkových djvu dokumentů. Lze jej použít pro psaní či úpravu poznámek, skryté textové vrstvy, přípravu náhledů stránek, atd. Funguje tak, že nejprve načte djvu soubor a pak postupně vykonává předávané příkazy.
Tyto příkazy lze předat načtením ze souboru s odpovídající syntaxí (je-li takový soubor pomocí parametru -f určen), přímo z příkazové řádky (skrze parametr -e) nebo je zadávat interaktivně.
Volby
[editovat | editovat zdroj]-v
- Volba způsobí že djvused vypisuje při zpracování podrobnou zprávu o tom co který příkaz dělá. Tato volba je zvláště užitečná pro debugování skriptů pro djvused, ale také při interaktivním zadávání příkazů pro djvused přímo na standardním vstupu.
-f /cesta/k/souboru_se_skriptem
- Příkazy jsou načteny ze souboru s odpovídající syntaxí příkazů
-e 'sada příkazů'
- Tato volba zajistí předání odpovídající sady příkazů přímo z příkazové řádky, není tedy nutné je mít uvedeny přímo v souboru se skriptem. Aby bylo zabráněno nežádoucí expanzi na příkazovém řádku, je třeba sadu příkazů uzavřít do jednoduchých uvozovek.
-s
- Tato volba zajistí uložení změn po vykonání příslušných příkazů. Co do funkčnosti odpovídá volbě save při přímé editaci.
-n
- Způsobí, že jsou editační příkazy prováděny "nasucho", bez toho aniž by došlo k jejich uložení. Tato volba je zvláště užitečná pro debugování skriptů pro djvused, bez toho aniž by docházelo k přepsání djvu souboru na disku.
Příklady
[editovat | editovat zdroj]Aplikaci djvused lze využívat mnoha způsoby, zde je několik příkladů jakým způsobem ji lze použít při zpracování djvu souborů.
Zjištění velikosti stránky
[editovat | editovat zdroj]Výstup z příkazu size vrací šířku a výšku zvolené stránky v pixelech. Příklad demonstruje vytažení rozměrů 3 strany z dokumentu soubor.djvu. (Souhrnné informace o celém dokumentu lze získat příkazem djvudump)
user@stroj:~$ djvused soubor.djvu -e 'select 3; size' width=4960 height=7016
Vytažení neviditelné textové vrstvy
[editovat | editovat zdroj]Výstup příkazu print-pure-txt vrací čistě textový obsah skryté textové vrstvy DjVu dokumentu. Řádky a stránky jsou odděleny obvyklými kontrolními znaky.
user@stroj:~$ djvused soubor.djvu -e 'print-pure-txt'
Příkaz print-txt poskytuje podrobnější výstup, jehož syntaxe odpovídá syntaxi popsané v kapitole [[../../Textová vrstva DjVu dokumentu|Textová vrstva DjVu dokumentu]]. Pro každý element jsou mimo textového obsahu uvedeny také jeho souřadnice vůči stránce. V příkladu lze vidět jak vytáhnout podrobnou strukturu textové vrstvy pro stránku 3.
user@stroj:~$ djvused soubor.djvu -e 'select 3; print-txt'
Vytažení anotací
[editovat | editovat zdroj]user@stroj:~$ djvused soubor.djvu -e 'select 1; print-ant'
Záloha/obnova textové vrstvy
[editovat | editovat zdroj]user@stroj:~$ djvused soubor.djvu -e 'output-all' > soubor.dsed
user@stroj:~$ djvused soubor.djvu -f soubor.dsed -s
Vytažení djvu stránky
[editovat | editovat zdroj]user@stroj:~$ djvused soubor.djvu -e 'select 5; save-page' p05.djvu
Vytvoření náhledů
[editovat | editovat zdroj]Náhledy, které se později mohou zobrazit ve čtečce DjVu souborů se vytváří pomocí příkazu set-thumbnails. Následující příklad vygeneruje náhledy o velikosti 64x64 pixelů pro všechny stránky souboru soubor.djvu
user@stroj:~$ djvused soubor.djvu -e 'set-thumbnails 64' -s
Příkazy pro djvused
[editovat | editovat zdroj]Při spouštění djvused se může (ale nemusí) předat jeden i více příkazů případně komentář. Jednotlivé příkazy musí být odděleny středníkem ;
. Za komentář je považováno vše co začíná mřížkou #
až do konce aktuálního řádku.
Příkazy pro výběry
[editovat | editovat zdroj]ls
select [ identifikátor_souboru ]
select-shared-ant
create-shared-ant
Různé příkazy
[editovat | editovat zdroj]help
n
dump
size
Příkazy pro práci s textem a poznámkami
[editovat | editovat zdroj]print-pure-txt
print-txt
remove-txt
set-txt [ soubor_s_dsed_skriptem ]
output-txt
print-ant
print-merged-ant
remove-ant
set-ant
output-ant
print-meta
set-meta [ soubor_s_dsed_skriptem_pro_metainformace ]
output-all
Příkazy pro práci se záložkami
[editovat | editovat zdroj]print-outline
set-outline
Příkazy pro práci s náhledy
[editovat | editovat zdroj]set-thumbnails velikost_v_pixlech
remove-thumbnails
Příkazy pro uložení
[editovat | editovat zdroj]save
save-bundled jméno_souboru
save-indirect jméno_souboru
save-page jméno_souboru
save-page-with jméno_souboru
Syntaxe pro DjVu soubory
[editovat | editovat zdroj]Použitelná u dsed skriptů.
Omezení
[editovat | editovat zdroj]Současná verze djvused umožňuje práci buď s jedinou vybranou stránkou v DjVu dokumentu, nebo s celým dokumentem. Nelze provádět výběry několika stran.
Název
[editovat | editovat zdroj]djvutoxml - Utilita pro export textového obsahu DjVu dokumentu do XML
Použití
[editovat | editovat zdroj]djvutoxml [volby] djvusoubor [volby] vystup.xml
Popis
[editovat | editovat zdroj]Aplikace djvutoxml je určená pro export textového obsahu DjVu dokumentu do XML souboru, který lze pak dále zpracovávat pomocí XSLT transformací, atp.
Volby
[editovat | editovat zdroj]--page pořadové_číslo_stránky
- Do výstupu je zahrnuta pouze vybraná stránka.
--with-text
- Do XML výstupu je vložena textová vrstva
--without-text
- Do XML výstupu není vložena textová vrstva.
--with-anno
- Do XML výstupu jsou zahrnuty poznámky, linky a metainformace
--without-anno
- Výstup neobsahuje metainformace, linky a poznámky
Omezení
[editovat | editovat zdroj]Současná verze nástrojů, která je součástí distribučního balíku, je jemně řečeno na prd. djvutoxml vůbec nepracuje se záložkami a alternativními tituly stránek. A djvuxmlparser navíc neumí uspokojivě importovat hyperlinky.
Dokument ve formátu DjVu
[editovat | editovat zdroj]DjVu dokument je produkt zobrazovací technologie, která byla postavena na výchozím poznatku že u klasického, až již psaného či tištěného, dokumentu zabírá "barva", která je nositelem textové informace, z celkové plochy pouhých pár procent. Je-li písmo (popředí) odseparováno za pomoci masky od pozadí, lze využít při kompresi každé z těchto vrstev postupů, které výrazně zlepší jejich kompresní poměr.
Komprese BZZ
[editovat | editovat zdroj]Výchozí kompresní algoritmus pro DjVu byl postaven, podobně jako bzip2, na Burrows-Wheelerově transformaci v kombinaci s algoritmy Karp-Miller-Rosenberga a Bentley-Sedgewicka. Spolu s dalšími technikami se využívá pro kompresi barevných vrstev u JB2 a při kompresi vrstev které nesou textovou informaci.
DjVuText - komprese JB2
[editovat | editovat zdroj]JB2 není samostatný kompresní algoritmus, ale aplikace BZZ komprese na sadu samostatně komprimovaných bloků obrazových dat. Kompresní utilita nekomprimuje celý obraz, ale z celkové plochy obrazu vyseparuje pouze bloky, které nesou nějakou informaci (shapes) - typicky písmena - a pouze ty zakomprimuje pomocí BZZ. Do souboru se pak postupně za sebou ukládají souřadnice bloku, informace o jeho barvě, velikost komprimovaných dat a blok komprimovaných dat.
Prohlížečka při dekompresi postupně tyto bloky načítá a zobrazuje. Pro výsledný kompresní poměr tedy není ani tak důležitý počet barev, jako spíš počet a velikost komprimovaných plošek. Čím vyšší je u vstupního dokumentu úroveň "šumu", tvořeného různými drobnými artefakty ( nečistoty, ev. mechanická struktura skenovaného dokumentu) tím větší počet bloků je ke komprimaci a horší výsledný kompresní poměr.
Bitonální JB2 komprese se využívá při kompresi masky (vrstva 'Sjbz') a barevná u popředí, je-li v indexovaných barvách (vrstva 'FGjz').
U vícestránkových dokumentů lze kompresní poměr zlepšit také použitím sdílené 'Djbz' vrstvy. Ta je založena na předpokladu, že se podobné komprimované plošky (písmena) na stránkách opakují. U stránky, která využívá sdílenou 'Djbz' vrstvu se do 'Sjbz' vrstvy (masky) ukládají pouze ty komprimované plošky, které ve sdílené 'Djbz' vrstvě nevyskytují.
DjVuPhoto - komprese IW44
[editovat | editovat zdroj]Pro kompresi obrázků používá DjVu kompresní formát založený na vlnkové (wavelet) kompresi. Ta je založena na tom, že barevný obrázek tvoří barevné plošky, které lze vymezit pomocí křivky. Oproti klasické bitmapové kompresi při které je obrázek popsán jako jeden barevný bod, lze obrázek kde je barevná plocha definována pomocí křivky zvětšovat, aniž by se z něj stala změť barevných čtverečků. Komprese IW44 funguje tak, že se obrázek nejprve zredukuje na celistvé barevné plošky, ty se převedou na křivky (splices), a ty se pak podle předem zvoleného schématu umístí do dalších vrstev.
Při generování obrázku pak prohlížečka tyto vrstvy postupně načítá a zobrazuje.
IW44 se používá především ke kompresi fotografií, u kterých drobné rozostření nevadí, barevných obrázků a obrázků v odstínech šedi.
DjVuLayered - aplikace masky
[editovat | editovat zdroj]U IW44 platí, že čím celistvější je barevná plocha, tím lze dosáhnout lepší komprese. Proto je výhodné využít při kompresi pozadí psaných, resp. tištěných dokumentů masku, která odfiltruje popředí. Díky tomu, že maska odfiltruje popředí, lze pozadí "popsat" pomocí menšího množství křivek a tím pak dosáhnout vyššího kompresního poměru.
Každý DjVu dokument je ve své podstatě vrstvený DjVu dokument (DjVuLayered), který může obsahovat minimálně jednu vrstvu, většinou však tyto dokumenty obsahují masku, popředí i pozadí.
Schéma DjVu dokumentu
[editovat | editovat zdroj]Základem je stránka, která má několik vrstev tzv. "chunks". Jednotlivé stránky lze spojovat do jednoho celku - "svazku" (bundle) pomocí aplikace djvm . V případě rozsáhlejších dokumentů umožňuje djvu formát také volnější spojení svazku (indirect), kdy jsou stránky uloženy v jediném společném adresáři a svázány jedním indexovým djvu souborem.
Převod mezi "bundle" a "indirect" lze bez problémů provádět pomocí djvmcvt . Výhodou spojených stránek je mimo jiné možnost používat interní hypertextové odkazy, podobně jako tomu je u PDF, generovat náhledy, atd.
Výpisu struktury pomocí djvudump se liší podle toho, zda je dokument typu "bundled" nebo "indirect". Protože v "bundled" svazku jsou přítomny zároveň všechny stránky, není problém vypsat také informace o vrstvách které obsahují. To však neplatí v případě že je dokument typu "indirect". Příklad téhož dokumentu ve formě:
"indirect" FORM:DJVM [136] DIRM [78] Document directory (indirect, 3 files 2 pages) p0001.djvu -> p0001.djvu shared_anno.iff -> shared_anno.iff p0002.djvu -> p0002.djvu NAVM [38] "bundle" FORM:DJVM [84467] DIRM [90] Document directory (bundled, 3 files 2 pages) NAVM [38] FORM:DJVU [51805] {p0001.djvu} INFO [10] DjVu 4960x7016, v24, 600 dpi, gamma=2,2 INCL [15] Indirection chunk --> {shared_anno.iff} Sjbz [28088] JB2 bilevel data FGbz [5681] JB2 colors data BG44 [4822] IW4 data #1, 72 slices, v1.2 (color), 1654x2339 BG44 [2683] IW4 data #2, 11 slices BG44 [3939] IW4 data #3, 10 slices BG44 [6399] IW4 data #4, 10 slices TXTz [7] Hidden text (text, etc.) ANTz [71] Page annotation (hyperlinks, etc.) FORM:DJVI [65] {shared_anno.iff} ANTz [53] Page annotation (hyperlinks, etc.) FORM:DJVU [32423] {p0002.djvu} INFO [10] DjVu 4960x7016, v24, 600 dpi, gamma=2,2 INCL [15] Indirection chunk --> {shared_anno.iff} Sjbz [15651] JB2 bilevel data FGbz [497] JB2 colors data BG44 [4836] IW4 data #1, 72 slices, v1.2 (color), 1654x2339 BG44 [2326] IW4 data #2, 11 slices BG44 [3202] IW4 data #3, 10 slices BG44 [5719] IW4 data #4, 10 slices ANTz [72] Page annotation (hyperlinks, etc.) TXTz [7] Hidden text (text, etc.)
Kromě stránek s obrazovou informací může obsahovat DjVu dokument také další stránky. Každá z nich je určena parametrem FORM. Podle jejich kodu můžete poznat jakou informaci obsahují
DJVM
[editovat | editovat zdroj]Je identifikátor, který najdete výhradně u vícestránkových DjVu dokumentů. Může obsahovat jeden až dva bloky informací. Vždy obsahuje blok DIRM a pouze je-li součástí svazku textový rejstřík (outline) obsahuje také blok NAVM.
DIRM
[editovat | editovat zdroj]Je blok dat, který se vyskytuje u všech typů svázaných dokumentů. Obsahuje základní informaci o dokumentech, které jsou součástí svazku a také informaci, zda-li je svazek pevný či volný. Na tom totiž záleží jak vypadá struktura dat.
Na rozdíl od volného (indirect) svazku obsahuje pevný (bundled) svazek blok s offsety jednotlivých stránek.
INT8 (1 bajt) | informace o typu dokumentu. Může mít pouze dvě hodnoty 1 (indirect) nebo 129 (bundle) |
Následující blok následuje pouze u pevných (bundled) svazků... | |
INT16 (2 bajty) | celkový počet spojených dokumentů |
Následující sekvence offsetů se opakuje podle počtu vložených dokumentů, a to včetně dokumentů sdílených!... | |
INT32 (4 bajty) | offset na kterém začíná spojený dokument |
Za offsety následuje komprimovaný blok dat. U volných (indirect) svazků následuje komprimovaný blok dat bezprostředně za identifikátorem typu svazku. Obsah komprimovaného bloku dat se opět liší podle typu svazku.
U pevného svazku obsahuje informaci o velikosti, typu a ID vložených dokumentů:
INT24 (3 bajty) * počet vložených dokumentů | délka vloženého dokumentu |
INT8 (1 bajt) * počet vložených dokumentů | typ vloženého dokumentu |
Následující sekvence se opakuje pro jednotlivé vložené dokumenty až do konce bloku dat... | |
UTF8 (řetězec) | ID vloženého dokumentu |
NULL (1 bajt) | oddělovač identifikátorů |
U volného (indirect) svazku obsahuje pouze odkazy na soubory.
NAVM
[editovat | editovat zdroj]Je komprimovaný blok dat, který následuje bezprostředně za blokem DIRM, pokud dokument obsahuje textový rejstřík (outline). U "volných" svazků je tedy stejně jako DIRM součástí indexového DjVu souboru. NAVM je součástí formátu DjVu od května 2003.
INT16 (2 bajty) | celkový počet elementů |
Následující sekvence se opakují pro jednotlivé položky až do konce bloku dat... | |
INT8 (1 bajt) | počet potomků elementu |
INT24 (3 bajty) | délka řetězce popisu |
UTF8 (řetězec) | popis elementu |
INT24 (3 bajty) | délka řetězce URL |
UTF8 (řetězec) | URL |
Viz ukázka rozbaleného bloku dat NAVM ukázkového souboru example_outline.djvu
:
0000000 00 08 05 00 00 13 4f 6e 6c 69 6e 65 20 50 75 62 .....8 5 ........19 O n l i n e __ P u b 0000016 6c 69 63 61 74 69 6f 6e 73 00 00 00 01 00 00 09 l i c a t i o n s .........0 1 .........9 0000032 53 61 6d 70 6c 65 73 20 31 00 00 0b 23 70 30 30 S a m p l e s __ 1 ........11 # p 0 0 0000048 30 31 2e 64 6a 76 75 01 00 00 0c 64 61 6c 73 69 0 1 . d j v u 1 ........12 d a l s i 0000064 5f 75 72 6f 76 65 6e 00 00 00 00 00 00 0d 61 20 _ u r o v e n .........0 0 ........13 a __ 0000080 6a 65 73 74 65 20 64 61 6c 73 69 00 00 00 00 00 j e s t e __ d a l s i .........0 0 .. 0000096 00 09 53 61 6d 70 6c 65 73 20 32 00 00 0b 23 70 .....9 S a m p l e s __ 2 ........11 # p 0000112 30 30 30 32 2e 64 6a 76 75 00 00 00 09 53 61 6d 0 0 0 2 . d j v u 0 .........9 S a m 0000128 70 6c 65 73 20 33 00 00 0b 23 70 30 30 30 33 2e p l e s __ 3 ........11 # p 0 0 0 3 . 0000144 64 6a 76 75 00 00 00 15 50 75 62 6c 69 73 68 65 d j v u 0 ........21 P u b l i s h e 0000160 72 73 20 54 65 63 68 6e 6f 6c 6f 67 79 00 00 1b r s __ T e c h n o l o g y ........27 0000176 23 70 75 62 6c 69 73 68 65 72 73 5f 54 65 63 68 # p u b l i s h e r s _ T e c h 0000192 6e 6f 6c 6f 67 79 2e 64 6a 76 75 00 00 00 08 44 n o l o g y . d j v u 0 .........8 D 0000208 6a 56 75 20 46 41 51 00 00 0d 23 64 6a 76 75 66 j V u __ F A Q ........13 # d j v u f 0000224 61 71 2e 64 6a 76 75 a q . d j v u
Aplikace djvused interpretuje tento blok kódu následujícím způsobem:
user@stroj:~$ djvused example_outline.djvu -e 'print-outline'
(bookmarks
("Online Publications"
""
("Samples 1"
"#p0001.djvu"
("dalsi_uroven"
""
("a jeste dalsi"
"" ) ) )
("Samples 2"
"#p0002.djvu" )
("Samples 3"
"#p0003.djvu" )
("Publishers Technology"
"#publishers_Technology.djvu" )
("DjVu FAQ"
"#djvufaq.djvu" ) ) )
Informace vytažené přímo z kodu:
Celkový počet položek: 8
- 5 Online_Publications
- 1 Samples_1 #p0001.djvu
- 1 dalsi_uroven
- 0 a_jeste_dalsi
- 0 Samples_2 #p0002.djvu
- 0 Samples_3 #p0003.djvu
- 0 Publishers_Technology #publishers_Technology.djvu
- 0 DjVu_FAQ #djvufaq.djvu
Interpretace kódu v prohlížečce:
- "Online Publications"
- "Samples 1"
- "dalsi_uroven"
- "a jeste dalsi"
- "Samples 2"
- "Samples 3"
- "Publishers Technology
- "DjVu FAQ"
U dokumentů Secure DjVu zůstává blok DIRM nešifrovaný. Více viz SDJVU
DJVI
[editovat | editovat zdroj]Je identifikátor sdíleného dokumentu. Ten obsahuje informace, které mají být dostupné ze všech dokumentů ve svazku. Metainformace, osnova, atd. Při převedení pevného (bundle) svazku na volný (indirect) mají soubory s těmito sdílenými dokumenty příponu "iff". Výjimkou jsou náhledy, které používají příponu "thumb".
U normálního DjVu dokumentu je v každém DJVI dokumentu vždy pouze jeden blok dat některého z následujících typů. U kryptovaného DjVu souboru to neplatí, protože u něj blok dat s informacemi o zabezpečení obsahuje bloky dva INCL a SINF.
Djbz
[editovat | editovat zdroj]Je blok dat, který obsahuje knihovnu tvarů (shapes), které se na stránkách opakují - typicky jde o písmo. Vrstva Sjbz (maska) ve stránce dokumentu pak obsahuje pouze ty tvary, které se v tomto sdíleném bloku nevyskytují.
ANTa
[editovat | editovat zdroj]Původní, dnes již nepoužívaný nekomprimovaný blok poznámkových dat
ANTz
[editovat | editovat zdroj]U DjVuLibre se setkáte pouze s jediným dokument tohoto typu - "shared_anno.iff", ve kterém by měly být soustředěny informace společné pro celý svazek. U některých volných svazků však lze narazit i na jiné soubory - "docmeta.iff" a "pagemeta.iff", s nimiž pracoval (dnes již nedostupný) komerční software JRAPublish. Nebo "djvudir.iff", který se používal pro DjVu svazky do verze 20.
JRMD
[editovat | editovat zdroj]S tímto identifikátorem datového bloku se můžete setkat pouze u dokumentů, které generoval již výše zmíněný JRAPublish. Podle stránky ( dnes již nedostupné ) http://www.planetdjvu.com/metadata_storage_for_djvu_files_m.htm měl tento blok obsahovat následující meta klíče:
- docmeta.iff - Title, Author, Date, Subject, Summary, Publisher
- pagemeta.iff - Author, Date, Subject, Publisher
Vrstvy JRMD které jsou součástí jednotlivých stránek by pak měly obsahovat meta klíče - Title a Summary
Vzhledem k tomu, že ve své "sbírce" mám jeden dokument, který byl vytvořený v JRAPublish, bylo možné tento blok částečně analyzovat
THUM
[editovat | editovat zdroj]Tento datový blok s předem vyrenderovanými náhledy se ve svazku může objevit i víckrát, ale u menších svazků nemusí být uveden vůbec. Má význam u pevných svazků kde je hodně stránek, resp. jsou velké, takže by renderování náhledu za běhu příliš zdržovalo, nebo u volných svazků prohlížených on-line.
Náhledy mohou být vyrenderované zvlášť pro každou stránku, ale mohou být i seskupeny povícero v několika blocích. Identifikátorem náhledu je TH44.
DJVU
[editovat | editovat zdroj]je vlastní stránka s obrazovou informací, která může kromě obrazových vrstev obsahovat také skryté textové vrstvy s textovým obsahem stránky, meta informacemi, hyperlinky, atd..
Vrstvy DJVU dokumentu
[editovat | editovat zdroj]Základní informace o djvu dokumentu (kolik má stránek, vrstev, atp.) lze získat mj. utilitou djvudump. Obrazové vrstvy (chunks) lze extrahovat pomocí nástroje djvuextract, ovšem POZOR z DjVu souborů nikdy nezískáte soubory identické s těmi, ze kterých byly vytvořeny, protože použitá wavelet komprese je ztrátová. Vytažené vrstvy však můžete použít do jiných dokumentů (např jako "vodoznak"), a nebo z nich vyrenderovat bitmapový obrázek a dále pracovat s ním.
- INFO
- je informační vrstva která obsahuje údaje pro výchozí nastavení obrázku. Jaké má použít prohlížeč výchozí rozměry, rozlišení, nastavení gammy. Od dubna 2001 je také jeho součástí příznak, který definuje jaká má být orientace stránky.
- INCL
- je virtuální vrstva která obsahuje odkaz na shared_anno.iff hlavičku a patičku dokumentu.
- Sjbz
- je vrstva která funguje jako maska při renderování popředí. V případě, že je zvolen při prohlížení režim kresba, nahrazuje chybějící barevné vrstvy. Může jí být obrázek zkomprimovaný nástrojem cjb2 ale také celý djvu dokument, je-li pouze jednobarevný. Od dubna 2001 podporuje kompresní formát jb2, který se na komprimaci této vrstvy používá, barvy. Předtím bylo možné použít pouze černobílou masku. Význam to má zvláště u starších tištěných dokumentů, kde díky tomu lze dosáhnout příznivé komprese celého djvu dokumentu. Zažloutlé pozadí stránek je odmaskováno do pozadí a písmo vhodným kontrastem vytažené do popředí. Maska může být také identifikována Smmr - je-li komprimovaná technologií MMR/G4, kterou používá TIFF.
- BG
- vrstvy pozadí - Obvykle jich je víc než jedna, ovšem extrahovat jsou pouze jako jeden celek.
- FG
- vrstvy popředí - tvoří primárně černobílá vrstva a vrstvy obsahující grafiku s indexovanými barvami. Při "manuální" tvorbě dokumentu můžeme zadanými parametry ovlivnit, které barvy budou součástí popředí a které již spadnou do pozadí.
- TH
- je vrstva s náhledy stránek vložených v dokumentu.
- TXT
- je textová vrstva dokumentu s vlastním textovým obsahem stránky.
- ANT
- je textová vrstva dokumentu, určená pro poznámky, bookmarky, hypertextové odkazy atp. Součástí formátu od dubna 2005
JRMD- je dnes již nepoužívaná textová vrstva dokumentu, určená pro poznámky, bookmarky, hypertextové odkazy. Generoval ji JRApublish 3.0(software, který je dnes prakticky nedostupný.).
CIDa- je vrstva kterou podle mnou nalezených informací generoval Virtual Print Driver (zřejmě přímo od Lizzardu) a byl součástí DjVu cca od verze djvu3.6.1 od června 2002 však už není podporovaná.
- Djbz
- je sdílená vrstva dokumentu, která obsahuje seznam tvarů (shapes), které se mohou na stránkách opakovat - typicky znaky písma. Vrstva Sjbz (maska) pak obsahuje pouze tvary, které se ve sdílené vrstvě nevyskytují.
Komprese, jaké se používají na vrstvy
[editovat | editovat zdroj]- Identifikace použité komprese v označení obrazové vrstvy
- bz - vrstva černobílá (resp. v indexovaných barvách) komprimovaná BZZ
- 44 - vrstva komprimovaná IW44
- jp - vrstva komprimovaná JPEG
- 2k - vrstva komprimovaná JPEG-2000
- mmr - černobílá vrstva komprimovaná G4
Tvorba a úprava DjVu dokumentů
[editovat | editovat zdroj]Aby bylo možno s dokumenty v djvu pracovat, je nutné mít v systému nainstalované příslušné knihovny a nástroje - distribuční balíky mají obvykle v názvu "djvu", ale kdo chce, tak si je může zkompilovat sám. V případě aplikace gsdjvu, kterou využívá djvudigital to je dokonce nutnost.
Konzervace psaného či tištěného dokumentu
[editovat | editovat zdroj]Pokud chceme zpracovat do djvu klasický papírový dokument, tak jej musíme nejprve naskenovat. Už přitom musíme mít na paměti, že v případě djvu platí - čím kvalitnější výchozí předloha, vyšší použité rozlišení při skenování a celistvější barevné plochy v rámci dokumentu, tím kvalitnější (a menší) výsledný dokument. Nalézt optimální hodnoty nemusí být jednoduché, zvláště v případě že zpracováváme dokumenty hodně barevné. Záleží pak hodně na zkušenosti zpracovatele.
Na hotový DjVu dokument pak můžeme aplikovat OCR pomocí ocredjvu. Tato aplikace výsledek umí rovnou vložit do DjVu dokumentu jako textovou vrstu - umožníte tím pak fulltextové prohledávání dokumentu. Korekturu textové vrstvy lze udělat pomocí nástrojů Linux:djvusmooth a djvused
Naskenovanou stránku můžete zpracovat rovnou příslušným enkoderem (na barevný obrázek použijeme c44 na černobílý cjb2), ale mnohem lepšího výsledku lze dosáhnout použitím masky a kombinací různých technik a nástrojů.
Skript pro převod naskenované stránky do DjVu
[editovat | editovat zdroj]Tajemství malé velikosti DjVu souborů totiž není ve wavelet kompresi, ale v použití masky. Kdybychom totiž celý dokument i s barevnou informací zkomprimovali jednoduše pomocí barevného enkodéru c44, byl by zbytečně velký. Vyplatí se to pouze pouze v případě, že jsou na stránce jenom fotografie.
Objem dat lze snížit tím, že dokumenty naskenujete rovnou černobíle, a převedete do DjVu pomocí bitonálního enkodéru cjb2. Ovšem toto je řešení pouze pokud stránka nenese žádnou jinou informaci (např. fotografie, barevné pozadí, poznámky v textu atd.)
Optimální komprese dosáhneme odfiltrováním textu od pozadí (a obrázků) pomocí masky. V následujícím příkladu je uveden opravdu velmi jednoduchý konverzní skript, který umožňuje volitelně při konverzi upravovat práh masky. Lze jej použít i na dokumenty s fotografiemi, ale na takové je už lepší vytvořit sofistikovanější nástroj, který umožní pomocí masky odsunout obrázky do pozadí. Usnadní to mimo jiné i aplikaci OCR.
#!/bin/bash
TEMP_DIR="/tmp/$WINDOWID$BASHPID"
mkdir $TEMP_DIR
TEMP_IMG="$TEMP_DIR/temp.ppm"
TEMP_MASK="$TEMP_DIR/mask.pbm"
DJVU_MASK="$TEMP_DIR/mask.djvu"
case ${1##*.} in
tiff) KONVERT="tifftopnm";;
png) KONVERT="pngtopam";;
jpg) KONVERT="jpegtopnm" ;;
esac
$KONVERT $1 | tee $TEMP_IMG | pamditherbw -threshold -value 0.${3-5} |pnmtoplainpnm > $TEMP_MASK;
cjb2 -lossy -clean $TEMP_MASK $DJVU_MASK;
djvumake $2.djvu Sjbz=$DJVU_MASK PPM=$TEMP_IMG;
EOF
Příklad použití:
./konverzni_skript.sh original.tiff vysledny 4
- Prvním parametrem je cesta ke konvertovanému dokumentu.
- Druhým parametr je název cílového djvu souboru
- Třetím, volitelným parametrem je nastavení prahu pro masku (není-li uveden, použije se hodnota 5)
Konzervace elektronického dokumentu
[editovat | editovat zdroj]Pokud si kladete otázku jaký má smysl převádět do DJVU např. webovou stránku, tak mohu nabídnout několik odpovědí.
- Podobně jako PDF uchová DJVU včetně jejího grafického vzhledu - je to v podstatě obrázek.
- Navíc je možné do dokumentu natlačit i textovou vrstvu, kterou lze fulltextově prohledávat a v případě potřeby vytáhnout a použít pro kompilaci jiného textu.
- Podobně jako PDF lze DJVU dokumenty spojovat do svazků a rozšiřovat o náhledy a hypertextové odkazy.
- Na rozdíl od PDF je-li DJVU dokument otevíraný skrz URL, není nutno čekat na stažení všech stránek, ale stránky se načítají průběžně. Navíc, pokud má webserver pro HTTP/1.1 protokol volbu "byte serving" a podporuje ji také váš prohlížeč a nejrůznější proxy mezi vámi a serverem, tak lze přejít i na další stránky aniž by bylo nutno čekat až přijde řada na jejich stažení - browser si o ně řekně přednostně.
Asi nejjednodušším způsobem jak získat z elektronického dokumentu dokument djvu je použití aplikace djvudigital
, ta však vyžaduje aby bylo v systému nainstalováno ghostscriptové rozšíření gsdjvu
které bohužel nemá GPL licenci, tudíž není součástí distribučních balíků. Ovšem lze je bez problému stáhnout z CVS archívu a zkompilovat zvlášť.
Výchozí dokument pak vytiskneme do postscriptového či PDF souboru a ten pak převedeme do djvu
V minulé kapitole DjVu/Jak vytvořit DjVu dokument nástroji z DjVuLibre bylo popsáno, jak vytvořit tzv. single-page dokument. Formát DjVu má podporu vícestránkových dokumentů a tyto jednostránkové dokumenty lze vázat do jednoho svazku, který může obsahovat další doplňkové informace, rejstřík, hypertextové odkazy atp.
Vytvoření svázaného dokumentu
[editovat | editovat zdroj]Vícestránkový dokument lze vytvořit pomocí nástrojů djvm, resp. djvmcvt buď svázáním jednostránkových dokumentů,
djvm -c svazek.djvu strana1.djvu ... stranaN.djvu
nebo přidáním dalšího DjVu dokumentu - kterým může být i jiný svazek - k již existujícímu svazku ( v níže uvedeném příkladu je jím svazekA.djvu )
djvm -i svazekA.djvu stranka_nebo_svazek.djvu
Při vkládání stránky do svazku lze pořadovým číslem zvolit, od jaké které pozice se má s vkládáním začít.
Zajímá vás co se stane s vrstvami u svázaných dokumentů, které obsahují sdílené informace?
Při vkládání platí, že přednost má dokument do kterého stránky vkládáme. Tudíž jeho sdílené vrstvy zůstávají zachovány. Sdílená vrstva importovaného svázaného dokumentu se sice rovněž vloží, ale pod upraveným názvem a prohlížeč s ní dále nepracuje.
Také - pokud vložíte stránku jinam než na konec dojde k rozhození rejstříku (outline) pokud odkazuje pořadovým číslem stránky a ne titulem či jménem cílové stránky.
Pokud vložíte do svazku DjVu dokument, který obsahuje stránku se stejným názvem, bude importovaná stránka přejmenovaná. Má-li některá z importovaných stránek nastaven titul, tak o něj přijde. Tento fakt je třeba vzít v úvahu zvláště při úpravě pořadí stránek ve svazku. Jediný způsob jak se tomu vyhnout je - vyexportovat před operacemi se stránkami všechna skrytá textová data do samostatných souborů, upravit ručně a následně naimportovat pomocí djvused do cílového svazku.
Volný svazek (indirect)
[editovat | editovat zdroj]Volný svazek na rozdíl od pevného (bundled) svazku ( který je tvořen jediným souborem) tvoří hlavní DjVu dokument s indexem a adresář, ve kterém jsou uloženy jednotlivé stránky.
DjVu svazky lze z pevných na volné (a obráceně) převádět nástrojem djvmcvt
Při vytváření volného svazku musí cílový adresář - do kterého se budou při konverzi ukládat jednotlivé stránky - existovat
Export stránky z DjVu
[editovat | editovat zdroj]DjVuLibre nemá žádný speciální nástroj, kterým by bylo možné vyexportovat jednu stránku z DjVu svazku. Asi nejjednodušším způsobem je převést pevný svazek na volný a pak žádanou stránku samostatně použít.
Export vrstev
[editovat | editovat zdroj]Pro export jednotlivých vrstev z DjVu svazku ( či single-page dokumentu ) se používá nástroj djvuextract Tyto jednotlivé vrstvy lze pak použít při tvorbě nových DjVu dokumentů viz předchozí kapitolu DjVu/Jak vytvořit DjVu dokument nástroji z DjVuLibre.
Export obrazové informace
[editovat | editovat zdroj]Právě u exportu obrazové informace je důležité si uvědomit, že DjVu je formát ztrátový, tudíž z něj nelze obnovit soubor zcela identický s tím, ze kterého byla DjVu stránka vygenerována. Dokonce ani kdyby byla vyexportovaná obrazová informace znovu zpracována do DjVu souboru nelze dosáhnout stejného výsledku jako v případě originálu. Více v kapitole Djvu/Formát DjVu a zabezpečení.
Obrazovou informaci lze vyexportovat pomocí nástroje ddjvu. Při exportu lze zvolit:
- mód, ze kterého má být stránka renderovaná
- rozlišení budoucího obrázku
- velikost vyexportovaného obrázku
- a případně pomocí dalších voleb ovlivnit kvalitu výsledného obrázku
Vyexportovat lze také libovolně zvětšený či zmenšený výřez, nejenom celou stránku. Podporované formáty do kterých lze provést export:
- pbm (černobílý), pgm (stupně šedi), ppm (plné barvy v RGB), pnm (formát, který může obsahovat kterýkoliv ze tří předcházejících)
- rle (černobílý)
- tiff plnobarevný formát, který ve výchozím stavu nemá nastavenou žádnou kompresi. Při exportu se snížením kvality se použije komprese JPEG
- pdf podobně jako tiff ve výchozím stavu nepoužívá žádnou ztrátovou kompresi, není-li parametrem nastavená snížená kvalita.
Do PDF lze DjVu dokumenty exportovat také přes postscript, pomocí nástroje djvups. Nejprve se z dokumentu vytvoří postscriptový soubor, jako pro tisk a ten se následně "vytiskne" do PDF
Export textových informaci a metainformací
[editovat | editovat zdroj]Univerzálním nástrojem pro práci s textovou vrstvou je djvused, pro export těchto informací lze dále použít djvutxt resp. djvutoxml a pro import dat z upraveného xml souboru pak djvuxmlparser. Více se dozvíte v kapitole DjVu/Textová vrstva DjVu dokumentu
Úpravy DjVu dokumentů
[editovat | editovat zdroj]Aplikace OCR
[editovat | editovat zdroj]Změna orientace stránky
[editovat | editovat zdroj]Odstranění stránky ze svazku
[editovat | editovat zdroj]Změna pořadí stránek
[editovat | editovat zdroj]Práce s textem v djvu dokumentech mi přišla poněkud nepohodlná, je to ale do značné míry dáno tím, že prozatím neexistuje žádné GUI, které by to usnadnilo vizuální orientaci při editaci textu. Možná by bylo řešením dopsat plugin do aplikace Scribus, nebo rozšířit možnosti djview. Nicméně práce na příkazové řádce je docela použitelná a efektivní - pokud člověk ví co a jak.
Textová vrstva pracuje se třemi typy textových informací Hidden text Annotation
Při vypsání textu přes djvused se můžete setkat s těmito prvky:
- page
- je přítomen vždy a vymezuje obsah stránky
- column
- sloupec - vyskytuje se v dokumentech, které mají text stránek uspořádaný do sloupců
- region
- oblast?
- para
- odstavec
- line
- řádek
- word
- nejmenší prvek obsahující samotný text
Souřadnice - Každý z těchto prvků má uvedeny souřadnice levého horního rohu a pravého dolního rohu, jimiž je vymezena jeho pozice vůči stránce. V případě že je obsažen pouze jediný prvek přebírá nadřazený prvek souřadnice podřízeného prvku. Jinak platí že:
- leftmin - nejnižší leftmin ze všech podřízených prvků
- topmin - nejnižší topmin ze všech podřízených prvků
- leftmax - nejvyšší ze všech podřízených prvků
- topmax - nejvyšší ze všech podřízených prvků
Hypertextové odkazy
[editovat | editovat zdroj]Odkazem hypertextových odkazů v DjVu dokumentu nemusí být nutně URL ale lze použít také skok na stránku v rámci dokumentu podle jejího pořadového čísla např. "#2" nebo jména dokumentu "p001_002.djvu" eventuálně vloženého titulku stránky (tu už ale vařím z vody).
Příklad:
(maparea "http://www.neco.cz" "Text co se zobrazí v bublině" (rect 225 0 804 61) (xor))
alternativně lze použít
(maparea (url "http://www.neco.cz" "_blank") "Odkaz bude otevřený do nového okna prohlížeče" (rect 225 0 804 61) (xor))
Metadata
[editovat | editovat zdroj]Metadata mohou obsahovat bud jednotlivé stránky DjVu dokumentu nebo celý dokument a jsou součástí skryté textové vrstvy s poznámkami (annotations). Lze je tedy vložit dvěma způsoby. Bud pomocí volby set-ant nebo set-meta V prvém případě je třeba použít plný zápis. Syntaxe je jednoduchá. Klíčovým slovem může být jakékoliv slovo bez mezer a diakritiky. djvused vám sice umožní klíčové slovo s diakritikou vložit, ale djview vám potom odmítne s meta informacemi dále pracovat.
Obsah klíče je oddělen od klíčového slova mezerou a je uzavřen do uvozovek
Příklad syntaxe pro vložení přes set-meta:
klic "Text co se zobrazí pokud umožňuje prohlížeč djvu dokumentů pracovat s metatagy"
Příklad syntaxe pro vložení přes set-ant:
(metadata (klic "Text co se zobrazí pokud umožňuje prohlížeč djvu dokumentů pracovat s metatagy") )
Hlavička a patička stránky
[editovat | editovat zdroj]Nastavení hlavičky a patičky se vkládá jako poznámka (set-ant) do shared_anno.iff (select-shared-ant). Jejich tisk je však záležitostí prohlížeče DjVu souborů, zda je do tisku pošle či nikoliv. Jinde totiž než na vytištěném dokumentu záhlaví a patička vidět není. Pokud vím tak ani žádná prohlížečka krom produktu Lizardtechu tento prvek při tisku zatím nepoužívá.
Klíčová slova
- phead - hlavička
- pfoot - patička
Zajímavé je, že lze do nich vkládat proměnné - bohužel, nevydedukoval jsem nic než že..
- proměnnou je nahrazeno místo v uvozovkách..
- je úplně putna jestli se do uvozovek napíše date, time, page.. vždy totiž nahradí..
- obsah pravého horního rohu - číslem stránky / celkový počet stránek
- obsah levého dolního rohu - názvem tištěné stránky dokumentu
- obsah pravého dolního rohu - aktuálním datem
- nelze kombinovat text a proměnnou v takových případech se zobrazí pouze text
Příklad použití:
(phead "left::Text v levém rohu" "right::Text v pravém rohu" ) (pfoot "left::Text v levém dolním rohu. Napravo se zobrazí aktuální datum" "right::" date"" )
Rejstřík
[editovat | editovat zdroj]Syntaxe pro djvused
[editovat | editovat zdroj]set | remove | output | ||
---|---|---|---|---|
meta | x | x | - | x |
page-title | x | - | - | - |
outline | x | x | - | - |
thumbnails | x | x | - | - |
ant | x | x | x | x |
txt | x | x | x | x |
ls | vypíše seznam všech stránek |
---|---|
n | vypíše celkový počet stránek v dokumentu |
dump | vypíše dekomprimovaný obsah IFF souboru (stejný efekt jako má utilita djvudump) |
size | vypíše jaké jsou rozměry vybrané stránky v pixlech. Není-li vybraná žádná stránka vypíš postupně tento údaj pro všechny |
select <id> | vybere stránku podle jejího id (číslo v prvním sloupci výpisu příkazu ls). Není-li uvedeno žádné id vybere kořen dokumentu |
select-shared-ant | vybere stránku pro skryté poznámky |
showsel | vypíše informaci o aktuálně vybrané stránce |
ant txt meta outline thumbnails
Akce print output set remove
Zvláštní kombinace: print-pure-txt print-merged-ant output-all
Rozbalovací menu - outline/bookmarks - (bookmarks ("První stránka" "#1") ("Druhá stránka" "#2"))