急遽OCRを利用する必要があったので、フリーのライブラリを探してみた。 Linux(CentOS)で使えるものが無いか物色する中で、GoogleがOSSとして提供しているライブラリTesseractがあったので、導入から使用方法までを簡単に書いてみる。
導入
バイナリでも落ちているようだけど、ひとまずソースをダウンロードしてコンパイル、インストールすることにした。
下準備
デフォルトのCentOSでは入っていないパッケージをインストールする必要がある。
yum install libpng-devel libjpeg-devel libtiff-devel zlib-devel giflib-devel autoconf automake
leptonicaのインストール
Tesseractは内部でleptonicaを呼び出しているようなので、こちらを先にインストールする必要がある。
wget http://www.leptonica.com/source/leptonica-1.69.tar.gz tar -xvzf leptonica-1.69.tar.gz cd leptonica-1.69 ./configure make make install
tesseractのインストール
いよいよtesseract本体のインストール。 OCRで解析させたい言語ごとに解析用ファイルをダウンロードしておく必要がある。今回は英語と日本語を使う事にした。 この手順でインストールすると、tesseract本体は/usr/local/share/にインストールされるので、言語ごとの対応ファイルは解凍後、/usr/local/share/tessdataに移動させる。
wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.02.tar.gz wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.eng.tar.gz wget http://tesseract-ocr.googlecode.com/files/tesseract-ocr-3.02.jpn.tar.gz tar zxf tesseract-ocr-3.02.02.tar.gz cd tesseract-ocr ./autogen.sh ./configure make make install cd ../ tar -xvzf tesseract-ocr-3.02.eng.tar.gz mv ./tesseract-ocr/tessdata/eng* /usr/local/share/tessdata/ tar -xvzf tesseract-ocr-3.02.jpn.tar.gz mv ./tesseract-ocr/tessdata/jpn* /usr/local/share/tessdata/
これでインストールは完了。
解析させる
下記のようにコマンドを叩けば画像ファイル[hogehoge.gif]を解析してfugafuga.txtに、テキストファイルとして結果を吐き出す。
tesseract hogehoge.gif fugafuga
精度を上げる
このままでは、日本語はおろか英語であっても惨憺たるありさまなので、何とか精度向上を図る。
- 辞書ファイルを指定する
- 画像を拡大する
- 画像を二値化する
1.辞書ファイルを指定する
せっかくダウンロードしてきて展開した辞書ファイルがあるので、それで何とかなる内容なら積極的につかっていきましょう。 例えば日本語の辞書ファイルを指定する方法は以下の通り。
tesseract hogehoge.gif fugafuga -l jpn
また、使用されている文字が限定的な場合は、設定ファイルを用意することで精度を向上させることが可能です。 1とlをよく間違って解析したりするのですが、例えば数字が絶対含まれず、アルファベットのみ使用されている画像を解析するのであれば、下記内容の設定ファイルを作成することで誤解析を減らすことが可能です。
tessedit_char_whitelist abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
上記の設定ファイルを読み込ませるには下記のように指定します。
tesseract hogehoge.gif fugafuga alpha.txt
2.画像を拡大する
解析する画像の文字が小さいと精度が出ません。いろいろ拡大して、精度の出るサイズになるよう調整してみてください。
3.画像の二値化
アンチエイリアスなどでエッジがぼやけている画像では精度が出ません。なので画像を二値化(白と黒にくっきり分ける)することで精度の向上が期待できます。
大いに参考にさせてもらったサイト
http://magiccastanets.blogspot.jp/2012/06/google-tesseract-ocr-os-centos6.html http://www.slideshare.net/takmin/tesseract-ocr WEB-DB-PRESS-Vol-76
http://qiita.com/hatahata/items/4daddebb5e84ea575332