Découvrez comment effectuer la reconnaissance optique des caractères (OCR) sur Google Cloud Platform. Ce tutoriel explique comment importer des fichiers images sur Google Cloud Storage, extraire le texte des images à l'aide de l'API Google Cloud Vision, traduire le texte avec l'API Google Cloud Translation et enregistrer vos traductions dans Cloud Storage. Google Cloud Pub/Sub permet de mettre différentes tâches en attente et de déclencher les fonctions Cloud nécessaires à leur exécution.
Pour en savoir plus sur l'envoi d'une requête de détection de texte (OCR), consultez la page Détecter du texte dans les images, Détecter l'écriture manuscrite dans les images ou Détecter le texte dans les fichiers (PDF/TIFF).
Objectifs
- Rédiger et déployer plusieurs fonctions cloud d'arrière-plan
- Importer des images dans Cloud Storage
- Extraire, traduire et enregistrer le texte contenu dans les images importées
Coûts
Ce tutoriel utilise les composants facturables suivants de Google Cloud :
- Cloud Functions
- Pub/Sub
- Cloud Storage
- API Cloud Translation
- Cloud Vision
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Avant de commencer
- Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activer les API Cloud Functions, Cloud Build, Cloud Pub/Sub, Cloud Storage, Cloud Translation, and Cloud Vision.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
-
Activer les API Cloud Functions, Cloud Build, Cloud Pub/Sub, Cloud Storage, Cloud Translation, and Cloud Vision.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
- Préparez votre environnement de développement.
Si gcloud CLI est déjà installé, mettez-le à jour en exécutant la commande suivante :
gcloud components update
Visualiser le flux de données
Le flux de données dans l'application du tutoriel OCR comprend plusieurs étapes :
- Une image contenant du texte dans n'importe quelle langue est importée dans Cloud Storage.
- Une fonction Cloud utilisant l'API Vision pour extraire le texte et détecter la langue source est déclenchée.
- Le texte est mis en file d'attente pour traduction en publiant un message dans un sujet Pub/Sub. Une traduction est mise en file d'attente pour chaque langue cible différente de la langue source.
- Si une langue cible correspond à la langue source, la file d'attente de traduction est ignorée et le texte est envoyé à la file d'attente des résultats, autre sujet Pub/Sub.
- Une fonction Cloud utilise l'API Translation pour traduire le texte dans la file d'attente de traduction. Le résultat traduit est envoyé à la file d'attente des résultats.
- Une autre fonction Cloud enregistre le texte traduit depuis la file d'attente des résultats dans Cloud Storage.
- Les résultats s'affichent dans Cloud Storage sous la forme de fichiers texte pour chaque traduction.
Observez le schéma ci-dessous pour visualiser les étapes :
Préparer l'application
Créez un bucket Cloud Storage pour importer des images, où
YOUR_IMAGE_BUCKET_NAME
est un nom de bucket unique :gsutil mb gs://
YOUR_IMAGE_BUCKET_NAME
Créez un bucket Cloud Storage pour enregistrer les traductions de texte, où
YOUR_RESULT_BUCKET_NAME
est un nom de bucket unique :gsutil mb gs://
YOUR_RESULT_BUCKET_NAME
Créez un sujet Cloud Pub/Sub pour publier les requêtes de traduction, où
YOUR_TRANSLATE_TOPIC_NAME
est le nom de votre sujet de requête de traduction :gcloud pubsub topics create
YOUR_TRANSLATE_TOPIC_NAME
Créez un sujet Cloud Pub/Sub pour publier les résultats d'une traduction terminée, où
YOUR_RESULT_TOPIC_NAME
est le nom de votre sujet de résultat de traduction :gcloud pubsub topics create
YOUR_RESULT_TOPIC_NAME
Clonez le dépôt de l'exemple d'application sur votre machine locale :
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire qui contient l'exemple de code de Cloud Functions :
Node.js
cd nodejs-docs-samples/functions/ocr/app/
Python
cd python-docs-samples/functions/ocr/app/
Go
cd golang-samples/functions/ocr/app/
Java
cd java-docs-samples/functions/ocr/ocr-process-image/
Comprendre le code
Importer des dépendances
L'application doit importer plusieurs dépendances afin de pouvoir communiquer avec les services Google Cloud Platform :
Node.js
Python
Go
Java
Traiter les images
La fonction suivante lit un fichier image importé depuis Cloud Storage et appelle une fonction pour détecter la présence de contenu texte dans l'image :
Node.js
Python
Go
Java
La fonction suivante extrait le texte de l'image à l'aide de l'API Cloud Vision, et met le texte en file d'attente de traduction :
Node.js
Python
Go
Java
Traduire le texte
La fonction suivante traduit le texte extrait et met en file d'attente le texte traduit à renvoyer dans Cloud Storage pour enregistrement :
Node.js
Python
Go
Java
Enregistrer les traductions
Enfin, la fonction suivante reçoit le texte traduit et l'enregistre dans Cloud Storage :
Node.js
Python
Go
Java
Déployer les fonctions
Pour déployer la fonction de traitement d'images avec un déclencheur Cloud Storage, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou, dans le cas de Java, le fichier
pom.xml
) :Node.js
gcloud functions deploy ocr-extract \ --runtime nodejs18 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-bucket YOUR_IMAGE_BUCKET_NAME \
--entry-point processImage \
--set-env-vars "^:^GCP_PROJECT=YOUR_GCP_PROJECT_ID:TRANSLATE_TOPIC=YOUR_TRANSLATE_TOPIC_NAME:RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME:TO_LANG=es,en,fr,ja"--runtime
, afin de spécifier votre version préférée de Node.js :nodejs18
(recommandé)nodejs16
nodejs14
nodejs12
nodejs10
Python
gcloud functions deploy ocr-extract \ --runtime python311 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-bucket YOUR_IMAGE_BUCKET_NAME \
--entry-point process_image \
--set-env-vars "^:^GCP_PROJECT=YOUR_GCP_PROJECT_ID:TRANSLATE_TOPIC=YOUR_TRANSLATE_TOPIC_NAME:RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME:TO_LANG=es,en,fr,ja"--runtime
, afin de spécifier votre version préférée de Python :python311
(recommandé)python310
python39
python38
python37
Go
gcloud functions deploy ocr-extract \ --runtime go119 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-bucket YOUR_IMAGE_BUCKET_NAME \
--entry-point ProcessImage \
--set-env-vars "^:^GCP_PROJECT=YOUR_GCP_PROJECT_ID:TRANSLATE_TOPIC=YOUR_TRANSLATE_TOPIC_NAME:RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME:TO_LANG=es,en,fr,ja"--runtime
, afin de spécifier votre version préférée de Go :go119
(recommandé)go120
(aperçu)go118
go116
go113
Java
gcloud functions deploy ocr-extract \ --entry-point functions.OcrProcessImage \ --runtime java17 \ --memory 512MB \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-bucket YOUR_IMAGE_BUCKET_NAME \
--set-env-vars "^:^GCP_PROJECT=YOUR_GCP_PROJECT_ID:TRANSLATE_TOPIC=YOUR_TRANSLATE_TOPIC_NAME:RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME:TO_LANG=es,en,fr,ja"--runtime
, afin de spécifier votre version préférée de Java :java17
(recommandé)java11
où
YOUR_IMAGE_BUCKET_NAME
est le nom de votre bucket Cloud Storage dans lequel vous allez importer des images.Pour déployer la fonction de traduction de texte avec un déclencheur Cloud Pub/Sub, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou, dans le cas de Java, le fichier
pom.xml
) :Node.js
gcloud functions deploy ocr-translate \ --runtime nodejs18 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_TRANSLATE_TOPIC_NAME \
--entry-point translateText \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME"--runtime
, afin de spécifier votre version préférée de Node.js :nodejs18
(recommandé)nodejs16
nodejs14
nodejs12
nodejs10
Python
gcloud functions deploy ocr-translate \ --runtime python311 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_TRANSLATE_TOPIC_NAME \
--entry-point translate_text \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME"--runtime
, afin de spécifier votre version préférée de Python :python311
(recommandé)python310
python39
python38
python37
Go
gcloud functions deploy ocr-translate \ --runtime go119 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_TRANSLATE_TOPIC_NAME \
--entry-point TranslateText \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME"--runtime
, afin de spécifier votre version préférée de Go :go119
(recommandé)go120
(aperçu)go118
go116
go113
Java
gcloud functions deploy ocr-translate \ --entry-point functions.OcrTranslateText \ --runtime java17 \ --memory 512MB \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_TRANSLATE_TOPIC_NAME \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_TOPIC=YOUR_RESULT_TOPIC_NAME"--runtime
, afin de spécifier votre version préférée de Java :java17
(recommandé)java11
Pour déployer la fonction qui enregistre les résultats dans Cloud Storage avec un déclencheur Cloud Pub/Sub, exécutez la commande suivante dans le répertoire contenant l'exemple de code (ou dans le cas de Java, le fichier
pom.xml
) :Node.js
gcloud functions deploy ocr-save \ --runtime nodejs18 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_RESULT_TOPIC_NAME \
--entry-point saveResult \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_BUCKET=YOUR_RESULT_BUCKET_NAME"--runtime
, afin de spécifier votre version préférée de Node.js :nodejs18
(recommandé)nodejs16
nodejs14
nodejs12
nodejs10
Python
gcloud functions deploy ocr-save \ --runtime python311 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_RESULT_TOPIC_NAME \
--entry-point save_result \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_BUCKET=YOUR_RESULT_BUCKET_NAME"--runtime
, afin de spécifier votre version préférée de Python :python311
(recommandé)python310
python39
python38
python37
Go
gcloud functions deploy ocr-save \ --runtime go119 \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_RESULT_TOPIC_NAME \
--entry-point SaveResult \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_BUCKET=YOUR_RESULT_BUCKET_NAME"--runtime
, afin de spécifier votre version préférée de Go :go119
(recommandé)go120
(aperçu)go118
go116
go113
Java
gcloud functions deploy ocr-save \ --entry-point functions.OcrSaveResult \ --runtime java17 \ --memory 512MB \
Vous pouvez attribuer les valeurs suivantes à l'option
--trigger-topic YOUR_RESULT_TOPIC_NAME \
--set-env-vars "GCP_PROJECT=YOUR_GCP_PROJECT_ID,RESULT_BUCKET=YOUR_RESULT_BUCKET_NAME"--runtime
, afin de spécifier votre version préférée de Java :java17
(recommandé)java11
Importer une image
Importez une image dans le bucket Cloud Storage approprié :
gsutil cp
PATH_TO_IMAGE
gs://YOUR_IMAGE_BUCKET_NAME
Où :
PATH_TO_IMAGE
est un chemin d'accès à un fichier image (contenant du texte) sur votre système local.YOUR_IMAGE_BUCKET_NAME
est le nom du bucket dans lequel vous importez des images.
Vous pouvez télécharger l'une des images de l'exemple de projet.
Consultez les journaux pour vous assurer que les exécutions sont terminées :
gcloud functions logs read --limit 100
Vous pouvez afficher les traductions enregistrées dans le bucket Cloud Storage que vous avez utilisé pour
YOUR_RESULT_BUCKET_NAME
.
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et les ressources individuelles.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer les fonctions cloud
La suppression de fonctions Cloud Functions ne supprime pas les ressources stockées dans Cloud Storage.
Pour supprimer les fonctions Cloud que vous avez créées dans ce tutoriel, exécutez les commandes suivantes :
gcloud functions delete ocr-extract gcloud functions delete ocr-translate gcloud functions delete ocr-save
Vous pouvez également supprimer des fonctions Cloud Functions à partir de la console Google Cloud.