🍲
Tesseract OCR で 文字認識 を試してみました
Google様が公開している OCR エンジン 「Tesseract」 をお借りして
さくっと文字認識を試してみました。
環境
今回はpythonで試してみます。
- OS: macOS Catalina
- python3.7
- Anaconda
必要物資を調達
- tesseract
conda install -c conda-forge tesseract
- pyocr (anaconda.org からはmacのものが見つからず)
※pythonでOCRツールを利用するためのラッパー(tesseractにも対応)
pip3 install pyocr
- pillow (画像処理ライブラリ)
pip3 install pillow
試してみる
ドキュメントの「Initialization」を実行
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)
# 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))
# Ex: Will use lang 'fra'
# Note that languages are NOT sorted in any way. Please refer
# to the system locale settings for the default language
# to use.
- 実行結果
しっかりと利用可能なOCRツール(Tesseract) と 利用可能な言語が出力されました。
Will use tool 'Tesseract (sh)'
Available languages: afr, amh, ara, asm, aze, aze_cyrl, bel, ben, bod, bos, bre, bul, cat, ceb, ces, chi_sim, chi_sim_vert, chi_tra, chi_tra_vert, chr, cos, cym, dan, deu, div, dzo, ell, eng, enm, epo, est, eus, fao, fas, fil, fin, fra, frk, frm, fry, gla, gle, glg, grc, guj, hat, heb, hin, hrv, hun, hye, iku, ind, isl, ita, ita_old, jav, jpn, jpn_vert, kan, kat, kat_old, kaz, khm, kir, kmr, kor, kor_vert, lao, lat, lav, lit, ltz, mal, mar, mkd, mlt, mon, mri, msa, mya, nep, nld, nor, oci, ori, osd, pan, pol, por, pus, que, ron, rus, san, script/Arabic, script/Armenian, script/Bengali, script/Canadian_Aboriginal, script/Cherokee, script/Cyrillic, script/Devanagari, script/Ethiopic, script/Fraktur, script/Georgian, script/Greek, script/Gujarati, script/Gurmukhi, script/HanS, script/HanS_vert, script/HanT, script/HanT_vert, script/Hangul, script/Hangul_vert, script/Hebrew, script/Japanese, script/Japanese_vert, script/Kannada, script/Khmer, script/Lao, script/Latin, script/Malayalam, script/Myanmar, script/Oriya, script/Sinhala, script/Syriac, script/Tamil, script/Telugu, script/Thaana, script/Thai, script/Tibetan, script/Vietnamese, sin, slk, slv, snd, spa, spa_old, sqi, srp, srp_latn, sun, swa, swe, syr, tam, tat, tel, tgk, tha, tir, ton, tur, uig, ukr, urd, uzb, uzb_cyrl, vie, yid, yor
Will use lang 'afr'
ドキュメントの「Image to text」を実行
以下画像を生贄にします。
image_to_string で画像から文字認識してみます。
txt = tool.image_to_string(
Image.open('hanamaruki.png'),
lang='jpn',
builder=pyocr.builders.TextBuilder()
)
print(txt)
- 実行結果
はなまるきスープとは味噌汗
便利です。
しっかりと認識している・・・と思いきや、 「汁 ➡︎ 汗」 と認識されました。
まぁ、味噌汁も紐解けば汗のようなものでしょうか。
ですので良しとします。
続いて画像を以下に変更して試してみます。
- 実行結果
それぞれ「手」を入れ替えてポーズを変えることができます
いい感じです。
導入がとても簡単で便利です。
汁が汗になるので、そこは要注意ですね。
Discussion