Cloud Vision API は、HTTP POST オペレーションを使用して、リクエストで送信した画像のデータ解析を行う REST API です。この API では、リクエストとレスポンスの両方で JSON を使用します。
概要
- リクエストは、
https://vision.googleapis.com/v1/images:annotateに対する POST リクエストです。 - リクエストの認証が必要です。
- リクエスト本文はこのようなものです。 レスポンスはこのようになりますが、フィールドは、実行するアノテーションのタイプに応じて異なります。
- cURL でリクエストを送信する方法は、次のとおりです。
- クライアント ライブラリもあります。
- 簡単なデモを用意しましたのでお試しください。ドラッグ&ドロップするだけです。
エンドポイント
Vision API を構成するエンドポイントは 1 つ(https://vision.googleapis.com/v1/images)で、1 つの HTTP リクエスト メソッド(annotate)をサポートしています。
POST https://vision.googleapis.com/v1/images:annotate
認証
POST リクエストは、API キーまたは OAuth トークンのいずれかを渡して認証することが必要です。詳しくは、認証のページをご覧ください。
JSON リクエストの形式
POST リクエストの本文には、requests リストを 1 つ含む JSON オブジェクトが入ります。リストには AnnotateImageRequest タイプのオブジェクトを 1 つ以上含めることができます。
{
"requests":[
{
"image":{
"content":"/9j/7QBEUGhvdG9...image contents...eYxxxzj/Coa6Bax//Z"
},
"features":[
{
"type":"LABEL_DETECTION",
"maxResults":1
}
]
}
]
}
リクエスト作成時の注意:
requestsリストを含める必要があります。
requests リストで:
imageは、画像ファイルを指定します。base64 エンコード文字列、Cloud Storage ファイルの場所、または公開 URL を送信できます。詳しくは、画像の指定をご覧ください。featuresでは、画像に対して行うアノテーションのタイプをリストします。タイプは 1 つ以上指定でき、返されるmaxResultsもタイプごとに指定できます。imageContext(上の例には示されていません)では、境界ボックス、言語、クロップヒント、アスペクト比といった、アノテーションを補足するヒントをサービス リクエストに指定します。
画像の指定
リクエストで画像を指定するには次の 3 つの方法があります。
base64 エンコードの画像文字列として。画像がローカルに格納されている場合、文字列に変換し、
image.contentの値として渡すことができます。{ "requests":[ { "image":{ "content":"/9j/7QBEUGhvdG9zaG9...image contents...fXNWzvDEeYxxxzj/Coa6Bax//Z" }, "features":[ { "type":"FACE_DETECTION", "maxResults":10 } ] } ] }さまざまなプラットフォームでのエンコードについては、base64 エンコードをご覧ください。
Cloud Storage URI として。完全な URI を
image.source.imageUriの値として渡します。{ "requests":[ { "image":{ "source":{ "imageUri": "gs://bucket_name/path_to_image_object" } }, "features":[ { "type":"LABEL_DETECTION", "maxResults":1 } ] } ] }Cloud Storage 内のファイルには、使用する認証方式によりアクセス可能でなければなりません。API キーを使用している場合、ファイルは公開され、アクセス可能でなければなりません。サービス アカウントを使用している場合、そのサービス アカウントを作成したユーザーからファイルにアクセス可能でなければなりません。
HTTP または HTTPS でアクセス可能な公開 URL として。URL を
image.source.imageUriの値として渡します。{ "requests":[ { "image":{ "source":{ "imageUri": "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png" } }, "features":[ { "type":"LOGO_DETECTION", "maxResults":1 } ] } ] }HTTP / HTTPS URL から画像を取得する場合、リクエストが完了するとは限りません。リクエストの調整や DoS 防止などのため、指定したホストがリクエストを拒否することがあります。また、不正利用を防止するため、Google がサイトに対するリクエストを調整することもあります。このような状況ではリクエストが失敗します。ベスト プラクティスとして、本番環境のアプリケーションでは、外部ホストの画像を頼りにしないでください。
JSON レスポンスの形式
annotate リクエストは、AnnotateImageResponse タイプの JSON レスポンスを受け取ります。
リクエストはどの機能タイプでも類似していますが、レスポンスは機能タイプごとに大きく異なる場合があります。詳しくは、Vision API リファレンスをご覧ください。
以下のコードは、下の写真に対するラベル検出のレスポンスの例です。
{
"responses": [
{
"labelAnnotations": [
{
"mid": "/m/0bt9lr",
"description": "dog",
"score": 0.97346616
},
{
"mid": "/m/09686",
"description": "vertebrate",
"score": 0.85700572
},
{
"mid": "/m/01pm38",
"description": "clumber spaniel",
"score": 0.84881884
},
{
"mid": "/m/04rky",
"description": "mammal",
"score": 0.847575
},
{
"mid": "/m/02wbgd",
"description": "english cocker spaniel",
"score": 0.75829375
}
]
}
]
}
クライアント ライブラリ
Google では、リクエストの作成と送信、またレスポンスの受信と解析の処理を簡素化するため、複数のプログラミング言語でクライアント ライブラリを用意しています。
インストール方法と使用方法については、クライアント ライブラリをご覧ください。