ODF dokumentumok parancssori helyesírás-ellenőrzése

Nincs szükség a LibreOffice-ra, vagy egyéb irodai programcsomagra az OpenDocument (ODF) dokumentumok helyesírás-ellenőrzéséhez és javításához, mivel a Hunspell helyesírás-ellenőrző új kiadása (az unzip alkalmazás telepítése után) alapból támogatja ezt, például a hibás szavak parancssori kiírását:

hunspell -l *.odt

Sok állomány, például egy fődokumentum ODT állományainak parancssori javítása jelentősen felgyorsítható a következő módon (különösen, ha azok sok idegen szakkifejezést tartalmaznak):

  1. Készítsünk szólistát a dokumentumok hibás és ismeretlen szavaiból, kiszűrve az ismétlődőket:

    hunspell -l *.odt | sort | uniq >szavak

  2. Töröljük a javítani kívánt szavakat az állományból egy szövegszerkesztővel.
  3. Használjuk ezt az ellenőrzött szólistát saját szótárként, így a Hunspell csak a szólistából törölt szavakat fogja felajánlani javításra az interaktív parancssori felületén [az interaktív felülethez a Hunspell fordításánál telepítsük a libncursesw5-dev vagy az ennek megfelelő csomagot, és adjuk meg a --with-ui configure kapcsolót is]:

    hunspell -p szavak *.odt

Az ODF-kezelés meglehetősen egyszerű, például a Hunspell nem foglalkozik a dokumentum, illetve szövegrészeinek beállított nyelvével. Ezért ha szeretnénk, hogy például a magyar nyelvű dokumentumban szereplő angol szavak is elfogadásra kerüljenek, adjunk meg angol szótárat (vagy szótárakat) is a Hunspell programnak:

hunspell -d hu_HU,en_US,en_GB példa.odt

Az ODF-kezelés első, kezdetleges változata a sok szerző által írt, CC szabad licenc alatt megjelent ESZSZKK-tankönyvsorozat ellenőrzését szolgálta. A végleges változat a kapcsolódó javításokkal az FSF.hu Alapítvány támogatásával készült el, nem utolsósorban azért, hogy az alapítvány által szervezett konferenciák követő kiadványainak elkészítését is megkönnyítse majd.

Hozzászólások

A hírben nem szerepelt, de támogatott formátum az ún. flat ODF is, az egy darab XML állományból álló, a LibreOffice-ban .fodt, .fods stb. kiterjesztéssel elmenthető OpenDocument formátum is, amelynek számos előnye közül a legfontosabb, hogy segítségével lényegesen egyszerűbb új fájlformátumszűrőket fejleszteni a LibreOffice-hoz. Pl. jöhet a standard bemenetről is egy ilyen állomány, a benne lévő, Base64 kódolású képeket tartalmazó <office:binary-data> elemeket egyszerűen átugorja a helyesírás-ellenőrző:

cat példa.fodt | hunspell -l -O

(Bővebben a Visio, CorelDraw, MS Publisher mellé már Keynote és különböző e-book formátumszűrőket is fejlesztő Document Liberation projektről, amelyet a LibreOffice mögött álló Document Foundation indított nemrégiben, mivel ezeket a szűrőket már nemcsak a LibreOffice használja, hanem több más szabad szoftver is.)

Úgy rémlett, hogy a cat beépített parancs, mint az echo, de nem. Ettől függetlenül a cső legnagyobb vívmánya ma is az erőforrás-megtakarítás, méghozzá a programozóié. :) Könnyebb bővíteni, vagy egyszerűen csak belenézni, mi van a csőben az adott helyen.

De persze pont az a lényege a mostani fejlesztésének, hogy ne pazaroljuk a rendszer erőforrásait se. Az állományok javítása már nem volna olyan rövid parancssorban, mint a hibás szavak kilistázása a következő módon (bár ennek is megvan az előnye, hogy csak egyszer töltődik be a Hunspell szótár):

for i in *.odt; do unzip -p $i content.xml; done | hunspell -l -O

vagy esetleg

ls *.odt | xargs -I '{}' unzip -p '{}' content.xml | hunspell -l -O

A flat ODF támogatás lényege azon kívül, hogy jól mutat, illetve megkönnyíti a tesztelést, az lehetne egyébként, hogy olyan platformon is átalakítható az ODF flat ODF-fé egyszerűen, ahol csak a LibreOffice elérhető (az unzip/zip/sed, amit a Hunspell használ most a system() rendszerhívással, pedig nem):

soffice --headless --convert-to fodt *.odt

Ha ez nem volna még inkább erőforrás-pazarló. :)

Köszönöm a hozzászólásokat!

Gondolom a latex forráskódhoz is jó még mindig

---
--- A upgond akkor van, ha látszólag minden működik. ---
---

Igen, sőt a fent részletezett saját szótáras munkamenet a LaTeX állományokkal is jobban működik. (A Hunspell most akkor is betölti az alapértelmezett saját szótárat, ha meg van adva külön saját szótár. A régebbi változatok nem töltik be, így a fenti munkamenetben hibásnak jelzik a már korábban az alapértelmezett saját szótárba felvett szavakat.)

Félig-meddig off, de nem tudjátok, hogy a legújabb szótárakat, honnan lehet letölteni? Főleg a magyar helyesírás-ellenőrzéshez kellene...

--
"Trollhammaren sveper igen..."

Pl. a hunspell-hu csomag telepíti a legfrissebb magyar helyesírási szótárat a /usr/share/hunspell alá Linuxokon, ezt a LibreOffice és a parancssori hunspell is használni tudja. Ez elég régi szótár (l. http://magyarispell.sourceforge.net/), megegyezik a régi FSF.hu-s OpenOffice.org szótárcsomagban található helyesírási szótárral (l. http://code.google.com/p/openscope/wiki/DictHuOxt, http://extensions.services.openoffice.org/en/download/4436).

Lesz új kiadás pár hónapon belül, és lehet, hogy hasznos volna ebből külön LibreOffice kiegészítőt is készíteni, hogy pl. az angol LibreOffice-hoz is lehessen Windowson magyar szótárakat telepíteni egyszerűen.

A LibreOffice forráskódjában van némi szótárjavítás (egész friss is, l. itt), ez is letölthető innen:

http://cgit.freedesktop.org/libreoffice/dictionaries/plain/hu_HU/hu_HU…
http://cgit.freedesktop.org/libreoffice/dictionaries/plain/hu_HU/hu_HU…

És a használatához elég csak a fenti keresési útvonalakon elhelyezni, vagy kiadni a parancsot az aktuális könyvtárban:

hunspell -d hu_HU