APIs e Microsserviços

APIs e Microsserviços

Consumindo a API do Google Vision com PHP

27 out, 2017
Publicidade

Uma das APIs mais recentes do Google – talvez não tão recente assim, já que está a mais de um ano em produção – é a API do Google Vision, onde, ela oferece funções de visão computacional para imagens que você envia para a API, fornecendo desde contextos presentes na imagem, quanto OCR (reconhecimento óptico de caracteres). Para saber mais sobre as funcionalidades do Google Vision API, sugiro que veja o site oficial https://cloud.google.com/vision/?hl=pt-br. Seu uso é grátis para estudo (até 1000 requisições por mês).

Antes de tudo, você deverá ter um projeto ativo no Google Cloud com a opção do Google Vision API ativada. https://cloud.google.com

Vamos ver como é fácil usar essa API utilizando PHP. Para isso, utilizaremos uma biblioteca quase oficial, já que essa é a biblioteca recomendada pelo próprio Google. https://github.com/jordikroon/Php-Google-Vision-Api

Para iniciar o projeto, basta seguir o fluxo do composer. Então no seu terminal, crie uma pasta e digite:

composer require jordikroon/google-vision

Será baixado todo o projeto para integração com o Google Vision.

Para realizar a integração, você deverá fornecer a sua chave de API do Google Cloud.

Para descobrir qual é a sua chave de API, basta acessar seu console do Google Cloud em: https://cloud.google.com, abrir o projeto que possua a habilitação para uso do Google Vision API, e depois ir em API e Serviços -> Credenciais.

Então é só copiar e colar a chave da API.

 

Crie então um arquivo credentials.php na pasta do projeto para armazenar sua credencial do Google Vision.

<?php

$visionKey = ‘sua chave de API’;

Com o Google Vision API, você pode: categorizar imagens, detectar conteúdo explícito (violência, nudez, etc), detectar logotipos, realizar reconhecimento óptico de caracteres, detectar pessoas famosas ou pontos de referência, reconhecer características de imagens, etc.

Mas hoje vamos utilizar duas dessas funcionalidades. A categorização de imagens e o reconhecimento óptico. Vamos utilizar a imagem desse gato para os testes.

Salvamos essa imagem como cat.jpg, colocamos na pasta do projeto e vamos que vamos.

Abaixo está o código para categorização. Nomeei o arquivo como: visionLabel.php.

<?php

namespace Vision;

include_once 'credentials.php'; // inclusão do arquivo de credenciais

//autoload dos namespaces e classes
use Vision\Vision;
use Vision\Image;
use Vision\Feature;

require_once('vendor/autoload.php');

//instanciando a classe de client do Vision, passando a chave da API e o tipo de funcionalidade, no caso o Label Detection
$vision = new Vision(
    $visionKey, 
    [
        new \Vision\Feature(Feature::LABEL_DETECTION, 100),
    ]
);

//enviando a imagem do gato e realizando a request.
$imagePath = 'cat.jpg';
$response = $vision->request(
    new Image($imagePath)
);

//recebendo as categorias´.
$labels = $response->getLabelAnnotations();

//iterando as categorias e imprimindo na tela os resultados
foreach ($labels as $label) {

    print ($label->getDescription() . PHP_EOL);

}

Então, basta dar um:

php visionLabel.php

E esperar o resultado.

Simples, né? Com o mesmo código você consegue listar a categoria que a API entender para qualquer imagem.

Agora, para fazermos o reconhecimento óptico é bem semelhante. Mudamos apenas as propriedades da requisição e o método de retorno. No caso, utilizei o nome visionText.php

<?php

namespace Vision;

include_once 'credentials.php'; // inclusão do arquivo de credenciais

//autoload dos namespaces e classes
use Vision\Vision;
use Vision\Image;
use Vision\Feature;

require_once('vendor/autoload.php');

//instanciando a classe de client do Vision, passando a chave da API e o tipo de funcionalidade, no caso o Text Detection
$vision = new Vision(
    $visionKey, 
    [
        // See a list of all features in the table below
        // Feature, Limit
        new \Vision\Feature(Feature::TEXT_DETECTION, 100),
    ]
);

//enviando a imagem do gato e realizando a request.
$imagePath = 'cat.jpg';
$response = $vision->request(
    new Image($imagePath)
);

//recebendo o texto
$texts = $response->getTextAnnotations();

//iterando as palavras e imprimindo na tela os resultados
foreach ($texts as $text) {

    print ($text->getDescription(). ' ');

}

Agora basta executar o seguinte comando:

php visionText.php

E esperar o resultado.

Ele se perde um pouco, junta algumas palavras, mas dá para ser refinado.

Bem galera, espero que tenham gostado do artigo de hoje. Semana que vem tem mais.

Abraços!