2014/03/02

自炊雑感


Epson DS-510を購入したので数十冊自炊してみた。
今のところの感想や気づいたことなど。

ちなみに、裁断〜スキャン〜後処理 の所要時間はコミック1冊平均20〜30分くらい。
カバー/表紙/カラーページ/本体 それぞれ別々に処理しているせいだとは思うが、もう少し短縮したいところ。

スキャン

今のところ、スキャン時の設定等はこんな感じで落ち着いている。
  • 300dpi
  • ページに合わせてカラー/グレースケール/白黒を選択
  • PNM形式で保存
  • xsaneのスキャナ側の設定は、明るさを0.4〜0.6くらい、コントラストを0〜0.3くらいに設定 (白い部分がきちんと白くなり、色味が変わり過ぎない程度)
  • 一度にスキャンするページ数は120ページ以内
そして、スキャンしていて気になったことがいくつか。
  • 長尺物のスキャンができない
    DS-510のマニュアルを見るとWindows等の場合は長尺物もスキャンできるようだが、xsaneからではできなかった。
    結果、コミックのカバーが一発ではスキャンできないので、裁断して2回に分けてスキャンしている。場合によってはGimpで加工して1枚に再合成。
  • スキャン中にxsaneがたまに落ちる
    調子がいい時は全然落ちないのだけど、頻繁に落ちることもある。何がきっかけで落ちているのかは今のところ不明。
  • 一度にスキャンするページ数を増やしすぎると斜めになりやすい
    うまく置くとスキャナの上限枚数を超えてセットできるが、斜めにスキャンされる率が高くなったので60枚以内に抑えるようにした。

スキャン後の処理


小説


小説はページの端が白いスペースになっている。
そのため、余白を削除することでスマートフォンやタブレット等で見た時に大きく表示することができる。
余白を削除する際には、pamcutで読み取り境界付近の黒いラインをカットしたあとにpnmcropを行うことでうまく削除できた。(場合によってはpnmcropのオプションで調整)
その後pnmscaleでサイズを縮小(このとき白黒からグレースケールに変換される)してからjpegへ変換。

毎回コマンド手打ちは面倒なので、下記のようなシェルスクリプトを作った。(marginやらscaleやらは適当なので微調整が必要かも)

#!/bin/bash

outputdir="/home/xxx/hoge"

margin_top=100
margin_left=100
cut_width=1300
cut_height=1950

scale=0.56

temp_dir=jpg

current_dir=`pwd`
string_dir=${current_dir##*/}
output_zip_filename=${string_dir}.zip

# make temp dir
mkdir -p ${temp_dir}

# convert image file
for i in $* ; do
  outputfilename=`echo ${i} | sed "s/pnm/jpg/"`
  pamcut -left ${margin_left} -top ${margin_top} -width ${cut_width} -height ${cut_height} ${i} | pnmcrop | pnmscale ${scale} | pnmtojpeg > ${temp_dir}/${outputfilename}
done

# compress all files
zip -r -j -q -9 ${outputdir}/${output_zip_filename} ${temp_dir}


コミック

コミックは余白削除が必要無いため、サイズ縮小のみやればOK。
小説と同様、下記のようなシェルスクリプトを作った。


#!/bin/bash

outputdir="/home/xxx/hoge"
scale=0.56
temp_dir=jpg

current_dir=`pwd`
string_dir=${current_dir##*/}
output_zip_filename=${string_dir}.zip

# make temp dir
mkdir -p ${temp_dir}

# convert image file
for i in $* ; do
  outputfilename=`echo ${i} | sed "s/pnm/jpg/"`
  pnmscale ${scale} ${i} | pnmtojpeg > ${temp_dir}/${outputfilename}
done

# compress all files
zip -r -j -q -9 ${outputdir}/${output_zip_filename} ${temp_dir}


そして複数巻一気にスキャンだけした後で、下記のようなコマンドで一括でjpegへ変換を実行。

for i in `seq -w 1 10`; do cd xxx_${i}; ~/hoge/scale_comic.sh *.pnm; cd ../; done