Extensão do Google Cloud Vision

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

Versão: 2.0.0

Descubra o conteúdo e o texto em imagens usando modelos de aprendizado de máquina.

Este conteúdo oferece 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ê for usar o Cloud Storage como a origem das imagens, também vai precisar conceder acesso ao Cloud Storage para essa extensão, conforme descrito na referência da extensão do Google Cloud Storage.

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

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

Sobre o Cloud Vision

A API Google Cloud Vision 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, a Cloud Vision classifica as imagens em categorias como "arranha-céu", "barco a vela", "leão" ou "Torre Eiffel". Ela detecta objetos, rostos, logotipos e pontos de referência nas imagens e localiza palavras nelas.

Amostras

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

Detectar rótulos

No exemplo a seguir, a ação detectLabels da extensão recebe a imagem no 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 política Atribuir mensagem a seguir usa o valor da variável que armazena a resposta da extensão para atribuir o payload de 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ê receber uma imagem de uma área urbana com um edifício 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 no 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 política Atribuir mensagem a seguir usa o valor da variável que armazena a resposta da extensão para atribuir o payload de 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>

Se você enviar uma imagem com placas em um registro de estacionamento, poderá 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 variam em um amplo grupo de categorias. Por exemplo, use essa ação para identificar objetos, locais, atividades, espécies de animais, produtos e muito mais.

Confira 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 precisa ser público. String Nenhum. Sim.

Sintaxe

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

Exemplo

No exemplo abaixo, 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 precisa ser público. String Nenhum. Sim.

Sintaxe

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

Exemplo

No exemplo abaixo, 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 as informações a seguir ao configurar e implantar essa extensão para uso em proxies de API. Para saber como configurar uma extensão usando o console da Apigee, consulte Adicionar e configurar uma extensão.

Propriedades de extensão comuns

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