Extensão do Google Cloud Vision

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Versão: 1.4.1

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

Este conteúdo fornece referência para configurar e usar essa extensão. Antes de usar essa extensão de 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 precisará conceder acesso a essa extensão ao Cloud Storage, conforme descrito na Referência de extensões do Google Cloud Storage.

  3. Quando uma conta de serviço tiver permissão para o Cloud Vision (e o Cloud Storage, se você o 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 da 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 aprendizado de máquina 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". Ele detecta objetos, rostos, logotipos e pontos de referência nas imagens e localiza palavras contidas nelas.

Amostras

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

Detectar rótulos

No exemplo a seguir, a ação detectLabels da extensão recebe a imagem em image_uri e a transmite à 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 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>

Dada a imagem de uma área urbana com um prédio muito alto nela, você pode receber uma resposta como a seguinte:

{
  "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 à API Cloud Vision para análise. A API vai examinar a imagem, identificando 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 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>

Ao receber uma imagem com placas em um registro de 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 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.

Além disso, consulte 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. Ele 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 à API Vision para análise.

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

Resposta

Um objeto contendo 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. Ele 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 à API Vision para análise.

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

Resposta

Um objeto contendo 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 esta extensão para uso em proxies de API. Para ver as etapas para configurar uma extensão usando o console da Apigee, consulte Como 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