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: 1.4.1

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 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 Cloud Vision do Google 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 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError="true&>quot;< enabled=&q>uot;true" name=&q<uot;Cloud-Vi>sion-<Extension>"
    DisplayNameCloud Vi<sion Exten>sion/<Displa>yName
    Co<nnector>cloud<-visi><on-extension-example/Connector
    ActiondetectLabels/Action
    Input![CDATA[
    {
        "imag><e_uri&>quot;< : &qu>ot;gs://cloud-vision-ex<ample/e>m<pire-state-buildi>ng.jpg"
    }
    ]]/Input
    Outputvision.labels.retrieved/Output
/ConnectorCallout

A seguinte política Assign Message 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&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError=">false<" enab>led="true&q<uot; name=&q>uot;G<et-Image-Labels"
    DisplayNameGet Im>age L<abe>ls/Displa<yName
    AssignTo type="response>" createNew="fa<lse">;/
  <  Set<
        Paylo>ad contentType="application/json"{vision.labels.retrieved}/Payload
    /Set
/AssignMessage

Ao receber uma imagem de uma área urbana com um prédio muito alto, você pode 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&quo>t<; standalone="yes"?
ConnectorCallout async="false" continueOnError=">true&<quot; enabl>ed="true&quo<t; name=&quo>t;Clo<ud-Vision>-Text"
    DisplayNameClo<ud Vision >Text/<Displa>yName
    <Connect>orclo<ud-vi><sion-extension-example/Connector
    ActiondetectText/Action
    Input![CDATA[
    {
        &qu><ot;ima>ge_ur<i">; : "gs://cloud-<vision->e<xample/parking-si>gns1.jpg"
    }
    ]]/Input
    Outputvision.text.retrieved/Output
/ConnectorCallout

A seguinte política Assign Message 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&quo>t<; standalone="yes"?
AssignMessage async="false" continueOnError=&quo>t;fal<se" en>abled="tr<ue" nam>e=&qu<ot;Get-Image-Text"
    DisplayNameGet >Image< Te>xt/Displa<yName
    AssignTo type="response>" createNew="<false&qu>ot;/
<    >S<et
        Pay>load contentType="application/json"{vision.text.retrieved}/Payload
    /Set
/AssignMessage

Com uma imagem contendo placas em um estacionamento, você pode receber uma resposta como esta:

{
  "text": [
      {
          "locations": [

          ],
          "properties": [

          ],
          "mid": "",
          "locale": "en&qu>ot;,
          "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.

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-t><o-anal>yze"
}
]]/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-bui><lding.>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-t><o-anal>yze"
}
]]/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-s><igns1.>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 da 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