tesseract-OCRでレシートを読み込ませたらギャル文字みたいになった件
経緯
・奥様の家計簿作業が非常にめんどくさそう(レシート改修して、電卓ぱちぱち。写メって一撃がいいなぁと)
・画像認識って簡単にできるんか?の興味
先に、結果・・・
全然ダメ。 設定が悪いのか、ギャル文字みたいになる。
家計簿にはぶち込めない。
とりあえずググってみると・・・
https://techacademy.jp/magazine/18992
読み込むぐらいならだれかしらやってくれてるんだ。そうだとおもった。
※OCRの最新バージョンを入れるとどうにも動かないので、記載の通りoldの3.02をインストールするのをお勧めします。
どうやら最新のラーニングデータが壊れているようで・・・
ひとまずそのまま写経コーディングでぶち込んでいく。
from PIL import Image import sys import pyocr import pyocr.builders tools = pyocr.get_available_tools() if len(tools) == 0: print("Ocr tool Not 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 'fla' # Note that languages are NOT sorted in any way. please refer # to the system locale settings for the default language # to use. txt = tool.image_to_string( Image.open('test.png'), lang=lang, builder=pyocr.builders.TextBuilder() ) # txt is a Python string print(txt)
読み込んだレシートはこちら。
ダイレックス
うえをtest.pngとして同階層に配置。これで動くはずなんじゃ。
実行結果が以下
11sFJ aim$MB4
v171(8?3E) m4 um)
T as ?IbS.’<' fiaiiil ‘em
¥1u(wfi) use (am)
T 01 $3 Lmxfi
muynsa
ééaf
mfinm
359
asafitl
7201-01-9180-5481170fl
どうやら言語がよくないらしく、デフォルトではjpnランゲージはないらしい。
バージョンが違うので画面が違ってわかりにくいが、
https://qiita.com/henjiganai/items/7a5e871f652b32b41a18
を参考に、日本語のラーニングデータを入れて、コードも一部改変
そのまま使うと「eng」が採用されるので・・・
txt = tool.image_to_string( Image.open('test.png'), lang=lang, builder=pyocr.builders.TextBuilder() ) # txt is a Python string
ここを
txt = tool.image_to_string( Image.open('test.png'), lang='jpn', builder=pyocr.builders.TextBuilder() ) # txt is a Python string
こうする(脳死べた書き)
実行結果はこうなる
ーー SFJ おぇヵ丶き帖B4
\ー7ー(税抜) \ーa縄 (税込)
T ug マ丿レミヤ 麻襲豆鷹 甘ロ
\ー47(税抜) \ー5g (挽込)
T 0ー ゃさしし丶憂茶
720ー一0ー一gーgD一5縄8ーー70霞 寶「 譬
ギャル文字爆誕。
おしぃ。とくにマノレミヤのとこ。十分麻婆豆腐に見えるけども・・・
もう少しオプションで調整、ラーニングデータもチューニングできるようなので、
もうちょっとましな精度出せそうだけど、いったんここでギブ。
都合がつけば続きをやるかもしれない。