PyOCRを使って文字認識する

2018年3月14日水曜日

python tesseract windows 文字認識

t f B! P L

PyOCRとは何か?

tesseract-ocrをpythonから使えるようにしたもの。
pythonからtesseractを呼び出して画像から文字を認識する。
詳しくはhttps://github.com/openpaperwork/pyocr

前提


Install

pip install pyocr
簡単

使い方

GitHubにあるコードを見ながらtesseractをpythonから使えるかどうかの確認をする。
パスはpythonのコードの中で通すことにした。
import sys
import os

import pyocr
import pyocr.builders

TESSERACT_PATH = 'C:\\Users\\username\\AppData\\Local\\Tesseract-OCR'
TESSDATA_PATH = 'C:\\Users\\username\\AppData\\Local\\Tesseract-OCR\\tessdata'

os.environ["PATH"] += os.pathsep + TESSERACT_PATH
os.environ["TESSDATA_PREFIX"] = TESSDATA_PATH

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)
# The tools are returned in the recommended order of usage
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# Ex: Will use tool 'libtesseract'
langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = langs[0]
print("Will use lang '%s'" % (lang))
result
(_venv) E:\projects\python_tess>python inst_test.py
Will use tool 'Tesseract (sh)'
Available languages: eng, jpn, osd
Will use lang 'eng'

文字認識

さっそく使ってみる。画像は使い回し
import sys
import os

import pyocr
import pyocr.builders

from PIL import Image

TESSERACT_PATH = 'C:\\Users\\username\\AppData\\Local\\Tesseract-OCR'
TESSDATA_PATH = 'C:\\Users\\username\\AppData\\Local\\Tesseract-OCR\\tessdata'

os.environ["PATH"] += os.pathsep + TESSERACT_PATH
os.environ["TESSDATA_PREFIX"] = TESSDATA_PATH

tools = pyocr.get_available_tools()
if len(tools) == 0:
    print("No OCR tool found")
    sys.exit(1)
# The tools are returned in the recommended order of usage
tool = tools[0]
print("Will use tool '%s'" % (tool.get_name()))
# Ex: Will use tool 'libtesseract'
langs = tool.get_available_languages()
print("Available languages: %s" % ", ".join(langs))
lang = langs[0]
print("Will use lang '%s'" % (lang))

txt = tool.image_to_string(
    Image.open('imouto.png'),
    lang='jpn',
    builder=pyocr.builders.TextBuilder()
)

print(txt)
result
(_venv) E:\projects\python_tess>python inst_test.py
Will use tool 'Tesseract (sh)'
Available languages: eng, jpn, osd
Will use lang 'eng'
妹 が あ な た を 呼 ん で い る 。 ' お 兄 ち ゃ ん ?」
同じ画像を使ったので前回コマンドラインから呼び出したときと同じ結果が得られた。

QooQ