Help us understand the problem. What is going on with this article?

Google Cloud Vision APIで光学式文字認識

More than 1 year has passed since last update.

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」に区切られて読み取れているらしい

img.png

ABCD E F
12345
あいうえお

また、Qiitaのロゴを読み込ませたところ、うまくいった!

img.png

Qiita

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away