麦星 - arcturus technologies- 

テクノロジー関連情報と日常的な何かを発信しています

Google Cloud Vision で画像から手書き文字の検出(TEXT_DETECTION)

今日もテッペン越えてから、記事を書いている@うしです。

Alibab Cloud の「Image Search 」のRequest structure(APIエンドポイント)
ドキュメントを読んでいたら、 そう言えば、以前、Google Cloud Vision (画像のAI分析API)で、
手書き文字の画像をテキストに起こすAPIOCR的な感じの)を使用した事を思い出し、突発的にブログを書き始めました。

 

  • 環境
    • Windows10 (64bit)
    • Python 3.x (個人的には「Anaconda」で入れるのがオススメ )

 

  • 必要なもの
    • GCPのアカウント(APIキー)
    • Python の実行環境

 

 

  ○ 取りあえずコード(適当に「test.py」とか名前を付ける)

from base64 import b64encode
from sys import argv
import json
import requests

ENDPOINT_URL = 'https://vision.googleapis.com/v1/images:annotate'

if __name__ == '__main__':
    api_key, *image_filenames = argv[1:]

    img_requests = []
    for imgname in image_filenames:
        with open(imgname, 'rb') as f:
            ctxt = b64encode(f.read()).decode()
            img_requests.append({
                    'image': {'content': ctxt},
                    'features': [{
                        'type': 'TEXT_DETECTION'
                    }]
            })

            response = requests.post(ENDPOINT_URL,
                data=json.dumps({"requests": img_requests}).encode(),
                params={'key': api_key},
                headers={'Content-Type': 'application/json'})

    for idx, resp in enumerate(response.json()['responses']):
        enc = json.dumps( resp["fullTextAnnotation"]["text"], indent=2)
        dec = json.loads(enc)
        print( dec )
##        print(json.dumps(resp , indent=2))

 

○ 実行方法(コマンドラインやターミナルで以下を実行)

 $ python text.py (取得したAPIキー) (画像ファイルのフルパス)

 

○ 実行した見た
以下の手書き文字の写真をPOSTすると「今夜が山田」と返却されました。
f:id:tangniu:20190123092107j:plain

 

○ まとめ
- 画像関連処理は、用途が色々広がりそうで面白い。
- 認識率の向上により、手書き文字のテキスト化が簡易に数行のコードで実行できそう。
- AWSGCPなど色々画像関連処理について、調査&触ったことが有るが、Alibaba Cloud の「Image Search 」も今度触ってみようと思った。 - 今度は、そもそも画像ってどんな作り?ってことについて、記事を書きたいと思います。(畳み込み)