Audiencia
El objetivo de este tutorial es ayudarte a desarrollar aplicaciones con la API Cloud Vision de Google para detectar texto en documentos. Se presupone que conoces las estructuras y técnicas de programación básicas, pero, aunque seas un programador principiante, deberías poder seguir y ejecutar este tutorial sin dificultad, y luego usar la documentación de referencia de la API Cloud Vision para crear aplicaciones básicas.
Requisitos previos
- Configura un proyecto de la API Cloud Vision en la Google Cloud consola.
Configura tu entorno para usar credenciales predeterminadas de la aplicación.
Python
- Instala Python.
- Instala pip.
- Instala la biblioteca de cliente de Google Cloud y la biblioteca de imágenes de Python.
Anotar una imagen con la función de OCR de texto de documento
En este tutorial se explica cómo crear una aplicación básica de la API Vision que hace una DOCUMENT_TEXT_DETECTION solicitud y, a continuación, procesa la fullTextAnnotation
respuesta.
Un fullTextAnnotation es una respuesta jerárquica estructurada del texto UTF-8 extraído de la imagen, organizado 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 ser diferentes).Blockrepresenta un elemento "lógico" de la página; por ejemplo, un área cubierta por texto, una imagen o un separador entre columnas. Los bloques de texto y de tabla contienen la información principal necesaria para extraer el texto.Paragraphes una unidad estructural de texto que representa una secuencia ordenada de palabras. De forma predeterminada, se considera que las palabras están separadas por saltos de palabra.Wordes la unidad de texto más pequeña. Se representa como una matriz de símbolos.Symbolrepresenta un carácter o un signo de puntuación.
La fullTextAnnotation también puede proporcionar URLs de imágenes web que coincidan parcial o totalmente con la imagen de la solicitud.
Fragmento de código completo
Mientras lees el código, te recomendamos que consultes la referencia de Python de la API Cloud Vision.
Esta sencilla aplicación realiza las siguientes tareas:
- Importa las bibliotecas necesarias para ejecutar la aplicación
- Toma tres argumentos y los transfiere a la función
main():image_file: el archivo de imagen de entrada que se va a anotar.output_file: nombre del archivo de salida en el que Cloud Vision generará una imagen de salida con los polígonos dibujados.
- Crea una instancia de
ImageAnnotatorClientpara interactuar con el servicio. - Envía la solicitud y devuelve una respuesta.
- Crea una imagen de salida con cuadros dibujados alrededor del texto.
Análisis detallado del código
Importar bibliotecas
Importamos bibliotecas estándar:
argparsepara permitir que la aplicación acepte nombres de archivos de entrada como argumentosenumpara la enumeraciónFeatureTypeiopara E/S de archivos
Otras importaciones:
- La clase
ImageAnnotatorClientde la bibliotecagoogle.cloud.visionpara acceder a la API Vision. - El módulo
typesde la bibliotecagoogle.cloud.visionpara crear solicitudes. - Las bibliotecas
ImageyImageDrawde la bibliotecaPILse usan para crear la imagen de salida con los recuadros dibujados en la imagen de entrada.
Ejecutar la aplicación
Aquí, simplemente analizamos los argumentos transferidos y los transferimos a la función render_doc_text().
Autenticar a la API
Antes de comunicarte con el servicio de la API Vision, debes autenticar tu servicio con las credenciales que hayas obtenido previamente. En una aplicación, la forma más sencilla de obtener credenciales es usar las credenciales predeterminadas de la aplicación (ADC). De forma predeterminada, la biblioteca de cliente de Cloud intentará obtener las credenciales de la variable de entorno GOOGLE_APPLICATION_CREDENTIALS, que debe configurarse para que apunte al archivo de clave JSON de tu cuenta de servicio (consulta Configurar una cuenta de servicio para obtener más información).
Hacer la solicitud a la API y leer los límites del texto de la respuesta
Ahora que nuestro servicio de la API Vision está listo, podemos acceder a él llamando al método document_text_detection de la instancia ImageAnnotatorClient.
La biblioteca de cliente encapsula los detalles de las solicitudes y respuestas a la API. Consulta la referencia de la API Vision para obtener información completa sobre la estructura de una solicitud.
Una vez que la biblioteca de cliente haya gestionado la solicitud, nuestra respuesta contendrá un objeto AnnotateImageResponse, que consta de una lista de resultados de anotación de imagen, uno por cada imagen enviada en la solicitud. Como solo hemos enviado una imagen en la solicitud, vamos a analizar el TextAnnotation completo y a recoger los límites de la función del documento especificada.
Ejecutar la aplicación
Para ejecutar la aplicación, puedes descargar este archivo receipt.jpg (puede que tengas que hacer clic con el botón derecho en el enlace) y, a continuación, pasar la ubicación donde descargaste el archivo en tu máquina local a la aplicación del tutorial (doctext.py).
Aquí tienes 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 palabras en recuadros amarillos y frases en rojo.
¡Enhorabuena! Has realizado la detección de texto con las anotaciones de texto completo de Google Cloud Vision.