エンジニアリングとお金の話

都内で働くエンジニアの日記です。

【技術】pythonでtesseractを使ってみた

【SPONSORED LINK】

仕事でtiffで出力された帳票とPDFで出力された帳票を比較するという作業を行っているが、単調な作業で死にそうである。何とか機械的に作業出来ないかと思い、色々調べて行くと、tesseractと言うOCRエンジンを活用すればなんだか出来そうな気がした。

tesseractはgoogleが開発を行っているOCRエンジンである。英語はもちろん、日本語にも対応しており、簡単にOCR処理を行う事が可能である。インストール方法も簡単だったので取り合えず書いておく。

1.google codeよりインストーラーをダウンロード

http://code.google.com/p/tesseract-ocr/
↑のdownloadより自分の環境の資産をダウンロード

f:id:hatakazu93:20120711175729p:plain

2.日本語処理用にlangageDataをダウンロード

インストーラと同じ要領で日本語LangegeDataをダウンロード
f:id:hatakazu93:20120711180038p:plain

3.tesseractインストール

インストーラをクリックすれば勝手にインストールされる

4.LangegeDataをインストール先のフォルダに格納

f:id:hatakazu93:20120711180355p:plain

これでtesstractを使用する為の準備完了。tesstract単体で使用したい場合は、

tesstract イメージファイル名 出力ファイル名 -l jpn
※最後のjpnは日本語変換の場合。英語の場合はeng

でイメージファイルより文字情報を取得する事が可能である。

なお、自分は取得した情報をpython上で色々処理したかった為、python-tesseractを使用して処理を行った。python-tesseractは、tesseractをpythonで使う為のラッパーで、以下のサイトよりダウンロードが可能である。
http://code.google.com/p/python-tesseract/

python-tesseractの使い方は簡単で、以下の通り実装を行う事で文字を画像ファイルより文字を取得する事が出来る。

#-*- coding:utf-8 -*-
import tesseract

#tesseractオブジェクト作成(文字コードも設定)
api = tesseract.TessBaseAPI()
api.Init(".","jpn",tesseract.OEM_DEFAULT)
api.SetPageSegMode(tesseract.PSM_AUTO)

#画像ファイル読み込み
mImgFile = "D:\\work\\image.jpg"
mBuffer=open(mImgFile,"rb").read()

#文字情報取得
result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api)
print result

ちなみに今回は、安西先生の名言をpython-tesseractで読み込んでみた。
f:id:hatakazu93:20120713154028j:plain

実行結果

f:id:hatakazu93:20120713154513p:plain

正直、精度はそんなに良くない。。ただ、画像から文字情報を取得出来るのは色々な用途で活用出来そうである。まだ、謎な部分も多いので早く使いこなせる様になりたい。