Público-alvo
O objetivo deste tutorial é ajudar a desenvolver aplicações através da API Google Cloud Vision Document Text Detection. Parte do princípio de que tem familiaridade com as construções e as técnicas de programação básicas, mas, mesmo que seja um programador iniciante, deve conseguir seguir e executar este tutorial sem dificuldade e, em seguida, usar a documentação de referência da Cloud Vision API para criar aplicações básicas.
Pré-requisitos
- Configure um projeto da Cloud Vision API na Google Cloud consola.
Configure o seu ambiente para usar as Credenciais padrão da aplicação.
Python
- Instale o Python.
- Instale o pip.
- Instale a biblioteca cliente do Google Cloud e a biblioteca de processamento de imagens Python.
Anotar uma imagem com o OCR de texto de documentos
Este tutorial explica passo a passo uma aplicação básica da API Vision que faz um
DOCUMENT_TEXT_DETECTION
pedido e, em seguida, processa a fullTextAnnotation
resposta.
Um fullTextAnnotation
é uma resposta hierárquica estruturada para o texto UTF-8
extraído da imagem, organizado como
Pages→Blocks→Paragraphs→Words→Symbols:
Page
é uma coleção de blocos, além de metainformações sobre a página: tamanhos, resoluções (a resolução X e a resolução Y podem diferir).Block
representa um elemento "lógico" da página, por exemplo, uma área coberta por texto, uma imagem ou um separador entre colunas. Os blocos de texto e tabelas contêm as principais informações necessárias para extrair o texto.Paragraph
é uma unidade estrutural de texto que representa uma sequência ordenada de palavras. Por predefinição, as palavras são consideradas separadas por quebras de palavras.Word
é a unidade de texto mais pequena. É representada como uma matriz de símbolos.Symbol
representa um caráter ou uma marca de pontuação.
O elemento fullTextAnnotation
também pode fornecer URLs de imagens Web que correspondam parcial ou totalmente à imagem no pedido.
Listagem de código completa
À medida que lê o código, recomendamos que o siga consultando a referência Python da Cloud Vision API.
Esta aplicação simples realiza as seguintes tarefas:
- Importa as bibliotecas necessárias para executar a aplicação
- Recebe três argumentos e transmite-os à função
main()
:image_file
: o ficheiro de imagem de entrada a anotaroutput_file
—o nome do ficheiro de saída no qual o Cloud Vision vai gerar uma imagem de saída com caixas poligonais desenhadas
- Cria uma instância do
ImageAnnotatorClient
para interagir com o serviço - Envia o pedido e devolve uma resposta
- Cria uma imagem de saída com caixas desenhadas à volta do texto
Uma visão mais detalhada do código
Importar bibliotecas
Importamos bibliotecas padrão:
argparse
para permitir que a aplicação aceite nomes de ficheiros de entrada como argumentosenum
para a enumeraçãoFeatureType
io
para E/S de ficheiros
Outras importações:
- A classe
ImageAnnotatorClient
na bibliotecagoogle.cloud.vision
para aceder à API Vision. - O módulo
types
na bibliotecagoogle.cloud.vision
para criar pedidos. - As bibliotecas
Image
eImageDraw
da bibliotecaPIL
são usadas para criar a imagem de saída com caixas desenhadas na imagem de entrada.
Executar a aplicação
Aqui, analisamos simplesmente os argumentos transmitidos e transmitimo-los à função render_doc_text()
.
Autenticação na API
Antes de comunicar com o serviço da API Vision, tem de
autenticar o seu serviço através de credenciais adquiridas anteriormente. Numa aplicação, a forma mais simples de obter credenciais é usar as Credenciais padrão da aplicação (ADC). Por predefinição, a biblioteca de cliente do Google Cloud tenta obter credenciais da variável de ambiente GOOGLE_APPLICATION_CREDENTIALS
, que deve ser definida para apontar para o ficheiro de chave JSON da sua conta de serviço (consulte Configurar uma conta de serviço para mais informações).
Fazer o pedido da API e ler os limites do texto da resposta
Agora que o nosso serviço Vision API está pronto, podemos aceder ao serviço chamando o método document_text_detection
da instância ImageAnnotatorClient
.
A biblioteca de cliente encapsula os detalhes dos pedidos e das respostas à API. Consulte a referência da API Vision para ver informações completas sobre a estrutura de um pedido.
Depois de a biblioteca cliente processar o pedido, a nossa resposta vai conter um AnnotateImageResponse, que consiste numa lista de resultados de anotações de imagens, um para cada imagem enviada no pedido. Uma vez que enviámos apenas uma imagem no pedido, percorremos a anotação de texto completa e recolhemos os limites da funcionalidade de documento especificada.
Executar a aplicação
Para executar a aplicação, pode
transferir este ficheiro receipt.jpg
(pode ter de clicar com o botão direito do rato no link)
e, em seguida, transmitir a localização onde transferiu o ficheiro na sua máquina local
para a aplicação do tutorial (doctext.py
).

Segue-se o comando Python, seguido das imagens de saída da anotação de texto.
$ python doctext.py receipt.jpg -out_file out.jpg
A imagem seguinte mostra palavras em caixas amarelas e frases em vermelho.

Parabéns! Fez a deteção de texto com as anotações de texto completo do Google Cloud Vision!