面倒なので自動化するよ！~画像自動読み込み失敗編~

こんにちは！

今回、年始の目標立案のために価値観リストを活用したいが、質問項目が画像のばかりみつかり打ち込むのが吐くほど面倒...
なので、文字の抽出を自動で行たいとおもいます。

#####実行環境
mac
python3
環境anaconda

##画像を読み込む方法
・PIL(pillow)
・OpenCV
・scikit-image

一番使われるのがPLIらしい。
pillowはpythonで代表的な画像処理ライブラリで、画像のリサイズや描画を容易に行うことができます。

```Python
form PIL import Image,ImageFilter
im = Image.open('画像ファイル名')
```

##テキストに変換する方法
・画像をテキストに変換する技術をOCR(Optical Character Recoding)という。
・OCRはOCRエンジンというソフトを使い、画像データからテキストを抽出する。
・今回はオープンソースのTesseract OCRを使用

・また、PythonからOCRエンジンを使えるようにする代表的なライブラリがPyOCRです。

```Python
txt = tool.iamge_to_string(
    Image.open('画像ファイル名')
    lang=言語名,
    builder=pyocr.builders.TextBuilder()
)
```

##実際にpng画像をテキストに変換してみる

```zsh
brew install tesseract
```

pyocrの日本語学習モデル取得のためにwgetもインストール

```zsh 
brew install wget
```

jpn.traineddataを取得

```zsh
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とバージョン確認

```zsh
which tessaract
tessaract -v
```

・コード実行

```python
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)

```

変換元
![target.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637111/f151a0af-89ba-6a1e-665f-7f2202e7702c.png)

変換結果

```python
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の方が断然精度がよいです...
![Screenshot 2021-01-03 at 16.04.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/637111/2854837b-09de-59b6-9da2-0a9b4c9b0340.png)

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