目的
pyOCRを用いて、カード中の説明文をテキスト化する際の備忘録です
準備
- pyOCR、Tesseract、jpn.traineddataをインストール
Mac環境でpyOCRで画像データをテキスト化する
PyOCR インストール$ sudo pip install pyocr
OCRエンジン部である Tesseract をインストール
$ brew install tesseract $ ls /usr/local/Cellar/tesseract/4.1.0/share/tessdata/
jpn.traineddataを取得
$ wget https://github.com/tesseract-ocr/tessdata/raw/4.00/jpn.traineddata $ mv jpn.traineddata /usr/local/Cellar/tesseract/4.1.0/share/tessdata/
- カード
(例)カードは以下を使用させて頂きます。
引用:遊戯王デュエルリンクス攻略
コード
sample.py
from PIL import Image
import sys
sys.path.append('/path/to/dir')
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))
txt = tool.image_to_string(
Image.open('card.png'),
lang='jpn',
builder=pyocr.builders.TextBuilder()
)
print(txt)
テスト
$ python sample.py
Will use tool 'Tesseract (sh)'
Available languages: eng, jpn, jpn_vert, osd, snum
士 い 攻 繁 カ を 誇 る 侵 設 の E ラ ゴ ン 。 ど ん な 祖 子 で
も 物 碑 す る 、 そ の 碇 壊 カ は 計 知 れ な い 。
備考
どうすればより高い精度で検出できるのだろう。
CodingError対策
問題:
OCRの結果が出力されない
対策:
画像中の文字が小さくて解析できていない可能性があります。
画像サイズを大きくすると解析できました。
(もしくは、他に必要な前処理があれば実行すると良い。例:背景ノイズ除去)