Público
El objetivo de este instructivo es ayudarte a desarrollar aplicaciones con la detección de texto en documentos de la API de Google Cloud Vision. Suponemos que estás familiarizado con las construcciones y las técnicas de programación básicas. Sin embargo, aunque seas un programador principiante, podrás seguir y ejecutar este instructivo sin dificultad y, luego, usar la documentación de referencia de la API de Cloud Vision para crear aplicaciones básicas.
Requisitos previos
- Configura un proyecto de la API de Cloud Vision en la Google Cloud consola.
Configura tu entorno para usar las credenciales predeterminadas de la aplicación.
Python
- Instala Python.
- Instala pip.
- Instala la biblioteca cliente de Google Cloud y la biblioteca de imágenes de Python.
Anota una imagen con OCR de texto en documentos
En este instructivo, se muestra una aplicación básica de la API de Vision que realiza una solicitud DOCUMENT_TEXT_DETECTION y, luego, procesa la respuesta fullTextAnnotation.
Un fullTextAnnotation es una respuesta jerárquica estructurada para el texto UTF-8 extraído de la imagen, organizada como Páginas → Bloques → Párrafos → Palabras → Símbolos:
Pagees una colección de bloques, además de metainformación sobre la página: tamaños, resoluciones (la resolución X y la resolución Y pueden variar).Blockrepresenta un elemento “lógico” de la página, por ejemplo, un área cubierta por un texto, una imagen o un separador entre columnas. Los bloques de texto y tabla contienen la información principal necesaria para extraer el texto.Paragraphes una unidad estructural de texto que representa una secuencia ordenada de palabras. Según la configuración predeterminada, se considera que las palabras están separadas por saltos de línea.Wordes la unidad de texto más pequeña. Se representa como un arreglo de símbolos.Symbolrepresenta un carácter o un signo de puntuación.
El fullTextAnnotation también puede proporcionar URL a imágenes web que coinciden de forma parcial o total con la imagen en la solicitud.
Muestra el código completo
A medida que leas el código, te recomendamos que consultes la referencia de la API de Cloud Vision para Python.
Esta aplicación simple ejecuta las siguientes tareas:
- Importa las bibliotecas necesarias para ejecutar la aplicación.
- Toma tres argumentos y los pasa a la función
main():image_file: Es el archivo de imagen de entrada que se anotaráoutput_file: Es el nombre de archivo de salida en el que Cloud Vision generará una imagen de salida con dibujos de polyboxes.
- Crea una instancia
ImageAnnotatorClientpara interactuar con el servicio - Envía la solicitud y muestra una respuesta.
- Crea una imagen de salida con cuadros dibujados alrededor del texto.
Un análisis más detallado del código
Importa bibliotecas
Importamos las siguientes bibliotecas estándar:
argparsepara permitir que la aplicación acepte los nombres de archivos de entrada como argumentosenumpara la enumeraciónFeatureTypeiopara la E/S de archivos
Otras importaciones son:
- La clase
ImageAnnotatorClientdentro de la bibliotecagoogle.cloud.visionpara acceder a la API de Vision. - El módulo
typesdentro de la bibliotecagoogle.cloud.visionpara crear solicitudes - Las bibliotecas
ImageyImageDrawde la biblioteca dePILse usan para crear la imagen de salida con cuadros dibujados en la imagen de entrada.
Ejecuta la aplicación
Aquí, simplemente analizamos los argumentos ingresados y los pasamos a la función render_doc_text().
Autenticar en la API
Antes de comunicarte con el servicio de la API de Vision, debes autenticar tu servicio con las credenciales ya adquiridas. Dentro de una aplicación, la manera más simple de obtener credenciales es usar las Credenciales predeterminadas de la aplicación (ADC). Según la configuración predeterminada, la biblioteca cliente de Cloud intentará obtener credenciales de la variable de entorno GOOGLE_APPLICATION_CREDENTIALS que debería estar configurada para apuntar al archivo de claves JSON de tu cuenta de servicio (consulta Configura una cuenta de servicio a fin de obtener más información).
Realiza una solicitud de API y lee los límites de textos de la respuesta
Ahora que tu servicio de la API de Vision está listo, podemos acceder al servicio mediante una llamada al método document_text_detection de la instancia ImageAnnotatorClient.
La biblioteca cliente abarca los detalles de las solicitudes y respuestas a la API. Consulta la referencia de la API de Vision para obtener información completa sobre la estructura de una solicitud.
Una vez que la biblioteca cliente controla la solicitud, nuestra respuesta contendrá una AnnotateImageResponse que consiste de una lista de resultados de anotación de imagen, una para cada imagen enviada en la solicitud. Debido a que solo enviamos una imagen en la solicitud, repasaremos TextAnnotation completa y recopilaremos los límites para la característica del documento especificado.
Ejecuta la aplicación
Para ejecutar la aplicación, puedes descargar este archivo receipt.jpg (es posible que debas hacer clic con el botón derecho en el vínculo) y, luego, pasar la ubicación donde descargaste el archivo en tu máquina local a la aplicación del instructivo (doctext.py).
Aquí está el comando de Python, seguido de las imágenes de salida de la anotación de texto.
$ python doctext.py receipt.jpg -out_file out.jpg
En la siguiente imagen, se muestran las palabras en los cuadros amarillos y las oraciones en rojo.
¡Felicitaciones! ¡Realizaste la detección de texto con las anotaciones de texto completo de Google Cloud Vision!