仕事でtiffで出力された帳票とPDFで出力された帳票を比較するという作業を行っているが、単調な作業で死にそうである。何とか機械的に作業出来ないかと思い、色々調べて行くと、tesseractと言うOCRエンジンを活用すればなんだか出来そうな気がした。
tesseractはgoogleが開発を行っているOCRエンジンである。英語はもちろん、日本語にも対応しており、簡単にOCR処理を行う事が可能である。インストール方法も簡単だったので取り合えず書いておく。
1.google codeよりインストーラーをダウンロード
http://code.google.com/p/tesseract-ocr/
↑のdownloadより自分の環境の資産をダウンロード
2.日本語処理用にlangageDataをダウンロード
インストーラと同じ要領で日本語LangegeDataをダウンロード
3.tesseractインストール
インストーラをクリックすれば勝手にインストールされる
4.LangegeDataをインストール先のフォルダに格納
これで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で読み込んでみた。
実行結果
正直、精度はそんなに良くない。。ただ、画像から文字情報を取得出来るのは色々な用途で活用出来そうである。まだ、謎な部分も多いので早く使いこなせる様になりたい。