画像の向きを揃える

本を自炊する場合に、ScanSnap でまとめてスキャンすると画像の向きがおかしくなることがあります。

そこで画像の向きを揃えるシェルスクリプトを作成しました。

画像を crop して ocr にかけたい

画像をスキャンするとページ番号などが一緒にスキャンされるので、ocr する場合にはそれが邪魔になることがあります。

例えば以下のような場合。

PFU ScanSnap Manager #S1500

グレーの部分だけを 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 でまとめてスキャンすると、どういうわけか向きがおかしくなるものがあります。
例えば以下のような。

PFU ScanSnap Manager #S1500

これを 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 の設定を以下のようにすれば問題なかったようです。