Google Cloud Vision 拡張機能

バージョン: 1.2.0

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

ここでは、この拡張機能を構成して使用する方法についてのリファレンスを示します。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 Console で拡張機能を構成する手順については、拡張機能の追加と構成をご覧ください。

拡張機能の共通プロパティ

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

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