本を自炊する場合に、ScanSnap でまとめてスキャンすると画像の向きがおかしくなることがあります。
そこで画像の向きを揃えるシェルスクリプトを作成しました。
画像を crop して ocr にかけたい
画像をスキャンするとページ番号などが一緒にスキャンされるので、ocr する場合にはそれが邪魔になることがあります。
例えば以下のような場合。

グレーの部分だけを ocr にかけた方が手直しが少なくて済むので、imagecutter を自作してその部分だけを切り取るようにしました。
#!/bin/sh
origin="./before"
destination='./after/'
for file in `\find $origin -maxdepth 4 -name '*.jpg'`; do
base=$(basename $file)
echo $destination$base
convert -crop 1371x1719+60+96 $file $destination$base
done
ところが、ScanSnap でまとめてスキャンすると、どういうわけか向きがおかしくなるものがあります。
例えば以下のような。

これを windows で回転して保存したのですが、シェルスクリプトで実行するとこのまま crop されてしまい、うまくいきません。
画像の orientation 情報を削除する
exiftool で確認すると、画像を回転しても orientation 情報が変更されただけで、処理する場合にはそれを無視して処理してしまうようです。
そこで、その orientation 情報を削除する必要があります。
以下の1行で削除できます。
convert -auto-orient -strip $file $file
最終的には以下のようなシェルスクリプトで、向きを揃えて画像を crop できます。
#!/bin/sh
origin="./before"
destination='./after/'
for file in `\find $origin -maxdepth 4 -name '*.jpg'`; do
base=$(basename $file)
echo $destination$base
convert -auto-orient -strip $file $file
convert -crop 1371x1719+60+96 $file $destination$base
done
このようにして crop された画像を「読んでココ」で一気にテキストファイルに変換します。
ScanSnap の設定を「回転しない」にする
上のようなシェルスクリプトでうまくいったと思ったのですが、どうもダメのようです。
ちょっと調べればわかったのですが、最初から ScanSnap の設定を以下のようにすれば問題なかったようです。
