CloudVision APIのテキスト認識をpython3から利用する
CloudVision APIのテキスト認識を使うと安価に高精度の画像のOCRが利用できるのですが、pythonのサンプルが公式ドキュメント内で整理されていない感があり、少し手間取ったので自分用のメモとして残しておきます。
やったことは以下です。
# -*- coding: utf_8 -*- import io import os import json import glob from pprint import pprint # Google Cloud client libraryのインポート from google.cloud import vision from google.cloud.vision import types from google.protobuf.json_format import MessageToJson def annotate(basename): # 画像のファイルパス file_name = os.path.join( os.path.dirname(__file__), 'resources/{}'.format(basename)) # 画像のロード with io.open(file_name, 'rb') as image_file: content = image_file.read() image = types.Image(content=content) # 日本語のヒントを与える image_context = types.ImageContext(language_hints=['ja']) response = client.text_detection(image=image,image_context=image_context) # JSON ファイル書き出し serialized = MessageToJson(response) data = json.loads(serialized) f = open('results/{}.json'.format(os.path.splitext(basename)[0]), 'w') f.write(json.dumps(data,ensure_ascii=False)) f.close() # クライアント初期化 client = vision.ImageAnnotatorClient() # resources フォルダ内の画像をすべてAPIに投げる paths = glob.glob("resources/*.jpg") for path in paths: annotate(os.path.basename(path))