Zpracování PDF bez textové vrstvy do DjVu souboru s textovou vrstvou
Jak jste možná již zjistili, zdejší archív má většinu vícestránkových dokumentů ve formátu DjVu. Proč to tak je, pochopíte když se s tímto formátem blíže seznámíte. Z laického hlediska je důležitá především ta informace, že DjVu soubor, vytvořený ze stejného naskenovaného materiálu je mnohonásobně menší než soubor v PDF.
Kromě toho DjVu používá technologie, díky kterým lze s takovými soubory mnohem komfortněji pracovat. Tady s nimi pracuje především zdejší knihovna, ale pro mobilní zařízení existují aplikace které umožňují DjVu soubory odsud stažené bez problémů číst na mobiech a čtečkách.
Tento článek je ale určen především pro ty, které zajímá jakým způsobem a jak rychle se takový soubor udělá.
Operaci lze provést snadno a rychle s využitím open source nástrojů. Uživatelé MS Windows mají smůlu, protože jsou odkázáni na komerční nástroje, které ani zdaleka nejsou schopny poskytnout tak kvalitní výsledek.
Je to dáno tím, že u opensource nástrojů máte celý proces zpracování pod kontrolou a můžete mu pomocí různých triků dosti pomoci.
Sepsání tohoto textu motivovalo zpracování PDF souboru vzpomínek Leonarda S. Clarka - jednoho z prvních woodcrafterů. Ten soubor se 44 stránkami strojopisného textu totiž neobsahoval textovou vrstvu, tudíž se s ním nedalo vůbec pracovat.
Následujícím postupem jsem původní PDF soubor o velikosti 18 MB jsem "sklepal" do DjVu souboru o velikosti 0.9 MB - včetně OCR - a to během 5 minut.
PDF do XCF
Gimp umí otevřít vícestránkové formáty jako TIFF nebo PDF, a následně uložit jako soubor XCF, kde každá stránka původního PDF (nebo TIFF) souboru tvoří samostatnou vrstvu.
V této fázi lze provést případné úpravy původních stránek, které mohou výrazně zlepšit úspěšnost OCR. Stránky lze:
- natáčet a srovnávat s využitím vodítek
- a případně zlepšit jejich barevné podání a vyretušovat prvky, které by mohly komplikovat OCR
Vrstvu lze zpracovat i samostatně, tak aby z ní bylo možné vytěžit maximum textové informace v situaci. kdy tomu brání nevhodně zvolená kombinace barev textu a pozadí.
XCF do DjVu
Ke konverzi z XCF do DjVu používám jednoduchý shellový skript s názvem xcf2djvu:
#!/bin/bash
# Skript pro konverzi .xcf souborů (Gimp) do .djvu
# Původní název souboru - convert.sh
# Dočasná utilita do doby, než bude do nástroje djvutool implementováno vytvoření djvu souboru z obrázku
# TODO:
# - aktuálně se všechny pomocné soubory dělají v tmp
function todjvu {
RANDOMKEY=$[ 8000 + $[ RANDOM % 1000 ]]
TEMP_DIR="/tmp/$WINDOWID$BASHPID$RANDOMKEY"
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|tif) KONVERT="tifftopnm";;
png) KONVERT="pngtopnm";;
jpg) KONVERT="jpegtopnm" ;;
esac
#$KONVERT $1 | pnmflip -cw | tee $TEMP_IMG | ppmtopgm | pgmtopbm -threshold -value 0.${3-5} | pnmtoplainpnm > $TEMP_MASK;
#$KONVERT $1 | pnmflip -r180 | tee $TEMP_IMG | ppmtopgm | pgmtopbm -threshold -value 0.${3-5} | pnmtoplainpnm > $TEMP_MASK;
$KONVERT $1 | tee $TEMP_IMG | ppmtopgm | pgmtopbm -threshold -value 0.${3-5} | pnmtoplainpnm > $TEMP_MASK;
cjb2 -lossy -clean $TEMP_MASK $DJVU_MASK;
djvumake ${1/.png/.djvu} Sjbz=$DJVU_MASK PPM=$TEMP_IMG;
rm -rf $TEMP_DIR
}
if [ "${1##*.}" == "xcf" ] ; then
TEMPORARY="/tmp/$WINDOWID$BASHPID"
mkdir $TEMPORARY
convert ${1} ${TEMPORARY}/test.png
pushd $TEMPORARY
BUNDLE=" "
for i in $(ls -cr -1) ; do
todjvu $i
BUNDLE="$BUNDLE ${i/.png/.djvu}"
done
djvm -c out.djvu $BUNDLE
popd
mv $TEMPORARY/out.djvu ./
rm -rf $TEMPORARY
fi
Použití skritu (který musí být pochopitelně označen jako spustitelný):
$ ./xcf2djvu clark.xcf
Z dočasného adresáře /tmp
, kde probíhají veškeré konverze se do adresáře ve kterém byl skript spuštěn přesune pouze výsledný soubor s názvem out.djvu
OCR
Pro vytvoření textové vrstvy lze na výsledný soubor out.djvu
použít nástroj ocrodjvu, který je k dispozici kupř. v distribuci Debianu
$ ocrodjvu -l eng --in-place out.djvu
O výsledku se můžeme přesvědčit jednoduše:
$ djvutxt out.djvu