Audience
L'objectif de ce tutoriel est de vous aider à développer des applications à l'aide de la détection de documents texte de l'API Google Cloud Vision. Il y est supposé que vous maîtrisez les concepts et les techniques de base de la programmation. Mais même si vous êtes un programmeur débutant, vous devriez pouvoir suivre et exécuter ce tutoriel sans difficulté, puis utiliser la documentation de référence de l'API Cloud Vision pour créer des applications de base.
Prérequis
- Configurez un projet d'API Cloud Vision dans la console Google Cloud.
Configurez votre environnement pour utiliser les identifiants par défaut de l'application.
Python
- Installez Python.
- Installez pip.
- Installez la bibliothèque cliente Google Cloud et la bibliothèque de traitement d'images Python Imaging Library.
Annoter une image à l'aide de la reconnaissance optique des caractères d'un document texte
Ce tutoriel vous présente une application de base de l'API Cloud Vision qui envoie une requête DOCUMENT_TEXT_DETECTION
, puis traite la réponse fullTextAnnotation
.
Un fullTextAnnotation
est une réponse hiérarchique structurée pour le texte UTF-8 extrait de l'image. Elle est organisée sous la forme Pages → Blocs → Paragraphes → Mots → Symboles (Page, Block, Paragraph, Word, Symbol) :
Page
est un ensemble de blocs, plus des méta-informations sur la page : tailles, résolutions (la résolution X et la résolution Y peuvent varier).Block
représente un élément "logique" de la page (par exemple, une zone couverte de texte, une image ou un séparateur se trouvant entre des colonnes). Les blocs de texte et de tableau contiennent les principales informations nécessaires à l'extraction du texte.Paragraph
est une unité structurelle de texte représentant une séquence ordonnée de mots. Par défaut, les mots sont considérés comme séparés par des sauts de mot.Word
est la plus petite unité de texte. Elle est représentée sous la forme d'un tableau de symboles.Symbol
représente un caractère ou un signe de ponctuation.
fullTextAnnotation
peut également fournir les URL d'images Web correspondant partiellement ou parfaitement à l'image de la requête.
Intégralité du code
Lors de la lecture du code, nous vous recommandons de vous reporter également la documentation de référence de l'API Cloud Vision pour Python.
Cette application simple effectue les tâches suivantes :
- Elle importe les bibliothèques nécessaires pour exécuter l'application.
- Elle utilise trois arguments qu'elle transmet à la fonction
main()
:image_file
: le fichier image d'entrée à annoter.output_file
: le nom du fichier de sortie dans lequel Cloud Vision générera une image de sortie sur laquelle seront tracés des polygones.
- Elle crée une instance
ImageAnnotatorClient
pour interagir avec le service. - Elle envoie la requête et retourne une réponse.
- Elle crée une image de sortie sur laquelle des cadres sont tracés autour du texte.
En détail
Importer des bibliothèques
Nous importons des bibliothèques standards :
argparse
pour permettre à l'application d'accepter les noms de fichiers d'entrée en tant qu'arguments.enum
pour l'énumérationFeatureType
io
pour les E/S des fichiers.
Autres importations :
- La classe
ImageAnnotatorClient
de la bibliothèquegoogle.cloud.vision
pour l'accès à l'API Cloud Vision. - Le module
types
de la bibliothèquegoogle.cloud.vision
pour la création des requêtes. - Les bibliothèques
Image
etImageDraw
de la bibliothèquePIL
permettent de créer l'image de sortie (image d'entrée sur laquelle ont été tracés des cadres).
Exécuter l'application
Ici, nous analysons simplement les arguments transmis, et nous les transmettons à la fonction render_doc_text()
.
S'authentifier dans l'API
Avant de communiquer avec le service de l'API Vision, vous devez authentifier votre service avec les identifiants précédemment acquis. Dans une application, le moyen le plus simple d'obtenir des identifiants est d'utiliser les identifiants par défaut de l'application. Par défaut, la bibliothèque cliente Cloud tente d'obtenir les identifiants de la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
, laquelle doit être définie pour pointer sur le fichier de clé JSON de votre compte de service (consultez la section relative à la configuration d'un compte de service pour plus d'informations).
Envoyer la requête API et lire les limites du texte à partir de la réponse
Maintenant que notre service d'API Cloud Vision est prêt, nous pouvons accéder au service en appelant la méthode document_text_detection
de l'instance ImageAnnotatorClient
.
La bibliothèque cliente encapsule les informations sur les requêtes adressées à l'API et sur les réponses obtenues. Voir la documentation de référence de l'API Vision pour obtenir des informations complètes sur la structure d'une requête
Une fois la requête traitée par la bibliothèque cliente, la réponse contient un objet AnnotateImageResponse qui consiste en une liste de résultats d'annotation d'image (un par image envoyée dans la requête). Étant donné que nous n'avons envoyé qu'une seule image dans la requête, nous parcourons fullTextAnnotation et nous collectons les limites pour la caractéristique de document spécifiée.
Exécuter l'application
Pour exécuter l'application, vous pouvez télécharger ce fichier receipt.jpg
(vous devrez peut-être effectuer un clic droit sur le lien), puis transmettre l'emplacement du fichier téléchargé sur votre machine locale à l'application de tutoriel (doctext.py
).
Voici la commande Python, suivie de l'image de sortie de l'annotation textuelle.
$ python doctext.py receipt.jpg -out_file out.jpg
Sur l'image ci-dessous, les mots sont dans des cadres jaunes et les phrases dans des cadres rouges.
Félicitations ! Vous avez effectué une détection de texte à l'aide de la réponse fullTextAnnotation de Google Cloud Vision.