Cloud Vision API を試してみる

はじめに

はじめまして。Tech DivのIWATAです。
Cloud Vision APIの使い方について、簡単にご紹介します。

Cloud Vision APIとは

Google Cloud Platformが提供する画像認識サービスで、事前トレーニング済みの機械学習モデルを使用した画像分析を行えます。画像に含まれる顔の検出、ラベルの検出、手書き文字の読み取り等といった、様々な分析が可能です。

以下、Cloud Vision APIの公式ページです。
https://cloud.google.com/vision

公式ページ内にはブラウザから試せるデモが提供されており、環境の準備やコードの記述無しでCloud Vision APIがどの様な物か試すことが出来ます。「Try the API」部分に用意した画像をドラッグ&ドロップすることで、画像がどの様にラベル付けされるのか確認する事が可能です。

実行準備

実際にコードを書いてCloud Vision APIを使用する方法についてご紹介します。
今回はLinuxからPythonでコードを書き、Cloud Vision APIを使用してみます。

まずは、Cloud Vision APIの有効化から実施していきます。
GCPプロジェクト内の「APIとサービス」画面から、「ライブラリ」タブを選択します。
検索窓に「Cloud Vision API」を入力し、検索結果からCloud Vision APIを有効にします。

続いて、サービスアカウントキーの作成を実施します。
GCPプロジェクト内の「IAMと管理」画面から、「サービスアカウント」タブを選択します。
画面上部の「サービスアカウント」を選択し、必要情報を記入することでjson形式のサービスアカウントキーが作成されます。
作成されたjsonはCloud Vision APIを実行する環境にダウンロードしておきます。

環境変数の設定とgoogle-cloud-visionのインストールを実施します。
Cloud Vision APIを使用する環境から、先程作成したサービスアカウントキーのパスを通します。

$ export GOOGLE_APPLICATION_CREDENTIALS="サービスアカウントキーのパス"

pipを使用して、google-cloud-visionをインストールします。

$ pip install google-cloud-vision

設定周りはこれで完了です。

API実行

ここから実際にCloud Vision APIを実行していきます。今回はテキストの読み取りとロゴの検出を試してみます。
まずはテキスト読み取りの確認として、画像の弊社トップメッセージを読み取ってみます。

読み取りに使用するコードは以下になります。
「img/cci.png」部分が今回読み取る画像のパスになります。また、「client.text_detection」部分でテキスト読み取りの指定を行います。

import io
from google.cloud import vision

client = vision.ImageAnnotatorClient()
with io.open('img/cci.png', 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

response = client.text_detection(image=image)

texts = response.text_annotations

for text in texts:
    print(text.description)

以下読み取り結果になります。改行箇所も含めて、画像と同様の結果になっている事が分かります。

次にロゴの検出を確認してみます。
検出する画像にはGoogleのロゴを使用します。

検出に使用するコードは以下になります。
先程のテキスト用コードから読み取る画像のパスを変更してあります。また、「client.text_detection」部分を「client.logo_detection」に変更することで、ロゴ検出の指定を行います。

import io
from google.cloud import vision

client = vision.ImageAnnotatorClient()
with io.open('img/google.png', 'rb') as image_file:
    content = image_file.read()
image = vision.Image(content=content)

response = client.logo_detection(image=image)

logos = response.logo_annotations

for logo in logos:
    print(logo.description)

以下検出結果になります。「Google」の文字は含まれていませんが、Googleのロゴであると認識できています。

感想

Cloud Vision APIについて簡単に触ってみました。
準備無しでブラウザから試せること、短いコードで結果が返って来ること等から簡単に試してみるのも良いかもしれません。
今回は検証としてテキスト読み取りとロゴ検出を行いましたが、他にも顔検出やラベル検出といった機能が有りますので、目的に応じて様々な機能を使用してみると良さそうです。