スキャンした画像の処理手順メモ
Ubuntu でスキャンしたマルチページ tiff を処理する手順のメモ。 tiff から整形した djvu に変換している。 zsh で作業した。
ページごとに分割
mkdir split; for f in *.tif
tiffsplit $f split/$f:r
で tiff を分割する。
cd split
http://transitive.info/2011/01/15/jisui-process-images/ のスクリプトで 偶数ページと奇数ページに分ける。
mkdir odd even; pick-out-arguments *.tif | xargs mv -t odd; mv *.tif even
余白の削除
以前は単純に for を使って実行していたのだが、デュアルコアを生かせるように xargs を使って処理をする。 gimp などで開いて余白の部分を決め、余白の切り取りと回転を行って bmp にする。
cd odd
from=tif; to=bmp; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 convert -crop 2800x1940+120+80 -rotate 90 {}.$from {}.$to
次に偶数ページの方も処理する。サイズは同じにする。
cd ../even
from=tif; to=bmp; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 convert -crop 2800x1940+120+150 -rotate -90 {}.$from {}.$to
スキャンするときに方向を間違ったのでひっくり返っていて、こちらは -90 度回転している。
cd ..
mv */*.bmp .
i=0; for f in *.bmp
do
i=$((i+1))
mv $f `printf "%03d" i`.$f:e
done
として bmp ファイルを集めて連番にする。
qiv -m *.bmp
などで出来を確認する。
djvu に変換
モノクロの場合は pbm から djvu に変換する。
from=bmp; to=pbm; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 convert {}.$from {}.$to
from=pbm; to=djvu; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 cjb2 {}.pbm {}.djvu
djvm -c doc.djvu *.djvu
これで doc.djvu ができる。
また、8色のグレーにする場合は
from=bmp; to=png; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 convert -depth 16 {}.$from {}.$to
from=png; to=pgm; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 convert -colors 8 {}.$from {}.$to
のように何回かにわけて減色するとよいらしい。
from=pgm; to=djvu; ls *.$from | sed -e "s/.$from$//" | xargs --replace -n1 -P3 cpaldjvu -dpi 300 {}.$from {}.$to
で djvu にする。解像度は 300 で統一しているので、そのように指定した。