WebDjVuTextEd - Böngészőben futó DjVu szövegréteg szerkesztő
Saját fejlesztésünk: http://sourceforge.net/p/webdjvutexted/ - Online kipróbálható
A WebDjVuTextEd lehetővé teszi a DjVu karakterfelismert (OCR) szövegrétegének grafikus szerkesztését, egy webböngészőben. Módosítható a szöveg struktúrája (paragrafus, sor, szó stb.) létrehozhatók, törölhetők vagy átszerkeszthetők az egyes elemek, a szöveg pozícióját meghatározó doboz egérrel átszabható, és helyesírás ellenőrzésre is lehetőség van.
A program nem közvetlenül olvassa a DjVu fájlokat, hanem XML-be kell exportálni a szövegréteget, illetve képekké az oldalakat. Webszerver nélkül is használható. (Webszerver nélkül használva helyi fájlokat nyithatunk meg és menthetünk ki, de nincs lehetőség helyesírás ellenőrzésre és automatikus mentésre, így mindenképp előnyösebb webszerverrel használni.)
Lehetőségek
- Szövegréteg megjelenítése az oldal képén, hasonlóan a DjVu megjelenítőkhöz.
- A szövegstruktúra szerkesztése: szöveg átírása, új elemek létrehozása, törlése, kivágás és beillesztés, összefűzés.
- Szó koordináta dobozok szerkesztése: egérrel mozgatva átméretezhető vagy áthelyezhető.
- Helyesírás ellenőrzés (PHP szerver oldal szükséges)
- Közvetlenül web böngészőben futtatható Jelenleg csak Chrome böngészőben!
Telepítés
- Szükséges egy webszerver PHP vagy ASP.NET támogatással a szerveroldali mentéshez. A program enélkül is használható, de kényelmetlenebbül nyerhető ki az XML adatfájl és nem lesz lehetőség helyesírás ellenőrzésre.
- Másolja a WebDjVuTextEd fájlokat a webszerverre
- Állítson be egy jelszót a save.php (PHP) vagy web.config (ASP.NET) fájban
- Adjon írás jogot a webszervernek a "data" könyvtárra Figyelem: A program bármely elküldött fájlt ki fog menteni ebbe a könyvtárba, ha XML kiterjesztésű. Az illetéktelen fájl mentések elkerülése végett állítson be jelszavas HTTP védelmet a "data" könyvtárra a webszerver beállításainál!
- Helyesírás ellenőrzéshez:
- php5-pspell + pspell + language packs VAGY
- php5-enchant + enchant + language packs
- Nyissa meg a telepített WebDjVuTextEd-et a böngészőben, a fájl kezelőnek kell megjelennie
Használata
Fájlok előkészítése
A DjVu formátumú könyvből ki kell nyernünk az XML adatokat majd bemásolni a program "data" könyvtárába:
djvutoxml mybook.djvu mybook.xml
Ahhoz, hogy az egyes oldalak képe (a DjVu-ban található képfájl) is megjelenjen, ezeket is ki kell nyerni a könyvből és egy alkönyvtárba másolni, például "data/mybook".
ddjvu -format=tif mybook.djvu mybook.tif
Ezzel egy többoldalas TIFF fájlt nyerünk, amelyből Linuxon így nyerhetjük ki az egyes képeket PNG fájlokba:
mkdir mybook
for i in {0..129}; do convert "mybook.tif[$i]" mybook/mybook-$i.png; done
Windows felhasználók az XnView Tools -> Multipage File -> Extract all into... funkcióját használhatják.
Ezután nyissuk meg a böngészűben a telepített WebDjVuTextEd-et.
A megjelenő fájlkezelőben adjuk meg az XML fájl teljes URL-jét, majd egy relatív útvonalat a képekhez, majd nyomjuk meg a Load gombot.

A szövegréteg felépítése

A DjVu formátum a következő struktúrában tárolja a szövegréteg elemeit (lásd DjVu specifikáció)
PAGECOLUMN |-REGION |-PARAGRAPH |-LINE |-WORD |-CHARACTER
Az egymásba ágyazott elemek közül bármelyik lehet az utolsó, mindig az tartalmazza magát a szöveget és rendelkezik koordinátákkal (szövegdoboz). Azok az elemek amely alatt más elem is található, nem tartalmazhatnak szöveget és koordinátákat. Leggyakrabban a WORD (szó) szint tartalmazza az OCR felismert szót és annak befoglaló koordinátáit. Az egyes dobozok nem fedhetik át egymást, de jelenleg a szerkesztő ezt nem ellenőrzi és nem teszteltük, hogy mi történik, ha hibás elrendezést importálunk vissza a djvutoxmlparser-be.
Szerkesztési lehetőségek
A WebDjVuTextEd bal oldalán ez a fa szerkezet látható és szerkeszthető. Jobb gombbal kattintva a következő műveletek érhetők el:
- Edit: szerkeszti a szöveget (csak legalsó szintű elemeken lehetséges)
- Delete: törli az elemet és mindent ami azon belül helyezkedik el
- Create new before: Beszúr egy ugyanolyan típusú elemet közvetlenül a kattintott elem előtt. Ha ez egy legalsó szintű elem lesz, akkor ezután létre kell hozni hozzá a szövegdobozt. Ha a program elegendő információval rendelkezik, megpróbálja maga létrehozni a szövegdobozt, közelítő koordinátákkal.
- Create new after: hasonlóan az előzőhöz
- Create new into: Új al-elemet hoz létre az utolsó al-elem után. Ez a művelet is létrehoz egy közelítő szövegdobozt ha elegendő információt talál.
- Add coords box: A szövegdoboz manuális létrehozása, amelyet ezután a megfelelő helyre kell húzni az egérrel. Csak utolsó elemeken érhető el és csak akkor, ha még nem rendelkezik koordináta dobozzal.
- Merge selected: Összefűzi a kiválasztott elemeket, bizonyos korlátozásokkal, főként a DjVu által megkövetelt struktúra megtartásának érdekében. Csak ugyanolyan szintű elemek fűzhetők össze és csak akkor, ha folytonos sorozatot jelöltünk ki. Mindegyikük vagy egyikük se rendelkezzen szövegdobozzal. Ha nincsenek szövegdobozok, akkor a kijelölt elemek egyszerűen berendeződnek egy közös szülő elem alá. Ha a kiválasztott elemek szövegek (utolsó elemek), akkor egyetlen közös szöveges elemmé lesznek összefűzve.
- Merge (with spaces): Ugyanaz mint az előző, de szöveges elemek esetén, azokat szóközzel fűzi egybe. Mivel általában minden szó egy önálló szövegdoboz, ez a funkció igen ritkán szükséges.
- Merge to parent: A kijelölt elemeket a szülő elemükbe fűzi össze. A művelethez az adott szülő elem alatti minden elemet ki kell jelölni. Hasznos például ha karakter (CHARACTER) elemeket szeretnénk összefűzni szóvá (WORD).
- Merge to parent (spaces): Ugyanaz mint az előző, de az összefűzött elemek közé szóközt rak. Használható például szavak (WORD) sorrá (LINE) összefűzésére, habár ez igen ritkán használt felépítés.
- Merge two columns: Ez folytonos sorokat tud létrehozni olyan helyen, ahol az OCR program hibásan két hasábnak érzékelte a sorokat. Képzeljünk el például egy tartalomjegyzéket, amelynek az oldalszámait az OCR hibásan egy külön oszlopnak (PAGECOLUMN) digitalizálta, ahelyett hogy a sorok végére helyezte volna. Ehhez az összetett művelethez szükséges lehet a struktúra előzetes igazítgatása. Használatához két paragrafusban kell azonos számú sort kiválasztani, ekkor a lentebbi kijelölés összes elemét a fentebbi kijelölés sorainak végéhez fogja illeszteni a program.
- Cut: kivágja a kiválasztott elemet vagy elemeket. Ezután 3 új menü fog megjelenni: Paste before, Paste after, Paste into - Hasonlóan működnek a Create-hez.
- Copy: Másként működik mint a kivágás és beillesztés! Míg a kivágás nem változtatja meg a szövegdobozokat és a struktúra hibáinak javításához használható, a másolással új elemeket hozhatunk létre, így azoknak új koordinátára lesz szüksége. Ha valamit a szomszédos sorba másolunk át, a program megpróbálja megtartani az elem vízszintes koordinátáit, hacsak nem ez átfedésbe kerülne a beillesztés helyén.
- Bring to view: Úgy mozgatja a képréteget, hogy a kattintott elem láthatóvá váljon.

A képernyő jobb oldalán az oldal képe látható, rávetítve a szövegdobozokat piros keretekkel. A szövegdoboz módosításához ki kell kapcsolni a kicsinyítést ("Shrink"), így az oldal 1:1 nézetben lesz látható. Ebben a módban bármelyik szövegdoboz kiválasztásakor 5 fogantyú jelenik meg rajta. Figyeljünk oda, hogy a DjVu szabvány nem engedi meg, hogy az egyes szavak doboza átfedésbe kerüljön, vagy a sor (amely a tartalmazott szavak legkülső kiterjedését jelenti) átfedésbe kerüljön az előző vagy a következő sorokkal, de ezeket a hibákat a program nem ellenőrzi!
Oldalváltáskor a program automatikusan elküldi a webszervernek a teljes dokumentumot kimentésre, amelynek írás jogra lesz szüksége ugyanarra az XML fájlra amit szerkesztésre megnyitottunk. Így amennyiben a szerkesztőt újratöltjük (pl F5 billentyűvel) a legutóbb kimentett fájlt fogjuk visszakapni.
A helyesírás ellenőrző a "jquery-spellchecker"-t használja. Ennek biztonságosságát nem ellenőriztük, aki telepíti, saját felelősségre tegye.
Visszaírás a DjVu fájlba
Amikor készen vagyunk az összes szerkesztéssel, az XML adatokat visszaírhatjuk a DjVu fájlba:
djvuxmlparser -o mybook.djvu mybook.xml