【Python】tessera-octとpyocrでOCRやってみた

実行環境
OS : Windows7 64bit
python : 3.6.3
tesseract : tesseract-ocr-setup-3.05.01
pyocr : たしか0.6

準備
1. Windows版tesseract-ocrのインストール
tesseract-ocrのインストーラーを使ってインストールする。

2. tesseract-ocrのpathを通す
なぜかよくわからないがpathが通っていないので、インストール後、”C:\Program Files (x86)\Tesseract-OCR”をPathに追加する。
また、TESSDATA_PREFIXの値をC:\Program Files (x86)\Tesseract-OCR\tessdataにする。

3. PCの再起動
一度再起動しないとpyocrがtesseractを認識してくれなかった。

4. Aanaconda promptからpyocrのインストール
以上で準備は完了。

実際にPythonでOCRスクリプトを作ってみた。
PythonでOCRをするためにここを参考に以下のコードを実行した。

from PIL import Image
import sys
import pyocr
import pyocr.builders

tools = pyocr.get_available_tools()
if len(tools) == 0:
print("No OCR tool found")
sys.exit(1)
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))

langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = langs[0]
print("Will use lang '%s'" % (lang))

結果

Will use tool 'Tesseract (sh)'
Available languages: eng, equ, jpn, osd
Will use lang 'eng'

(解決済み、ただし原因はよくか判らない)
'Tesseract (sh)'はあるのに、'unable to get languages'?というエラーが出た。

エラー内容

Will use tool 'Tesseract (sh)'
Traceback (most recent call last):</code>

File "&lt;ipython-input-2-9c8beca4f5b7&gt;", line 1, in &lt;module&gt;
runfile('G:/Python/OCR/test.py', wdir='G:/Python/OCR')

File "C:\ProgramData\Anaconda3\envs\opencv\lib\site-packages\spyder\utils\site\sitecustomize.py", line 710, in runfile
execfile(filename, namespace)

File "C:\ProgramData\Anaconda3\envs\opencv\lib\site-packages\spyder\utils\site\sitecustomize.py", line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)

File "G:/Python/OCR/test.py", line 23, in &lt;module&gt;
langs = tool.get_available_languages()

File "C:\ProgramData\Anaconda3\envs\opencv\lib\site-packages\pyocr\tesseract.py", line 406, in get_available_languages
raise TesseractError(ret, "unable to get languages")

TesseractError: (1, 'unable to get languages')

一度、Windowsにインストールしたtesseractをアンインストールして、再度上記コードを実行。

No OCR tool found
An exception has occurred, use %tb to see the full traceback.</code>
SystemExit: 1
C:\ProgramData\Anaconda3\envs\opencv\lib\site-packages\IPython\core\interactiveshell.py:2918: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

tesseractをアンインストールすると'No OCR tool found'となったので、tesseractは一応認識されていた模様。
おそらく、TESSDATA_PREFIXの値をC:\Program Files (x86)\Tesseract-OCR\tessdataにすることで解決できたと勝手に思っている。