Extensão do Google Cloud Vision

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Versão: 1.4.1

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

Este conteúdo oferece 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 o Cloud Storage for usado como a origem das imagens, conceda também o acesso do Cloud Storage a essa extensão, conforme descrito em 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 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 com 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.

Exemplos

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

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 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 uma imagem de uma área urbana com um prédio muito alto, é possível 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 das extensões detectText recebe a imagem em image_uri e a transmite para a análise da API Cloud Vision. A API vai examinar a imagem, identificando o texto que ela contém.

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

Dada uma imagem contendo placas em um registro de estacionamento, você pode receber uma resposta como a seguinte:

{
  "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 esta 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 saber mais, 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 que contém uma matriz text do texto detectado. Para saber mais, consulte Detectar rótulos.

Referência de configuração

Use o código a seguir ao configurar e implantar a extensão para uso em proxies de API. Para saber como 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