GoogleのOCRライブラリ Tesseract

急遽OCRを利用する必要があったので、フリーのライブラリを探してみた。 Linux(CentOS)で使えるものが無いか物色する中で、GoogleがOSSとして提供しているライブラリTesseractがあったので、導入から使用方法までを簡単に書いてみる。

導入

バイナリでも落ちているようだけど、ひとまずソースをダウンロードしてコンパイル、インストールすることにした。

下準備

デフォルトのCentOSでは入っていないパッケージをインストールする必要がある。

 leptonicaのインストール

Tesseractは内部でleptonicaを呼び出しているようなので、こちらを先にインストールする必要がある。

 tesseractのインストール

いよいよtesseract本体のインストール。 OCRで解析させたい言語ごとに解析用ファイルをダウンロードしておく必要がある。今回は英語と日本語を使う事にした。 この手順でインストールすると、tesseract本体は/usr/local/share/にインストールされるので、言語ごとの対応ファイルは解凍後、/usr/local/share/tessdataに移動させる。

これでインストールは完了。

解析させる

下記のようにコマンドを叩けば画像ファイル[hogehoge.gif]を解析してfugafuga.txtに、テキストファイルとして結果を吐き出す。

精度を上げる

このままでは、日本語はおろか英語であっても惨憺たるありさまなので、何とか精度向上を図る。

  1. 辞書ファイルを指定する
  2. 画像を拡大する
  3. 画像を二値化する

1.辞書ファイルを指定する

せっかくダウンロードしてきて展開した辞書ファイルがあるので、それで何とかなる内容なら積極的につかっていきましょう。 例えば日本語の辞書ファイルを指定する方法は以下の通り。

また、使用されている文字が限定的な場合は、設定ファイルを用意することで精度を向上させることが可能です。 1とlをよく間違って解析したりするのですが、例えば数字が絶対含まれず、アルファベットのみ使用されている画像を解析するのであれば、下記内容の設定ファイルを作成することで誤解析を減らすことが可能です。

上記の設定ファイルを読み込ませるには下記のように指定します。

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です