djvutool

Z thewoodcraft.org
Stránka byla naposledy editována 27.8.2023

Shellový nástroj djvutool, jsem vytvořil v létě 2015, původně proto, že mne zajímalo, jaký efekt bude mít na velikost a kvalitu obrazu výsledného DjVu souboru použití algoritmů, které nabízí při generování masky nástroj didjvu.

Nicméně jsem šel ještě dál a integroval do něj funkcionality, které mi zjednodušily práci jak s DjVu soubory, tak se soubory s nimiž se pracuje při korektuře obsahu.

Je to skript pro Bourne shell (bash), co využívá nástroje z DjVuLibre, didjvu, ocrodjvu a jiné, pro vytváření DjVu souborů a zpracování jejich textové i metadatové vrstvy.

https://github.com/velwant/djvutool

Použití

Volby

-t|--test
Při použití parametru --test se v případě, kdy je použit rovněž parametr --alg, přidá do názvu výsledného DjVu souboru také řetězec s názvem algoritmu. Lze tedy otestovat, který z algoritmů vydá nejlepší výsledek a ten následně aplikovat na ostatní stránky téhož typu. Viz ukázkový příklad použití…


Příklady použití

Využití volby --test

Nejprve vyrobím referenční DjVu soubor, kde bude pouze pozadí:

$ c44 005-orig.jpg 005-orig.djvu
$ ls -Ss1pq --block-size=1 005-orig*
1265664 005-orig.jpg
 446464 005-orig.djvu
$ djvutool --test 005.jpg export djvu 1
$ djvutool --test --alg niblack 005.jpg export djvu 1
$ …
$ stat --printf="%s\t%n\n" 005* | sort -n
  36450	005b.jpg.djvu.djvu	– jednobarevné popředí
  36474	005b.jpg.djvu
  36486	005b.jpg.white-rohrer.djvu
  42207	005c.jpg.djvu.djvu	– nejvěrnější podání
  42235	005c.jpg.djvu
  42239	005c.jpg.otsu.djvu
  42337	005c.jpg.tsai.djvu
  42666	005c.jpg.sauvola.djvu
  43183	005.jpg.djvu
  43214	005c.jpg.niblack.djvu
  43219	005.jpg.sauvola.djvu
  43309	005.djvu		– bez vrstvy popředí
  43536	005.jpg.tsai.djvu
  43537	005.jpg.djvu.djvu
  43750	005.jpg.niblack.djvu
  43752	005.jpg.otsu.djvu
  51154	005c.jpg.shading-subtraction.djvu
  51356	005.jpg.white-rohrer.djvu
  53140	005.jpg.shading-subtraction.djvu
  75503	005c.jpg.bernsen.djvu
  82638	005.jpg.bernsen.djvu
  91288	005c.jpg.brink.djvu
  99888	005.jpg.brink.djvu
 324199	005c.jpg.white-rohrer.djvu
 442428	005-orig.djvu		– bez oddělené vrstvy popředí
1155603	005.jpg			– originál bez pozadí
1263423	005-orig.jpg		– originál
1330890	005c.jpg		– věrné podání
1745783	005b.jpg		– jednobarevné popředí

V tomto konkrétním případě šlo o test, jaký bude mít vliv aplikace generického barevného pozadí stránky. Výsledky zcela jasně ukázaly, že při aplikaci generického pozadí sice bude o pár bajtů lepší výsledek, použije-li djvutool didjvu s aplikovaným algoritmem djvu, ovšem bez vyžití didjvu, jen s použitím utilit z balíku Netpbm se vygeneruje výsledek srovnatelný a rychleji.

  • Nejhůř ve srovnání se vstupními daty v JPEG formátu vychází komprese do jedné vrstvy pozadí. Výsledný soubor souboru 005-orig.djvu je bez vrstvy pozadí, kterou lze využít k OCR, bude jen 2.85x menší než vstupní soubor souboru 005-orig.jpg
  • Nejlepší komprese (34.66x menšího souboru) lze dosáhnout, když nahradíme barevné popředí, jednou barvou (konvertován byl obrázek 005b.jpg) – to můžeme použít v případě, že zpracovávaný dokument pracuje se dvěma kontrastními barvami.
  • Ale nejvěrnější výsledek zpracování bude, když vytáhneme pomocí černobílé masky originální barevné popředí, sloučíme ho s generickým pozadím a teprve výsledný obrázkem zkonvertujeme do DjVu (obrázek 005c.jpg). A kompresní poměr bude „horší” jen o 4.72% (~30x menší soubor)