Extensão do Google Cloud Vision

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Versão: 2.0.2

Descubra o conteúdo e o texto nas imagens usando modelos de machine learning.

Este conteúdo fornece uma referência para configurar e usar essa extensão. Antes de usar essa extensão em um proxy de API, você precisa:

  1. Ative a API Cloud Vision para sua conta de serviço.

  2. Se você usar o Cloud Storage como origem das imagens, também precisará conceder acesso a essa extensão ao Cloud Storage, conforme descrito na referência da extensão do Google Cloud Storage.

  3. Quando você tiver uma conta de serviço com permissão para o Cloud Vision (e o Cloud Storage, se estiver usando), use o console do Google Cloud para gerar uma chave para a conta de serviço.

  4. Use o conteúdo do arquivo JSON da chave resultante ao adicionar e configurar a extensão usando a referência de configuração.

Sobre a Cloud Vision

A API Cloud Vision do Google Cloud usa modelos de machine learning para analisar imagens. É possível treinar um modelo para a API usar ou usar o modelo integrado.

Usando o modelo integrado, o Cloud Vision classifica imagens em categorias como "arranha-céu", "veleiro", "leão" ou "Torre Eiffel". Ela detecta objetos, rostos, logotipos e pontos de referência em imagens e localiza palavras contidas nelas.

Amostras

Os exemplos a seguir ilustram como configurar o suporte para ações de extensão da Cloud Vision usando a política ExtensionCallout.

Detectar rótulos

No exemplo a seguir, a ação detectLabels da extensão recebe a imagem em image_uri e a transmite para a API Cloud Vision para análise. A API vai examinar a imagem e determinar quais rótulos se aplicam ao conteúdo dela.

<?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>

A seguinte política Atribuir mensagem usa o valor da variável que armazena a resposta da extensão para atribuir o payload da resposta.

<?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>

Se você enviar uma imagem de uma área urbana com um prédio muito alto, poderá receber uma resposta como esta:

{
  "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
      }
  ]
}

Detectar texto

No exemplo a seguir, a ação detectText das extensões recebe a imagem em image_uri e a transmite para a API Cloud Vision para análise. A API vai examinar a imagem e identificar o texto nela.

<?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>

A seguinte política Atribuir mensagem usa o valor da variável que armazena a resposta da extensão para atribuir o payload da resposta.

<?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>

Com uma imagem que contém placas em um estacionamento, você pode receber uma resposta como esta:

{
  "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
                  }
              ]
          }
      }
   ]
}

Ações

detectLabels

Detecta e extrai informações sobre entidades na imagem especificada. As entidades detectadas abrangem um amplo grupo de categorias. Por exemplo, use essa ação para identificar objetos, locais, atividades, espécies de animais, produtos e muito mais.

Consulte também a documentação da API Cloud Vision.

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
image_uri Origem da imagem. Pode ser da Internet ou do Google Cloud Storage (formato: gs://bucketname/filename). Se a origem for o Google Cloud Storage, o arquivo de imagem precisará ser público. String Nenhum. Sim.

Sintaxe

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

Exemplo

No exemplo a seguir, a ação detectLabels da extensão envia a imagem especificada para a API Vision para análise.

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

Resposta

Um objeto que contém uma matriz labels de rótulos que representam entidades detectadas na imagem. Para mais informações, consulte Detectar rótulos.

detectText

Detecta e extrai texto da imagem especificada.

Parâmetros de solicitação

Parâmetro Descrição Tipo Padrão Obrigatório
image_uri Origem da imagem. Pode ser da Internet ou do Google Cloud Storage (formato: gs://bucketname/filename). Se a origem for o Google Cloud Storage, o arquivo de imagem precisará ser público. String Nenhum. Sim.

Sintaxe

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

Exemplo

No exemplo a seguir, a ação detectText da extensão envia a imagem especificada para a API Vision para análise.

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

Resposta

Um objeto que contém uma matriz text do texto detectado. Para mais informações, consulte Detectar rótulos.

Referência de configuração

Use o seguinte ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console do Apigee, consulte Adicionar e configurar uma extensão.

Propriedades comuns de extensão

As propriedades a seguir estão presentes para cada extensão.

Propriedade Descrição Padrão Obrigatório
name Nome que será dado a esta configuração da extensão. Nenhum Sim
packageName Nome do pacote de extensão fornecido pelo Apigee Edge. Nenhum Sim
version Número da versão do pacote de extensão a partir do qual você está configurando uma extensão. Nenhum Sim
configuration Valor de configuração específico da extensão que você está adicionando. Consulte Propriedades para este pacote de extensão. Nenhum Sim