スキャンした書籍の後処理など

自炊した(業者さんに依頼しているから厳密には違うかもだが)書籍のPDFの後処理についてのメモ。

数学関係の本は,ほとんどが白黒なので,最終的にはモノクロ2値にすることにした。PDFをページ毎の画像にばらして,処理したあと,最終的にFAX Group4圧縮でモノクロ2値のTiffにする。こうすると,1頁あたり50KBないしは100KB程度に収まる。

PDFをベージ毎の画像にばらすには,Acrobatあるいは,Xpdf付属のpdfimagesを使う。ただし,pdfimagesはjpeg指定なのにppmを吐き出すことがあって,信頼性にやや欠ける。でも,シェルから呼び出せるので,バッチ処理には便利。

画像の変換には,最初GIMPを使っていた。GIMPをシェルから使うために,Script-Fuというスキーム(Lispの方言)によるスクリプトをいくつか書いた。それはそれで良かったのだが,スピードがいまいち遅いので,ImageMagickに鞍替えした。ImageMagickはびっくりするくらい多機能(たとえば,傾き補正を自動でやってくれる)で,自炊本の後処理くらいなら,これで十分かなと思う。

具体的にはImageMagickのconvertというコマンドを用いて,赤チャンネル抽出(-channel Red -separate), 2倍拡大(-filter Lanczos -resize 200%), レベル補正(たとえば -level 20%,90%,0.6 とか), 傾き補正(-deskew 40%), モノクロ2値(たとえば -threshold 70% とか), 圧縮(-compress Group 4), TIFFで保存(出力先を hoge.tif などと), といった処理を行う。

これをすべてのページに施すのだが,Perlを使って一括処理することを試みた。実のところ,Perlの勉強も兼ねているという泥縄。まあしかし,入門書は本棚にあるし,ネットで適当に調べながら,Getopt::Long という便利なモジュールを利用して,なんとか動作するものが書けた。

しばらく実験していると,プログラムの設計に柔軟性がないことに気付く。もう少し汎用的なツールになっていると良いのにと思う。あるいは,Cコンパイラーのmakeみたいな構造にしても良いなあ,とも思う。このあたりは,思案中。

ともあれ,現時点では次のような感じで,一括変換を行なっている。

% pdf2mono hoge.pdf -level 40 240 0.7 -threshold 180

コメントを残す

メールアドレスが公開されることはありません。