過去問とかをスキャンするときに,古いスキャナーでは濃さを指定できなくて文字が薄くなることがあります.そこで,スキャンしたけど文字が薄くて読めないという時に使えるスクリプトを書きました.ただpdfを二値化するだけですがこんな感じで結構使えます.

sample1 sample2

準備としてImageMagickをインストールしておきます.

wget ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick.tar.gz
tar xvf ImageMagick.tar.gz
cd ImageMagick-6.7.9-6/
./configure
make
make install

インストール出来たら,以下のコードを適当なファイルに書き込む.(ここではScanDataConvert.rbとする.)それと,depth = 63000 のところはしきい値なので,適当に書き換えてください.

#!/usr/bin/ruby

#文字の濃さ(63000)
depth = 63000

#文字コード指定
$KCODE = "UTF8"

if ARGV[0] == nil || ARGV[1] == nil
	exit
end

#作業スペース
workspace = "/tmp/workspace/"

#作業スペース作成
com = "mkdir #{workspace}"
`#{com}`
p com

#pdfファイルを分割する
com = "pdftoppm " + ARGV[0] +" "+workspace+"aaa"
`#{com}`
p com

com = "mogrify -format jpg "+workspace+"*.ppm"
`#{com}`
p com

#各ファイルを加工する
com = "convert -threshold "+depth.to_s+" "+workspace+"*.jpg "+workspace+"result.jpg"
`#{com}`
p com

#各ファイルをまとめて新たなファイルを作成する
com = "convert "+workspace+"result*.jpg "+ARGV[1]
`#{com}`
p com

#各ファイルを削除する
#print `ls #{workspace}`
com = "rm -rf #{workspace}"
`#{com}`
p com

print "\n\ndone.\n"

あとはこのスクリプトを使うだけです.

./ScanDataConvert.rb 加工前.pdf 加工後.pdf