Vision API を使用すると、Vision の特徴タイプを使用してオフライン(非同期)で検出サービスを実行できます。また、大量の画像ファイルのアノテーションを一括で処理することもできます。たとえば、1 つの画像のバッチに 1 つ以上の Vision API 機能(TEXT_DETECTION
、LABEL_DETECTION
、LANDMARK_DETECTION
など)を指定できます。
オフラインのバッチ リクエストの出力は、指定した Cloud Storage バケットに JSON ファイルとして書き込まれます。
制限事項
Vision API は、最大で 2,000 個までの画像ファイルを処理できます。これより多い画像ファイルを指定すると、エラーが発生します。
現在サポートされている特徴タイプ
機能タイプ | |
---|---|
CROP_HINTS |
画像上のクロップ領域の推奨頂点を調べます。 |
DOCUMENT_TEXT_DETECTION |
ドキュメント(PDF / TIFF)などの高密度テキスト画像や手書き文字を含む画像に OCR を実行します。TEXT_DETECTION は、スパース領域のテキスト画像に使用できます。DOCUMENT_TEXT_DETECTION と TEXT_DETECTION の両方が存在する場合に優先されます。 |
FACE_DETECTION |
画像内の顔を検出します。 |
IMAGE_PROPERTIES |
画像のドミナント カラーなどの一連の画像プロパティを計算します。 |
LABEL_DETECTION |
画像の内容に基づいてラベルを追加します。 |
LANDMARK_DETECTION |
画像内の地理的ランドマークを検出します。 |
LOGO_DETECTION |
画像内の企業ロゴを検出します。 |
OBJECT_LOCALIZATION |
画像内の複数のオブジェクトを検出して抽出できます。 |
SAFE_SEARCH_DETECTION |
セーフサーチを実行して、安全でない可能性のあるコンテンツや不適切なコンテンツを検出します。 |
TEXT_DETECTION |
画像内のテキストに対して光学式文字認識(OCR)を実行します。テキスト検出は、大きな画像のスパース領域向けに最適化されています。画像がドキュメント(PDF / TIFF )で、テキストが密に存在しているか、手書き文字が含まれている場合は、代わりに DOCUMENT_TEXT_DETECTION を使用します。 |
WEB_DETECTION |
画像内のニュース、イベント、有名人などの時事的なエンティティを検出し、Google 画像検索の機能を使用してウェブ上で同様の画像を検索します。 |
サンプルコード
次のサンプルコードでは、Cloud Storage にある画像ファイルのバッチに対してオフライン アノテーション サービスを実行します。
Java
このサンプルを試す前に、Vision API クイックスタート: クライアント ライブラリの使用の Java の設定手順を完了してください。詳細については、Vision API Java のリファレンス ドキュメントをご覧ください。
Node.js
このサンプルを試す前に、Vision クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。 詳細については、Vision Node.js API のリファレンス ドキュメントをご覧ください。
Vision に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
Python
このサンプルを試す前に、Vision クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。 詳細については、Vision Python API のリファレンス ドキュメントをご覧ください。
Vision に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
レスポンス
リクエストが成功すると、コードサンプルで指定した Cloud Storage バケットにレスポンス JSON ファイルが返されます。JSON ファイルあたりのレスポンス数は、コードサンプルの batch_size
によって決まります。
画像に対してリクエストする特徴タイプにもよりますが、返されるレスポンスは通常の Vision API 特徴検出のレスポンスと類似しています。
次のレスポンスは、LABEL_DETECTION
と TEXT_DETECTION
アノテーション(image1.png
)、IMAGE_PROPERTIES
アノテーション(image2.jpg
)、OBJECT_LOCALIZATION
アノテーション(image3.jpg
)を返しています。
レスポンスには、ファイルの URI を示す context
フィールドも含まれます。
offline_batch_output/output-1-to-2.json
{ "responses": [ { "labelAnnotations": [ { "mid": "/m/07s6nbt", "description": "Text", "score": 0.93413997, "topicality": 0.93413997 }, { "mid": "/m/0dwx7", "description": "Logo", "score": 0.8733531, "topicality": 0.8733531 }, ... { "mid": "/m/03bxgrp", "description": "Company", "score": 0.5682425, "topicality": 0.5682425 } ], "textAnnotations": [ { "locale": "en", "description": "Google\n", "boundingPoly": { "vertices": [ { "x": 72, "y": 40 }, { "x": 613, "y": 40 }, { "x": 613, "y": 233 }, { "x": 72, "y": 233 } ] } }, ... ], "blockType": "TEXT" } ] } ], "text": "Google\n" }, "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image1.png" } }, { "imagePropertiesAnnotation": { "dominantColors": { "colors": [ { "color": { "red": 229, "green": 230, "blue": 238 }, "score": 0.2744754, "pixelFraction": 0.075339235 }, ... { "color": { "red": 86, "green": 87, "blue": 95 }, "score": 0.025770646, "pixelFraction": 0.13109145 } ] } }, "cropHintsAnnotation": { "cropHints": [ { "boundingPoly": { "vertices": [ {}, { "x": 1599 }, { "x": 1599, "y": 1199 }, { "y": 1199 } ] }, "confidence": 0.79999995, "importanceFraction": 1 } ] }, "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image2.jpg" } } ] }
offline_batch_output/output-3-to-3.json
{ "responses": [ { "context": { "uri": "gs://cloud-samples-data/vision/document_understanding/image3.jpg" }, "localizedObjectAnnotations": [ { "mid": "/m/0bt9lr", "name": "Dog", "score": 0.9669734, "boundingPoly": { "normalizedVertices": [ { "x": 0.6035543, "y": 0.1357359 }, { "x": 0.98546547, "y": 0.1357359 }, { "x": 0.98546547, "y": 0.98426414 }, { "x": 0.6035543, "y": 0.98426414 } ] } }, ... { "mid": "/m/0jbk", "name": "Animal", "score": 0.58003056, "boundingPoly": { "normalizedVertices": [ { "x": 0.014534635, "y": 0.1357359 }, { "x": 0.37197515, "y": 0.1357359 }, { "x": 0.37197515, "y": 0.98426414 }, { "x": 0.014534635, "y": 0.98426414 } ] } } ] } ] }