DjVu fájlok készítése - manuálisan

Az alább bemutatott manuális módszer mellett néhány kész szoftver is elérhető DjVu fájlok gyors létrehozására. De mivel gyakran nagyon fontos anyagok, végleges digitális archiválásról van szó - az utókor számára -, szükséges lehet, hogy a létrehozott dokumentum felett "teljes uralmunk" lehessen. Ehhez pedig az kell, hogy átlássuk és kihasználjuk a formátum lehetőségeit, amire teljes mértékben jelenleg egyetlen összetett asztali alkalmazás sem képes.

Egyszerű és gyors létrehozásra az ingyenes DjVu Solo és a fizetős Document Express használhatóak, melyekről egyelőre tömören a Szoftverek alatt írtunk.

A digitalizált alapanyag

A fejezet olvasásához már készen kell legyen a digitalizálási munka, azaz a szkennelt könyv vagy dokumentum lapjai már feldolgozott kép fájlokként rendelkezésre kell álljanak, lehetőleg minél jobb minőségben és minél nagyobb felbontásban (300-600 DPI). Beleértve az egyes oldalak irányba forgatását, igény esetén az oldalak fekete-fehérre vágását (küszöbszint). A Szkennelésről és előkészítésről külön menüpontban található információ.

Bizonyos DjVu eszközök csak bizonyos fájl formátumokat ismernek, így gyakran szükség lehet a képformátumok konverziójára. Erre a példákban az ImageMagick convert parancsait használjuk, kiindulási fájloknak pedig TIFF fájlokat.

A folyamatban főként a DjVuLibre parancsait használjuk, mely letölthető a legtöbb operációs rendszerre. Parancssori jártasság és "egyszerű szöveg" fájl szerkesztési ismeret előny (Notepad, Textpad stb.).

Felhasznált szoftverek:

A DjVu dokumentum összeállítása

Legegyszerűbb példában színes borítóval és fekete-fehér könyv oldalakkal állunk szemben. A fekete-fehér nem szürkeárnyalatosat jelent! Ha csak a borító színes, akkor azt a végén hozzárakjuk.

Könyvünk a könyv-szkenner lehetőségeiből adódóan 440 DPI-sre sikerült, amit szándékosan nem kerekítettünk lefelé (pl a szokásos 300-ra), az elérhető legjobb minőség megtartásáért.

Fekete-fehér oldalak DjVu-ba

Elsőként az összes belső oldalt összefűzzük egy fájlba. Már kész is a DjVu dokumentumunk, olvasgathatjuk!

minidjvu -d 440 -e ???.tif lapok.djvu

A minidjvu -s -m -e kapcsolókat ismer a tömörítés befolyásolására. A tesztünkben csak a -e csökkentett valamit a méreten, -s és -m már nem. (Ellenőrizni: a jelenlegi leírása szerint ennél több kapcsolója van!

A -d 440 a dokumentum felbontása, esetünkben 440 DPI.

A ???.tif formátum Bash-ban az összes három karakteres .tif kiterjesztésű fájlt jelenti az aktuális könyvtárban.

Ha csak egyetlen képet szeretnénk átkonvertálni, akkor a cjb2 tömörítővel tehetjük meg:

cjb2 -dpi 600 -lossy sajdik88.pbm sajdik88.djvu

Összetettebb feldolgozás esetén hasznos trükk lehet indirekt DjVu-ba fűzni az alap dokumentumot, így az egyes oldalakat külön is könnyebben manipulálhatjuk. Például a fekete-fehér részét minden oldalnak így feldolgozzuk, de a képeket, háttereket bizonyos oldalra alaposabb feldolgozás után szeretnénk hozzáadni (lásd kétrétegű oldal).

Színes lap DJVU-ba konvertálása

A fájlt először PPM formátumra konvertáljuk, majd a DjVu c44 nevű színes oldal vagy fotó tömörítőjével betömörítjük.

convert 000.elolap.tif 000.elolap.ppm
c44 -dpi 440 000.elolap.ppm 000.elolap.djvu

DjVu fájlok összefűzése (pl színes + fekete)

A címap és a hátlap hozzáfűzése után kész is az első könyvünk, de ennél sokkal több dolgunk (lehetőségünk) lesz még!

djvm -c basic.djvu 000.elolap.djvu lapok.djvu 162.hatlap.djvu

Ezzel az eszközzel oldalakat is törölhetünk::

djvm -d basic.djvu 162

Vagy egy oldal beszúrása:

djvm -i basic.djvu hatlap-uj.djvu 162

Az oldalszám elhagyásakor a végéhez fűz hozzá. A beszúrt dokumentum több oldalt is tartalmazhat.

Kétrétegű oldal létrehozása (betűmaszk és háttér)

A DjVu egyik leglényegesebb funkciója a nagy tömörítésű képréteg és az előtte elhelyezkedő nagy felbontású előtér réteg, amely segítségével hátteret vagy képeket tartalmazó oldalak is kiválóan tömöríthetők.

A maszkhoz az alább leírtakon kívül tartozhat még egy "foreground" réteg, amelyre a maszk egyes területeinek szín információját tárolja a DjVu, így a maszk nem csak fekete lehet!

Készítsük el a maszkot és a hátteret

Szét kell választani a képes és szöveges részeket. Ha ezek teljesen egymáson szerepelnek, szükség lehet egyéb eszközökre, amire vannak ugyan megoldások de még gyűjtenünk kell róla információt, vagy manuálisan képszerkesztő programban végezzük el a szétválasztást. Többek között például a DjVu Solo és a Document Express is elvégzi ezt a szétválasztást. A DjVu Solóban nincs igazán lehetőség beavatkozásra, tévedések kijavítására. A Document Expresshez adott tömörítés tesztelő erre valószínűleg több lehetőséget biztosít - egyelőre lejárt a próbaverziónk...

Megnézni: didjvu: DjVu encoder with foreground/background separation - fura dolgokat csinál, nem csinált értelmezhetőt nekem. gsdjvu: GhostScript patch ugyanerre, nem sikerült telepíteni Document Express profiler: fizetős. Valószínűleg ezek a régies papír háttér szeparálására képesek, nem a betűt egy valódi háttérképről leválasztani.

A háttér legyen leméretezett kép, pl 50%, 25%. A háttér és maszk képeknek egyforma méretűnek vagy pontosan egész többszörösnek kell lennie! (Ezáltal fontos, hogy ez egész forrásanyagunk 2-vel vagy 4-gyel osztható méretű képekből álljon!)

Mentsük a hátteret PPM-be a maszkot pedig PBM-be.

Maszk fájlt konvertáljuk "RLE"-re

pbmtodjvurle 000.mask.pbm >000.mask.rle

Ez a DjVu RLE konverter a NetPbm csomag része, de Ubuntu Linuxon sajnos nem került bele a csomagba, külön telepíthető.

Végszükség esetén a DjVu eszközökkel is elvégezhető a konverzió:

cjb2 -dpi 440 000.mask.pgm 000.mask.djvu
ddjvu -format=rle -page=1 -mode=mask 000.mask.djvu 000.mask.rle

Egybemásolva a két fájl konvertálható DjVu-ra

cat 000.mask.rle 000.small.bg.ppm | csepdjvu -d 440 - 000.djvu

!! Ez lemaszkolja a háttérből a MASZK (foreground) által kitakart dolgokat. Azaz ezt a műveletet is elvégzi: c44 -dpi 440 -mask 000.mask.pbm 000.elolap.ppm 000.bg.djvu

Furcsa megközelítés, hogy a program a két fájlt egy fájlba másolva várja. Ez Windowson a copy + paranccsal érhető el, például:

copy 000.mask.rle+000.small.bg.ppm 000.egyben
csepdjvu -d 440 000.egyben 000.djvu

Néhány színű lap DjVu-ba konvertálása:

Másik nagyon fontos lehetőség a kevés színt tartalmazó oldalak tárolása. Ilyen lehet például amikor az oldalon a címsorok színesek, a betű pedig fekete, vagy kisebb színes ábrákat, kereteket tartalmaz az oldal.

convert 01.tif 01.ppm
cpaldjvu -dpi 500 01.ppm 01.djvu

További opciók megvizsgálni

Szövegfelismerés, szöveg feldolgozás

OCR-ezés (szövegfelismerés)

Linuxon a rendelkezésre álló szabadszoftver alapú OCR megoldások segítségével, mint pl a Tesseract, nagyon jó azonnali eremdényeket érhetünk el. Telepítsük a magyar nyelvi csomagot is!

ocrodjvu -e tesseract -l hun -o ocr.djvu proba-tesser.djvu

#ocrodjvu -e ocrad -o ocr.djvu proba.djvu

Szöveges adatok kinyerése és visszatöltése (helyesírás ellenőrzés)

Összes oldalt és meta adatokat egy DjVuSed (fentebb) parancsfájlba (script) menti, ami szerkesztés után "lefuttatható" így az adatok visszatölthetők:

djvused -u -e 'output-all' basic.djvu >basic_spell.dsed

Lehet csak "output-txt" vagy "output-ant" is. Visszatöltése:

djvused -u -f basic_spell.dsed basic.djvu -s

Helyesírás ellenőrzésre Linuxon pl a Geany nevű IDE használható, amelyhez van helyesírás ellenőrző plugin ("geany-plugin-spellchecker" csomag). De bármilyen formázatlan szövegfájl szerkesztő jó, amelyhez van helyesírás ellenőrző (Word és hasonlók nem, mert TXT formátumban kell megtartani a fájlt!)

Csak egy oldal exportálása:

djvused -u -e 'select 44; print-txt' basic.djvu >basic_spell.txt

szerkesztés után visszatöltése:

djvused -u -e 'select 44; set-txt basic_spell.txt’ basic.djvu -s

Szöveg exportálása TXT vagy XML

Ezek a formátumok vissza nem tölthetők, de hasznos lehet ismerni a lehetőséget:

djvutxt --detail=line basic.djvu
djvutoxml --with-text basic.djvu basic.xml

(Az XML formátumhoz XML -> HTML átalakító XSLT-t is készítettünk, lásd lentebb a weboldalba ágyazásnál.)

Szövegréteg szerkesztése

Egy igen korlátozott tudással rendelkező szerkesztőprogram:

djvusmooth

Szavakat írhatunk át, illetve a befoglaló téglalapjukat módosíthatjuk. De jelenleg nincs lehetőség pl kettészakadt szavak egyesítésére, szavak törlésére, pótlására és hasonló szerkesztésekre.

Tartalomjegyzék létrehozás

TXT szövegfájlba másoljuk ki az OCR-ezett könyvből a tartalomjegyzéket és formázzuk így:

(bookmarks
("Előszó" "#5")
("Bevezető" "#7")
    ("Első fejezet: ISMERKEDJÜNK A KÉPERNYŐVEL!" "#14"
    ("SET, RESET, CLS, GOTO" "#14")
    ("Értékadás" "#15")
    ("Grafikus képernyőméret" "#17")
    ("Parancs, utasítás, program, programsor" "#18")
    ("Karakteres képernyőméret" "#18")
    ("PRINT, INPUT" "#19")
    ("Gyakorlatok az első fejezet anyagához" "#21")
    ("Az első fejezet feladatainak egy lehetséges megoldása" "#23")
    )
)

Betöltése a dokumentumba:

djvused -e 'set-outline outline.txt' -u basic.djvu -s

Kiíratása (későbbi szerkesztéshez és visszatöltéshez):

djvused -e 'print-outline' -u basic.djvu >outline.txt

Dokumentumjellemzők beállítása (cím, szerző stb.)

Megjelenítése DjView4-ben: jobb gomb "Metadata..." (WinDjView 2.0.2 nem jeleníti meg), vagy parancsokkal:

djvused -u -e 'print-meta' basic.djvu

djvused -u -e 'select-shared-ant; print-ant' basic.djvu

Érdemes a beállítása előtt megnézni a kapcsolódó "meta" és "shared-ant" rekordokat, nehogy felülírjunk valamit. A "meta" az az "annotations" egy darabja! A betöltéshez a tartalomjegyzékhez hasonlóan TXT fájlba kell begépelni az adatokat majd az alábbi parancsokkal belemásolni a fájlba. A "print-meta" és a "shared-ant"-os megoldások más fájl formátumot használnak!

A felhasználható kulcs-érték párokra nincs általánosan elfogadott szabvány. Egy jól kidolgozott javaslat http://www.djvu-soft.narod.ru/scan/djvu_metadata_draft_10.txt (helyi másolat).

Emlékeim szerint bizonyos helyeken a BibTeX kulcs-érték párjait ajánlják a META adatok megadására.

Betöltés shared-ant használatával

Példa egy betölthető sared-ant fájlra, amelyben próbáltunk minél több adatot megadni (az udc-t könyvtári katalógusokból lehet kimásolni):

(metadata
    (type "e-book")
    (title "BASIC feladatok tükrében, A - párbeszéd a számítógéppel") 
    (author "Major Zoltán, Valovics István")
    (publisher "Tankönyvkiadó Vállalat")
    (edition "1")
    (date "1986")
    (isbn "963-17-8837-7")
    (size "16.7x23.7x1 cm")
    (pages "158")
    (price "49 HUF")
    (udc "681.3,800.92 BASIC,681.3-181.4HT.06:519.682BASIC,519.682.2(076)")
    (language "hu")
    (source "photo,440-PPI 24-BPP-sRGB colour 95 JPG, from original")
    (text "OCR (Tesseract 3.02.02-1), outline")
    (notes "illustrations Sajdik Ferenc")
    (version "1.1 (much smaller file, outline), 1.2 (this metadata)")
)

Beletöltése:

djvused -e 'create-shared-ant; set-ant metafile.txt' basic.djvu -s

Betöltés set-meta használatával

Ha -e "set-meta fájlnév" paranccsal szeretnénk dolgozni, akkor más a fájlformátum:

type "e-book"
title "BASIC feladatok tükrében, A - párbeszéd a számítógéppel"
author "Major Zoltán, Valovics István"
publisher "Tankönyvkiadó Vállalat"

Egyéb meta adatok

Ha esetleg egy konkrét oldalhoz szeretnénk valamilyen "meta" adatokat társítani, akkor "select 45" paranccsal kezdjünk, ahol a 45 az oldal száma.

Megjegyzés: a djvused parancsokat a program elindításával interaktív parancssoros módban is kiadhatjuk, Például:

djvused doc.djvu
select-shared-ant
print-ant

Ctrl-D kilépés. (Windowson lehet, hogy Ctrl-Z)

A Document Express 7.0 más formátumban tárolja! Néhány fix értéket enged meg, amelyeket a következő nagybetűs kulcsok alatt ment le: Author, Comment, Copyright, Keywords, Subject, Title. A fentebbi sémát se nem olvassa se nem írja. (Mivel ez nagybetű-érzékeny tároló, az ide beírt Author nem egyezik meg a fentebbi author mezővel.)

Egyebek

A cikk legutóbb frissítve: 2014/03/01