Google Cloud Vision 拡張機能

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

バージョン: 1.4.1

機械学習モデルを使用して、画像内のコンテンツとテキストを検出します。

ここでは、この拡張機能の構成と使用について説明します。API プロキシからこの拡張機能を使用する前に、次のことを行う必要があります。

  1. サービス アカウントで Cloud Vision API を有効にします

  2. また、Cloud Storage を画像のソースとして使用する場合は、Google Cloud Storage 拡張機能リファレンスで説明されているように、この拡張機能のアクセス権を Cloud Storage に付与する必要もあります。

  3. Cloud Vision(および Cloud Storage(使用している場合))に対する権限を持つサービス アカウントがある場合は、GCP Console を使用してサービス アカウント キーを生成します。

  4. 構成リファレンスを使用して拡張機能を追加および構成するときは、生成されたキー JSON ファイルの内容を使用します。

Cloud Vision について

Google Cloud Vision API は、機械学習モデルを使用して画像を分析します。API 用のモデルをトレーニングしたり、組み込みのモデルを使用したりできます。

Cloud Vision は組み込みモデルを使用して、画像を「高層ビル」、「ヨット」、「ライオン」、「エッフェル塔」などのカテゴリに分類します。画像内の物体、顔、ロゴ、ランドマークを検出し、画像に含まれる単語を特定します。

サンプル

次の例は、ExtensionCallout ポリシーを使用して Cloud Vision 拡張機能アクションのサポートを構成する方法を示しています。

ラベルを検出する

次の例では、拡張機能の detectLabels アクションが image_uri で画像を取得し、分析のために Cloud Vision API に渡します。API は画像を調べて、画像の内容に適用されるラベルを決定します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Cloud-Vision-Extension">
    <DisplayName>Cloud Vision Extension</DisplayName>
    <Connector>cloud-vision-extension-example</Connector>
    <Action>detectLabels</Action>
    <Input><![CDATA[
    {
        "image_uri" : "gs://cloud-vision-example/empire-state-building.jpg"
    }
    ]]></Input>
    <Output>vision.labels.retrieved</Output>
</ConnectorCallout>

次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Image-Labels">
    <DisplayName>Get Image Labels</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{vision.labels.retrieved}</Payload>
    </Set>
</AssignMessage>

非常に高い建物がある都市部の画像の場合、次のようなレスポンスが返されることがあります。

{
  "labels": [
      {
          "locations": [

          ],
          "properties": [

          ],
          "mid": "/m/0j_s4",
          "locale": "",
          "description": "metropolitan area",
          "score": 0.9868549704551697,
          "confidence": 0,
          "topicality": 0.9868549704551697,
          "boundingPoly": null
      },
      {
          "locations": [

          ],
          "properties": [

          ],
          "mid": "/m/079cl",
          "locale": "",
          "description": "skyscraper",
          "score": 0.966157853603363,
          "confidence": 0,
          "topicality": 0.966157853603363,
          "boundingPoly": null
      }
  ]
}

テキストの検出

次の例では、拡張機能の detectText アクションが image_uri で画像を取得し、分析のために Cloud Vision API に渡します。API は画像を調べて、画像内のテキストを識別します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Cloud-Vision-Text">
    <DisplayName>Cloud Vision Text</DisplayName>
    <Connector>cloud-vision-extension-example</Connector>
    <Action>detectText</Action>
    <Input><![CDATA[
    {
        "image_uri" : "gs://cloud-vision-example/parking-signs1.jpg"
    }
    ]]></Input>
    <Output>vision.text.retrieved</Output>
</ConnectorCallout>

次の Assign Message ポリシーは、拡張機能のレスポンスを格納する変数の値を使用して、レスポンス ペイロードを割り当てます。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Image-Text">
    <DisplayName>Get Image Text</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{vision.text.retrieved}</Payload>
    </Set>
</AssignMessage>

駐車ログ内に標識を含む画像があると、次のようなレスポンスが返されることがあります。

{
  "text": [
      {
          "locations": [

          ],
          "properties": [

          ],
          "mid": "",
          "locale": "en",
          "description": "RESERVED\nVISITORPARKING\nPARKING\nONLY>\n$150 FINE\n",
          "score": 0,
          "confidence": 0,
          "topicality": 0,
          "boundingPoly": {
              "vertices": [
                  {
                      "x": 64,
                      "y": 56
                  },
                  {
                      "x": 378,
                      "y": 56
                  },
                  {
                      "x": 378,
                      "y": 218
                  },
                  {
                      "x": 64,
                      "y": 218
                  }
              ]
          }
      },
      {
          "locations": [

          ],
          "properties": [

          ],
          "mid": "",
          "locale": "",
          "description": "RESERVED",
          "score": 0,
          "confidence": 0,
          "topicality": 0,
          "boundingPoly": {
              "vertices": [
                  {
                      "x": 243,
                      "y": 56
                  },
                  {
                      "x": 378,
                      "y": 56
                  },
                  {
                      "x": 378,
                      "y": 84
                  },
                  {
                      "x": 243,
                      "y": 84
                  }
              ]
          }
      }
   ]
}

アクション

detectLabels

指定された画像内のエンティティに関する情報を検出して抽出します。検出されたエンティティは、幅広いカテゴリにまたがっています。たとえば、このアクションを使用してオブジェクト、場所、アクティビティ、動物の種類、商品などを識別します。

また、Cloud Vision API のドキュメントもご覧ください。

リクエスト パラメータ

パラメータ 説明 種類 デフォルト 必須
image_uri 画像のソース。インターネットまたは Google Cloud Storage から取得できます(形式: gs://bucketname/filename)。ソースが Google Cloud Storage の場合、画像ファイルは公開されている必要があります。 文字列 なし。 はい、できます。

構文

<Input><![CDATA[{
    "image_uri" : "uri-of-image-to-analyze"
}
]]></Input>

次の例では、拡張機能の detectLabels アクションが、指定された画像を Vision API に送信して分析します。

<Input><![CDATA[
{
    "image_uri" : "gs://cloud-vision-example/empire-state-building.jpg"
}
]]></Input>

レスポンス

画像内で検出されたエンティティを表すラベルの labels 配列を含むオブジェクト。詳細については、ラベルを検出するをご覧ください。

detectText

指定された画像からテキストを検出して抽出します。

リクエスト パラメータ

パラメータ 説明 種類 デフォルト 必須
image_uri 画像のソース。インターネットまたは Google Cloud Storage から取得できます(形式: gs://bucketname/filename)。ソースが Google Cloud Storage の場合、画像ファイルは公開されている必要があります。 文字列 なし。 はい、できます。

構文

<Input><![CDATA[
{
    "image_uri" : "uri-of-image-to-analyze"
}
]]></Input>

次の例では、拡張機能の detectText アクションが、指定された画像を Vision API に送信して分析します。

<Input><![CDATA[
{
    "image_uri" : "gs://cloud-vision-example/parking-signs1.jpg"
}
]]></Input>

レスポンス

検出されたテキストの text 配列を含むオブジェクト。詳細については、ラベルを検出するをご覧ください。

構成リファレンス

API プロキシで使用するためにこの拡張機能を構成およびデプロイする場合は、以下を使用します。Apigee コンソールを使用して拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

共通の拡張プロパティ

すべての拡張機能には次のプロパティがあります。

プロパティ 説明 デフォルト 必須
name この拡張機能に付ける名前。 なし
packageName Apigee Edge から提供された拡張機能パッケージの名前。 なし
version 拡張機能を構成する拡張機能パッケージのバージョン番号。 なし
configuration 追加する拡張機能に固有の構成値。この拡張機能パッケージのプロパティをご覧ください。 なし