Pythonを使えば、Google Cloud Vision APIに簡単にアクセスできます。
google-cloud-visionを利用すれば、面倒なコードは不要です。
本記事の内容
- google-cloud-visionとは?
- google-cloud-visionのシステム要件
- google-cloud-visionのインストール
- Googleの認証
- google-cloud-visionの動作確認
それでは、上記に沿って解説していきます。
google-cloud-visionとは?
google-cloud-visionとは、Google Cloud Vision APIへのアクセスを容易にするインターフェースです。
また、Googleによって開発されたオープンソースのライブラリとなります。
Google Cloud Vision APIをPythonから利用するなら、必須とも言えるようなモノです。
ただ、Google Cloud Vision APIは有料サービスとなります。
以下がその料金表です。
ただし、各機能は1000ユニットまでは無料で利用可能になります。
ユニットは、APIの呼び出しと考えれば問題ありません。
簡単に言うと、1000回は各機能を呼び出すことができます。
個人利用であれば、1000回でも事足りるかもしれません。
仮に1000回を超える場合でも、料金はかなり良心的と言えます。
以上、google-cloud-visionについて説明を行いました。
次は、google-cloud-visionのシステム要件を確認しましょう。
google-cloud-visionのシステム要件
現時点(2021年5月)でのgoogle-cloud-visionの最新バージョンは、2.3.1となります。
この最新バージョンは、2021年4月14日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
また、サポート対象となるPythonのバージョンは以下。
- Python 3.6
- Python 3.7
- Python 3.8
Google製のライブラリとしては、珍しいです。
通常なら、以下のPythonの公式開発サイクルに準じていることが多いです。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月 |
3.7 | 2018年6月27日 | 2023年6月 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
それでいけば、google-cloud-visionがPython 3.9に未対応であることが珍しいのです。
単純にsetup.pyにPython 3.9を記載していないだけだと思いますけどね。
でも、実際のところはわかりません。
ただ、私は以下のバージョンで検証しています。
>python -V Python 3.9.4
何も問題はありません。
余程のことがない限り、Python 3.8で動くモノがPython 3.9で動かないというのはありません。
あと、重要なことがあります。
仮想環境にgoogle-cloud-visionをインストールすることが、Googleのおススメです。
仮想環境については、次の記事でまとめています。
以上、google-cloud-visionのシステム要件の説明でした。
次は、google-cloud-visionのインストールを行っていきます。
google-cloud-visionのインストール
最初に、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.1.1 setuptools 56.2.0
次にするべきことは、pip自体の更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip
では、google-cloud-visionのインストールです。
google-cloud-visionのインストールは、以下のコマンドとなります。
pip install google-cloud-vision
インストールは、少し時間がかかります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ------------------------ --------- cachetools 4.2.2 certifi 2020.12.5 chardet 4.0.0 google-api-core 1.26.3 google-auth 1.30.0 google-cloud-vision 2.3.1 googleapis-common-protos 1.53.0 grpcio 1.37.1 idna 2.10 packaging 20.9 pip 21.1.1 proto-plus 1.18.1 protobuf 3.16.0 pyasn1 0.4.8 pyasn1-modules 0.2.8 pyparsing 2.4.7 pytz 2021.1 requests 2.25.1 rsa 4.7.2 setuptools 56.2.0 six 1.16.0 urllib3 1.26.4
たくさんのパッケージが、インストールされました。
google-cloud-visionの依存するパッケージが、それだけ多いということです。
そりゃ、仮想環境へのインストールをGoogleが勧めるわけですよね。
以上、google-cloud-visionのインストールの説明でした。
次は、Googleの認証に関して説明します。
Googleの認証
Pythonのプログラムから、google-cloud-visionを使ってGoogle Cloud Vision APIを利用します。
その際、APIに対して身元を明かす必要があります。
つまり、身元証明書がいるということです。
その身元証明書を作成する方法を以下で解説します。
処理の流れとはして、大きく以下の3つ。
- プロジェクトの作成
- APIの有効化
- サービスアカウントの作成
それぞれを以下で解説します。
プロジェクトの作成
Google Cloud Platformのリース管理
https://console.cloud.google.com/cloud-resource-manager
上記URLへアクセス。
「プロジェクトを作成」をクリック。
「新しいプロジェクト」画面に遷移します。
「プロジェクト名」には、OCR関連とわかるよう名前を入力します。
「プロジェクト名」を入力したら、「作成」ボタンをクリック。
少し待つと、先ほど作成したプロジェクトが表示されます。
以上で、プロジェクトの作成は完了です。
次は、APIの有効化を行います。
APIの有効化
利用するAPIは、Vision APIとなります。
Vision APIを先ほど作成したプロジェクトで有効化します。
API ライブラリ
https://console.cloud.google.com/apis/library
まずは、上記ページへアクセス。
対象のプロジェクトが選択されていることを確認します。
もし選択されていないなら、作成したプロジェクトを選択しましょう。
準備が整ったら、APIの検索を行います。
「Vision」と入力します。
そうすると、自動的に検索が実施されます。
現時点(2021年5月)では、上記の2件がヒット。
ここでは、「Cloud Vision API」を選択します。
このような画面に遷移。
「有効にする」をクリック。
以上で、APIの有効化が完了です。
次は、サービスアカウントの作成を行います。
サービスアカウントの作成
「三」→「APIとサービス」→「認証情報」をクリック。
このとき、選択中のプロジェクトが正しいことも確認しておきます。
「認証情報」画面に遷移します。
「認証情報を作成」→「サービスアカウント」をクリック。
「サービス アカウントの作成」画面に遷移。
「サービスアカウント名」を入力します。
自動的に「サービスアカウント」(ocr-380の値)は表示されます。
それ以外は省略して、「完了」ボタンをクリック。
「認証情報」画面に戻ってきます。
1分ほど待って、画面をリフレッシュ(F5で十分)します。
サービスアカウントに先ほど追加したアカウントが表示されています。
このアカウントのメールアドレス(リンク)を選択します。
以下の画面に遷移。
ここで「キー」を選択します。
すると、「鍵」画面が表示されます。
「鍵を追加」→「新しい鍵を作成」をクリック。
以下のようなポップアップが表示されます。
「JSON」が選択された状態であることを確認して、「作成」をクリック。
そうすると、jsonファイルのダウンロードが始まります。
そのjsonをダウンロードして保存します。
ダウンロードが完了したら、「閉じる」をクリック。
以上、サービスアカウントの作成が完了です。
これにて、Google側で必要な認証関連の作業は終了となります。
なお、ダウンロードしたjsonファイルが身元証明書にあたります。
では、この身元証明書を使ってAPIへのアクセスを行います。
google-cloud-visionの動作確認
公式に載っているサンプルを改良しています。
身元証明書であるjsonファイルは、「key.json」にファイル名を変更しています。
from google.cloud import vision from google.oauth2 import service_account IMG_URL = "https://imageslabo.com/wp-content/uploads/2019/05/553_dog_chihuahua_7203-973x721.jpg" # 身元証明書のjson読み込み credentials = service_account.Credentials.from_service_account_file('key.json') client = vision.ImageAnnotatorClient(credentials=credentials) image = vision.Image() image.source.image_uri = IMG_URL response = client.label_detection(image=image) labels = response.label_annotations for label in labels: print(label.description + ":" + str(label.score)) if response.error.message: raise Exception( '{}\nFor more info on error messages, check: ' 'https://cloud.google.com/apis/design/errors'.format( response.error.message))
上記プログラムは、指定した画像のラベルを取得します。
つまり、画像に何が映っているのかということをテキスト情報で取得できます。
指定できる画像は、Google Drive上の画像や外部公開されている画像となります。
上記を実行した結果は、以下の結果となります。
Dog:0.9507495760917664 Carnivore:0.8987314105033875 Dog breed:0.8860936164855957 Iris:0.8554685115814209 Whiskers:0.8209102749824524 Companion dog:0.8186631202697754 Fawn:0.8157212734222412 Toy dog:0.767457902431488 Terrestrial animal:0.7588781118392944 Snout:0.7567041516304016
「Dog」が、最もscoreが高いです。
指定した画像は、これです。
正解ですね。
以上、google-cloud-visionの動作確認が完了です。
ただ、上記コードが動かない場合があります。
その場合について、以下で説明します。
「PermissionDenied」エラーが出る場合
サンプルコードを実行した際に、次のようなエラーが出ることがあります。
google.api_core.exceptions.PermissionDenied: 403 This API method requires billing to be enabled. Please enable billing on project #●●●●●●●●●●●●● by visiting https://console.developers.google.com/billing/enable?project=●●●●●●●●●●●●● then retry. If you enabled billing for this project recently, wait a few minutes for the action to propagate to our systems and retry.
これは、課金設定が有効になっていないことによります。
Cloud Vision APIは、課金設定を有効にしないと利用できません。
無料枠で利用しようとしても、課金設定の有効化は必須ということです。
そのため、課金設定を有効にする必要があります。
エラーとともに以下のURLが表示されています。
https://console.developers.google.com/billing/enable?project=●●●●●●●●●●●●●
このURLにアクセスすると、次の表示を確認できます。
指示に従って、該当プロジェクトの課金設定を有効化しましょう。