こんにちは!
今回、年始の目標立案のために価値観リストを活用したいが、質問項目が画像のばかりみつかり打ち込むのが吐くほど面倒...
なので、文字の抽出を自動で行たいとおもいます。
#####実行環境
mac
python3
環境anaconda
##画像を読み込む方法
・PIL(pillow)
・OpenCV
・scikit-image
一番使われるのがPLIらしい。
pillowはpythonで代表的な画像処理ライブラリで、画像のリサイズや描画を容易に行うことができます。
form PIL import Image,ImageFilter
im = Image.open('画像ファイル名')
##テキストに変換する方法
・画像をテキストに変換する技術をOCR(Optical Character Recoding)という。
・OCRはOCRエンジンというソフトを使い、画像データからテキストを抽出する。
・今回はオープンソースのTesseract OCRを使用
・また、PythonからOCRエンジンを使えるようにする代表的なライブラリがPyOCRです。
txt = tool.iamge_to_string(
Image.open('画像ファイル名')
lang=言語名,
builder=pyocr.builders.TextBuilder()
)
##実際にpng画像をテキストに変換してみる
brew install tesseract
pyocrの日本語学習モデル取得のためにwgetもインストール
brew install wget
jpn.traineddataを取得
wget https://github.com/tesseract-ocr/tessdata/raw/4.00/jpn.traineddata
mv jpn.traineddata /usr/local/Cellar/tesseract/4.1.1/share/tessdata
※Pathが存在しない場合、以下コマンドでtesseractのpathとバージョン確認
which tessaract
tessaract -v
・コード実行
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 = 'jpn'
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.
txt = tool.image_to_string(
Image.open('target.png'),
lang=lang,
builder=pyocr.builders.TextBuilder()
)
# txt is a Python string
print(txt)
変換結果
python3 Image-To-Text.py
Will use tool 'Tesseract (sh)'
Available languages: eng, jpn, osd, snum
Will use lang 'jpn'
あ ⑤ り の ま ま の ⑧② を る け れ て も ぅ う
⑧② の ⑧ 見 や ① ま ょ し く な ぇ る
な に が 恒 美 な こ と そ ま a す る
I し く て ワ ク ワ ク ⑨ る M を す る
⑯BAMN カ を ほ っ
H ま に ガ し て き せ る 街 っ て fW す る
ま セ に し Au で ⑧② で Aea
⑧ の ま わ り の 美 し D も の を 味 ち う
HR&⑦⑥④ と ぅ そ a る
iams aaliitcdiits
‥ た ロ ラ ェ テ ィ ま か ④ 入 $ を ま る
EROEREfaiR ezRtd
⑤ @ れ な い B ま や igu を ほ o
医 ま そ i し て Ma
①⑧f の ① に ⑤ っ こ と を す る
医 ま と ③ カ し て M② を す る
GEiESimEreiirimeikid
IR し く て W な ァ イ テ ァ を ま ど
匣 が ⑤ っ て 種 れ aREe
⑧② の 製 阿 と 口 せ る 木 た す
IIN の 現 M と 00 し ④ か ぅ ょ aa
ス リ ル と BA に 迦 ぅ た ん キ を き ゃ
ー に ド ク ッ そ っ 0 ず i き k 牡 き る
な っ て な な を 品 h る
ERte itha taiii
Reaeimtiisaci
R た ④ 琴 0 も mmWk な じ て
N 入 そ f し な か ら ま き る
IR⑧ て Mi+S ぇ る ぁ そ る
国 ん で ま し と こ と
⑧②0⑨ を ①A に ぁ た ぇ る
⑧② が ょ し い と ⑧ ぅ と ち り に B あ ず る
⑧② を 合 え た な な の 思 ⑧ そ き ぇ る
R と R ま る M す
や が で IM ょ く ま き る
HA の ① に z っ こ と
② ソ を っ か ず E に ま き る
ポ ッ テ ィ フ で ま W に よ き る
① 林 で R ス め に $ き る
ム 生 M が の ユ ー ェ ュ ス な m を 見 る
H&lcmtg し A い て で $ き る
⑧②0 せ 荷 に ー ま り 0 り
きびしいですね...
画像の画質もあるのでしょうか、それともライブラリの問題でしょうか、どちらにせよ読めません...
##(追記)Cloud Vision APIの方が断然精度がよいです...
GoogleのAPI、さすが精度がよいですね。
時間を見つけて実装し直していきたいです。
##参考
https://aitanu.com/kachikan-list/
https://qiita.com/seigot/items/7d424000c8d35e5146e4
https://punhundon-lifeshift.com/tesseract_ocr
https://webkaru.net/dev/mac-wget-command-install/
https://cloud.google.com/vision/?hl=ja