Расширение Google Cloud Vision

Вы просматриваете документацию по Apigee Edge.
Перейдите к документации по Apigee X.
Информация

Версия: 2.0.0

Распознавайте контент и текст на изображениях с помощью моделей машинного обучения.

В нем приведена информация о том, как настроить и использовать это расширение. Прежде чем использовать это расширение в прокси-сервере API, необходимо:

  1. Включите Cloud Vision API для сервисного аккаунта.

  2. Если вы будете использовать Cloud Storage в качестве источника изображений, вам также нужно будет предоставить этому расширению доступ к Cloud Storage, как описано в справочнике по расширению Google Cloud Storage.

  3. Если у вас есть сервисный аккаунт с разрешением на использование Cloud Vision (и Cloud Storage, если вы его используете), создайте ключ для сервисного аккаунта в консоли Google Cloud.

  4. Используйте содержимое полученного JSON-файла ключа при добавлении и настройке расширения, следуя инструкциям по настройке.

О Cloud Vision

Google Cloud Vision API использует модели машинного обучения для анализа изображений. Вы можете обучить модель для использования в API или использовать встроенную модель.

Встроенная модель Cloud Vision классифицирует изображения по категориям, например "небоскреб", "парусник", "лев" или "Эйфелева башня". Он распознает объекты, лица, логотипы и достопримечательности на изображениях, а также определяет слова, которые на них есть.

Примеры

В примерах ниже показано, как настроить поддержку действий расширения Cloud Vision с помощью правила ExtensionCallout.

Обнаружение ярлыков

В следующем примере действие 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 Значение конфигурации, относящееся к добавляемому расширению. См. Свойства этого пакета расширения. Никто Да