Google Cloud Vision APIとは
Google Cloud Platformで提供されている画像解析のためのAPIでラベル検出や顔の検出などいろいろできる。
今回はその中で手書き画像から光学式文字認識(ORC)をする。
Google Cloud Vision API の APIキー取得
以下のサイトを参考に、
Google Cloud PlatformのAPIキーの取得をした。
Cloud Vision APIの使い方まとめ
参考文献
以下のページで公開されているコードを参考にプログラムを作成した。
・Python3でGoogle Cloud Vision APIを使い、ホットペッパーの画像をラベル検出している
【Python】GoogleCloudVisionAPIを使って、ホットペッパーの画像で肉々しいお店を判定できないか試してみた
作成したコード
以下に作成したコードを示す。
今回は文字認識したText部分のみがほしいため、そこだけを取り出す
ocr.py
import requests
import base64
import json
GOOGLE_CLOUD_VISION_API_URL = 'https://vision.googleapis.com/v1/images:annotate?key='
API_KEY = 'APIキー' # 取得したAPIキーを入力してください。
# APIを呼び、認識結果をjson型で返す
def request_cloud_vison_api(image_base64):
api_url = GOOGLE_CLOUD_VISION_API_URL + API_KEY
req_body = json.dumps({
'requests': [{
'image': {
'content': image_base64.decode('utf-8') # jsonに変換するためにstring型に変換する
},
'features': [{
'type': 'TEXT_DETECTION', # ここを変更することで分析内容を変更できる
'maxResults': 10,
}]
}]
})
res = requests.post(api_url, data=req_body)
return res.json()
# 画像読み込み
def img_to_base64(filepath):
with open(filepath, 'rb') as img:
img_byte = img.read()
return base64.b64encode(img_byte)
# 文字認識させたい画像を./img.pngとする
img_base64 = img_to_base64('./img.png')
result = request_cloud_vison_api(img_base64)
#認識した文字の位置など、すべての情報を出力
#print("{}".format(json.dumps(result, indent=4)))
#認識した文字のみを出力
text_r = result["responses"][0]["fullTextAnnotation"]["text"]
print(text_r)
結果
今回は、簡単な文字画像をつかって認識させてみた。
結果として、文字の正しい認識は出来るが、謎のスペースが入ってしまった。
APIから返された結果は、非常に長いため省略するが、文字間隔が広いため「ABCD」,「E」,「F」に区切られて読み取れているらしい
ABCD E F
12345
あいうえお
また、Qiitaのロゴを読み込ませたところ、うまくいった!
Qiita