GSP927

Présentation
L'API Document AI est une solution de reconnaissance de documents qui permet de mieux comprendre, analyser et utiliser des données non structurées, telles que des documents et des e-mails.
Dans cet atelier, vous allez créer un pipeline de traitement de documents pour analyser automatiquement les documents importés dans Cloud Storage. Le pipeline utilise une fonction Cloud Run avec un processeur de formulaires Document AI pour extraire les données et les stocker dans BigQuery. Si le formulaire inclut des champs d'adresse, les données d'adresse sont envoyées à un sujet Pub/Sub. Cela déclenche une deuxième fonction Cloud Run qui utilise l'API Geocoding pour ajouter des coordonnées et écrit les résultats dans BigQuery.
Ce pipeline simple utilise un processeur de formulaires général pour détecter les données de base d'un formulaire, comme les champs d'adresse étiquetés. Pour les documents plus complexes, Document AI propose des analyseurs spécialisés (qui ne sont pas abordés dans cet atelier) qui extraient des informations détaillées, même sans étiquettes explicites. Par exemple, l'analyseur de factures peut identifier l'adresse et les informations sur le fournisseur à partir d'une facture non étiquetée, grâce à sa compréhension des mises en page de factures courantes.
L'architecture globale que vous allez créer se présente comme suit :

- Importez des formulaires contenant des données d'adresse dans Cloud Storage.
- L'importation déclenche un appel de fonction Cloud Run pour traiter les formulaires.
- Document AI est appelé à partir de la fonction Cloud Run.
- Les données JSON de Document AI sont enregistrées dans Cloud Storage.
- Les données de formulaire sont écrites dans BigQuery par la fonction Cloud Run.
- La fonction Cloud Run envoie les adresses à un sujet Pub/Sub.
- Le message Pub/Sub déclenche une fonction Cloud Run pour le traitement du géocodage.
- L'API Geocoding est appelée à partir d'une fonction Cloud Run.
- Les données de géocodage sont écrites dans BigQuery par la fonction Cloud Run.
Cette architecture utilise des fonctions Cloud Run pour implémenter un pipeline simple, mais les fonctions Cloud Run ne sont pas recommandées pour les environnements de production, car les appels de l'API Document AI peuvent dépasser les délais d'inactivité acceptés par Cloud Run Functions. Cloud Tasks est recommandé pour une solution sans serveur plus robuste.
Points abordés
Dans cet atelier, vous allez apprendre à effectuer les tâches suivantes :
- Activer l'API Document AI
- Déployer des fonctions Cloud Run qui utilisent les API Document AI, BigQuery, Cloud Storage et Pub/Sub
Vous allez configurer une fonction Cloud Run pour effectuer les tâches suivantes :
- Déclencher la function Cloud Run lorsque des documents sont importés dans Cloud Storage
- Utiliser la bibliothèque cliente Document AI pour Python
- Déclencher la function Cloud Run lorsqu'un message Pub/Sub est créé
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Activer Cloud Shell
Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
-
Cliquez sur Activer Cloud Shell
en haut de la console Google Cloud.
-
Passez les fenêtres suivantes :
- Accédez à la fenêtre d'informations de Cloud Shell.
- Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
- Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Activer les API et créer une clé API
Pour cet atelier, vous devez activer les API Document AI, Cloud Run Functions, Cloud Build et Geocoding. Vous créerez ensuite la clé API requise par la fonction Cloud Run de géocodage.
-
Cliquez sur Activer Cloud Shell
en haut de la console Google Cloud.
-
Dans Cloud Shell, saisissez les commandes suivantes pour activer les API requises par l'atelier :
gcloud services enable documentai.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services enable cloudbuild.googleapis.com
gcloud services enable geocoding-backend.googleapis.com
-
Dans la console, accédez au menu de navigation (
), puis cliquez sur API et services > Identifiants.
-
Sélectionnez Créer des identifiants, puis sélectionnez Clé API dans le menu déroulant.
La boîte de dialogue "Clé API créée" affiche la nouvelle clé. Une clé API est une longue chaîne contenant des lettres majuscules et minuscules, des chiffres et des tirets. Par exemple, a4db08b757294ea94c08f2df493465a1.
-
Cliquez sur les trois points sous Actions, puis sur Modifier la clé API dans la boîte de dialogue.
-
Sélectionnez Restreindre la clé dans la section Restrictions relatives aux API pour ajouter des restrictions d'API à votre nouvelle clé API.
-
Cliquez sur la liste déroulante Sélectionner des API, puis saisissez API Geocoding dans la zone de filtre.
-
Sélectionnez API Geocoding, puis cliquez sur OK.
-
Cliquez sur le bouton Enregistrer.
Remarque : Si vous ne trouvez pas l'API Geocoding dans la liste déroulante Restreindre la clé, actualisez la page pour actualiser la liste des API disponibles.
Vérifier que toutes les API requises sont activées
Tâche 2 : Télécharger le code source de l'atelier
Dans cette tâche, vous allez copier les fichiers sources dans Cloud Shell. Ces fichiers incluent le code source des fonctions Cloud Run et les schémas des tables BigQuery que vous allez créer dans l'atelier.
- Dans Cloud Shell, saisissez la commande suivante pour télécharger le code source de cet atelier :
mkdir ./documentai-pipeline-demo
gcloud storage cp -r \
gs://spls/gsp927/documentai-pipeline-demo/* \
~/documentai-pipeline-demo/
Tâche 3 : Créer un processeur de formulaires
Créez une instance du processeur de formulaires générique à utiliser sur la plate-forme Document AI à l'aide de l'analyseur de formulaires spécialisé de Document AI. Ce processeur pourra traiter tous types de documents et extraire tous les contenus textuels qu'il identifie dans un document. Il ne se limite pas au texte imprimé. Il peut traiter du texte manuscrit ou orienté dans n'importe quel sens. De plus, ce processeur prend en charge plusieurs langues. Il comprend aussi comment les éléments de données des formulaires sont liés les uns aux autres, afin que vous puissiez extraire des paires clé/valeur des champs de formulaire assortis d'étiquettes textuelles.
-
Dans la console Google Cloud, saisissez Document AI dans la barre de recherche, puis cliquez sur le résultat correspondant à la page du produit.
-
Cliquez sur Explorer les processeurs, puis sur Analyseur de formulaires pour créer un processeur.
-
Indiquez form-processor comme nom de processeur et sélectionnez la région US (États-Unis) dans la liste.
-
Cliquez sur Créer pour créer le processeur.
Vous configurerez une fonction Cloud Run ultérieurement dans cet atelier avec l'ID et l'emplacement de ce processeur. Ainsi, la fonction Cloud Run utilisera ce processeur spécifique pour traiter les exemples de factures.
Tâche 4 : Créer des buckets Cloud Storage et un ensemble de données BigQuery
Dans cette section, vous allez préparer votre environnement en créant les ressources Google Cloud requises pour votre pipeline de traitement de documents.
Créer des buckets Cloud Storage pour les entrées, les sorties et les archives
Créez des buckets Cloud Storage d'entrée, de sortie et d'archivage pour votre pipeline de traitement de documents.
- Dans Cloud Shell, saisissez la commande suivante pour créer les buckets Cloud Storage pour l'atelier :
export PROJECT_ID=$(gcloud config get-value core/project)
export BUCKET_LOCATION="{{{my_primary_project.default_region|REGION}}}"
gsutil mb -c standard -l ${BUCKET_LOCATION} -b on \
gs://${PROJECT_ID}-input-invoices
gsutil mb -c standard -l ${BUCKET_LOCATION} -b on \
gs://${PROJECT_ID}-output-invoices
gsutil mb -c standard -l ${BUCKET_LOCATION} -b on \
gs://${PROJECT_ID}-archived-invoices
Créer un ensemble de données et des tables BigQuery
Créez un ensemble de données BigQuery et les trois tables de sortie requises pour votre pipeline de traitement de données.
- Dans Cloud Shell, saisissez la commande suivante pour créer les tables BigQuery de l'atelier :
bq --location="US" mk -d \
--description "Form Parser Results" \
${PROJECT_ID}:invoice_parser_results
cd ~/documentai-pipeline-demo/scripts/table-schema/
bq mk --table \
invoice_parser_results.doc_ai_extracted_entities \
doc_ai_extracted_entities.json
bq mk --table \
invoice_parser_results.geocode_details \
geocode_details.json
Vous pouvez accéder à BigQuery dans la console Cloud et inspecter les schémas des tables de l'ensemble de données invoice_parser_results à l'aide de l'espace de travail SQL de BigQuery.
Créer un sujet Pub/Sub
Initialisez le sujet Pub/Sub utilisé pour déclencher les opérations d'enrichissement des données de l'API Geocoding dans le pipeline de traitement
- Dans Cloud Shell, saisissez la commande suivante pour créer les sujets Pub/Sub de l'atelier :
export GEO_CODE_REQUEST_PUBSUB_TOPIC=geocode_request
gcloud pubsub topics \
create ${GEO_CODE_REQUEST_PUBSUB_TOPIC}
Vérifier que l'ensemble de données BigQuery, les buckets Cloud Storage et le sujet Pub/Sub ont été créés
Tâche 5 : Créer des fonctions Cloud Run
Créez les deux fonctions Cloud Run que votre pipeline de traitement des données va utiliser pour traiter les factures importées dans Cloud Storage. Ces fonctions utilisent l'API Document AI pour extraire les données des formulaires à partir des documents bruts, puis l'API Geocoding pour récupérer les données de géolocalisation concernant les informations d'adresse extraites des documents.
Vous pouvez examiner le code source des deux fonctions Cloud Run à l'aide de l'éditeur de code ou de tout autre éditeur de votre choix. Les fonctions Cloud Run sont stockées dans les dossiers suivants dans Cloud Shell :
- Process Invoices -
scripts/cloud-functions/process-invoices
- Geocode Addresses -
scripts/cloud-functions/geocode-addresses
La fonction Cloud Run principale, process-invoices, est déclenchée lorsque des fichiers sont importés dans le bucket de stockage des fichiers d'entrée que vous avez créé précédemment.
Le dossier de la fonction scripts/cloud-functions/process-invoices contient les deux fichiers utilisés pour créer la fonction Cloud Run process-invoices.
Le fichier requirements.txt spécifie les bibliothèques Python requises par la fonction. Cela inclut la bibliothèque cliente Document AI, ainsi que les autres bibliothèques Google Cloud requises par le code Python pour lire les fichiers depuis Cloud Storage, enregistrer les données dans BigQuery et écrire des messages dans Pub/Sub qui déclencheront les fonctions restantes du pipeline de la solution.
Le fichier Python main.py contient le code de la fonction Cloud Run qui crée les clients API Document AI, BigQuery et Pub/Sub, ainsi que les fonctions internes suivantes pour traiter les documents :
-
write_to_bq : écrit l'objet de dictionnaire dans la table BigQuery. Notez que vous devez vous assurer que le schéma est valide avant d'appeler cette fonction.
-
get_text : mappe les ancres de texte du nom et de la valeur du formulaire sur le texte scanné dans le document. Cela permet à la fonction d'identifier des éléments de formulaire spécifiques, tels que le nom et l'adresse du fournisseur, et d'extraire la valeur correspondante. Un processeur Document AI spécialisé fournit ces informations contextuelles directement dans la propriété "entities".
-
process_invoice : utilise l'API cliente Document AI asynchrone pour lire et traiter les fichiers de Cloud Storage comme suit :
- Crée une requête asynchrone pour traiter le ou les fichiers qui ont déclenché l'appel de la fonction Cloud Run.
- Traite les données de formulaire pour extraire les champs de facture, en stockant uniquement les champs spécifiques dans un dictionnaire qui fait partie du schéma prédéfini.
- Publie des messages Pub/Sub pour déclencher la fonction Cloud Run de géocodage à l'aide des données de formulaire d'adresse extraites du document.
- Écrit les données de formulaire dans une table BigQuery.
- Supprime les fichiers intermédiaires (de sortie) de l'appel asynchrone vers l'API Document AI.
- Copie les fichiers d'entrée dans le bucket d'archivage.
- Supprime les fichiers d'entrée traités.
La fonction Cloud Run process_invoices ne traite que les données de formulaire détectées avec les noms de champs de formulaire suivants :
input_file_name
address
supplier
invoice_number
purchase_order
date
due_date
subtotal
tax
total
L'autre fonction Cloud Run, geocode-addresses, est déclenchée lorsqu'un nouveau message arrive dans un sujet Pub/Sub. Elle extrait ses données de paramètres du message Pub/Sub.
Créer la fonction Cloud Run pour traiter les documents importés dans Cloud Storage
Créez une fonction Cloud Run qui utilise un processeur de formulaires Document AI pour analyser les documents de formulaire qui ont été importés dans un bucket Cloud Storage.
- Exécutez la commande suivante pour obtenir l'adresse e-mail de l'agent de service Cloud Storage du projet :
gcloud storage service-agent --project=$PROJECT_ID
- Exécutez la commande ci-dessous pour accorder les autorisations requises au compte de service Cloud Storage :
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
gcloud iam service-accounts create "service-$PROJECT_NUMBER" \
--display-name "Cloud Storage Service Account" || true
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com" \
--role="roles/pubsub.publisher"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:service-$PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com" \
--role="roles/iam.serviceAccountTokenCreator"
Remarque : Si le compte de service Cloud Storage existe déjà, vous pouvez ignorer l'erreur.
- Créez la fonction Cloud Run pour le processeur des factures :
cd ~/documentai-pipeline-demo/scripts
export CLOUD_FUNCTION_LOCATION="{{{my_primary_project.default_region|REGION}}}"
gcloud functions deploy process-invoices \
--no-gen2 \
--region=${CLOUD_FUNCTION_LOCATION} \
--entry-point=process_invoice \
--runtime=python39 \
--source=cloud-functions/process-invoices \
--timeout=400 \
--env-vars-file=cloud-functions/process-invoices/.env.yaml \
--trigger-resource=gs://${PROJECT_ID}-input-invoices \
--trigger-event=google.storage.object.finalize
Remarque : Si la commande échoue en raison d'une erreur d'autorisation, patientez une minute et réessayez.
Créer la fonction Cloud Run permettant de rechercher les données de géocodage à partir d'une adresse
Créez la fonction Cloud Run qui accepte les données d'adresse d'un message Pub/Sub et utilise l'API Geocoding pour localiser précisément l'adresse.
- Créez la fonction Cloud Run de géocodage :
cd ~/documentai-pipeline-demo/scripts
gcloud functions deploy geocode-addresses \
--no-gen2 \
--region=${CLOUD_FUNCTION_LOCATION} \
--entry-point=process_address \
--runtime=python39 \
--source=cloud-functions/geocode-addresses \
--timeout=60 \
--env-vars-file=cloud-functions/geocode-addresses/.env.yaml \
--trigger-topic=${GEO_CODE_REQUEST_PUBSUB_TOPIC}
Tâche 6 : Modifier les variables d'environnement des fonctions Cloud Run
Dans cette tâche, vous allez finaliser la configuration des fonctions Cloud Run en modifiant les variables d'environnement de chaque fonction pour qu'elles reflètent les paramètres spécifiques de votre atelier via la console Cloud.
Modifier les variables d'environnement de la fonction Cloud Run "process-invoices"
Définissez les variables d'environnement de la fonction Cloud Run process-invoices.
- Dans la console Cloud, saisissez
Fonctions Cloud Run dans la barre de recherche, puis cliquez sur le résultat correspondant à la page du produit.
Vous serez redirigé vers la console Cloud Run. Cliquez sur Accéder à Cloud Run Functions (1re génération) pour afficher les fonctions déployées process-invoices et geocode-addresses.
Remarque : Si vous ne voyez pas le lien Accéder à Cloud Run Functions (1re génération), actualisez la console Cloud Run.
- Cliquez sur la fonction Cloud Run process-invoices pour ouvrir sa page de gestion.
- Cliquez sur Modifier.
- Cliquez sur Paramètres d'exécution, de compilation, de connexion et de sécurité pour développer cette section.
- Sous Variables d'environnement d'exécution, ajoutez la variable GCP_PROJECT et la valeur correspondant à votre ID de projet.
- Sous Variables d'environnement d'exécution, mettez à jour la valeur PROCESSOR_ID pour qu'elle corresponde à l'ID du processeur des factures que vous avez créé précédemment.
- Sous Variables d'environnement d'exécution, mettez à jour la valeur de PARSER_LOCATION pour qu'elle corresponde à la région du processeur des factures que vous avez créé précédemment. Il s'agit de
us ou eu. Ce paramètre doit être en minuscules.
- Cliquez sur Suivant, sélectionnez .env.yaml, puis mettez à jour les valeurs
PROCESSOR_ID, PARSER_LOCATION et GCP_PROJECT pour votre processeur de factures.

- Cliquez sur Déployer.
Déployer la fonction Cloud Run "Process Invoices"
Modifier les variables d'environnement de la fonction Cloud Run "geocode-addresses"
Définissez les variables d'environnement de la fonction Cloud Run pour la fonction d'enrichissement des données de géocodage.
- Cliquez sur la fonction Cloud Run geocode-addresses pour ouvrir sa page de gestion.
- Cliquez sur Modifier.
- Cliquez sur Paramètres d'exécution, de compilation, de connexion et de sécurité pour développer cette section.
- Sous Variables d'environnement d'exécution, mettez à jour la valeur de API_key pour qu'elle corresponde à la 0valeur de la clé API créée dans la tâche 1.
- Cliquez sur Suivant, sélectionnez .env.yaml, puis mettez à jour la valeur de "API_key" pour qu'elle corresponde à la valeur de la clé API que vous avez définie à l'étape précédente.
- Cliquez sur Déployer.
Déployer la fonction Cloud Run "Geocode Addresses"
Tâche 7 : Tester et valider la solution de bout en bout
Importez les données de test dans Cloud Storage et surveillez la progression du pipeline à mesure que les documents sont traités et que les données extraites sont améliorées.
- Dans Cloud Shell, saisissez la commande suivante pour importer des exemples de formulaires dans le bucket Cloud Storage qui déclenchera la fonction Cloud Run
process-invoices :
export PROJECT_ID=$(gcloud config get-value core/project)
gsutil cp gs://spls/gsp927/documentai-pipeline-demo/sample-files/* gs://${PROJECT_ID}-input-invoices/
- Dans la console Cloud, saisissez
Fonctions Cloud Run dans la barre de recherche, puis cliquez sur le résultat correspondant à la page du produit.
- Cliquez sur la fonction Cloud Run process-invoices pour ouvrir sa page de gestion.
- Cliquez sur Journaux.
Vous verrez des événements liés à la création de la fonction et aux mises à jour effectuées pour configurer les variables d'environnement, suivis d'événements montrant des détails sur le fichier en cours de traitement et les données détectées par Document AI.

Surveillez les événements jusqu'à ce que vous voyiez un événement final indiquant que l'exécution de la fonction s'est terminée par un LoadJob. Si des erreurs sont signalées, vérifiez que les paramètres définis dans le fichier .env.yaml de la section précédente sont corrects. Vérifiez en particulier que l'ID du processeur, l'emplacement et l'ID du projet sont valides. La liste des événements ne s'actualise pas automatiquement.
À la fin du traitement, vos tables BigQuery seront remplies avec les entités extraites par Document AI, ainsi qu'avec les données enrichies fournies par l'API Geocoding si le processeur Document AI a détecté des données d'adresse dans le document importé.
Ouvrir la console BigQuery
- Dans la console Google Cloud, sélectionnez le menu de navigation > BigQuery.
Le message Bienvenue sur BigQuery dans Cloud Console s'affiche. Il contient un lien vers le guide de démarrage rapide et les notes de version.
- Cliquez sur OK.
La console BigQuery s'ouvre.
-
Développez l'ID de votre projet dans l'explorateur.
-
Développez invoice_parser_results.
-
Sélectionnez doc_ai_extracted_entities et cliquez sur Aperçu.
Vous pouvez voir les informations du formulaire extraites des factures par le processeur des factures. Les informations d'adresse et le nom du fournisseur ont été détectés.
- Sélectionnez geocode_details et cliquez sur Prévisualiser.
Vous pouvez voir l'adresse mise en forme, la latitude et la longitude de chaque facture traitée contenant des données d'adresse que Document AI a pu extraire.
Vérifier que le pipeline de bout en bout a traité les données de formulaire et d'adresse
Félicitations !
Vous avez utilisé l'API Document AI et d'autres services Google Cloud pour créer un pipeline de traitement de bout en bout pour les factures. Dans cet atelier, vous avez activé l'API Document AI, déployé des fonctions Cloud Run qui utilisent les API Document AI, BigQuery, Cloud Storage et Pub/Sub, et configuré une fonction Cloud Run pour qu'elle se déclenche lorsque des documents sont importés dans Cloud Storage. Vous avez également configuré une fonction Cloud Run pour qu'elle utilise la bibliothèque cliente Document AI pour Python et qu'elle se déclenche lorsqu'un message Pub/Sub est créé.
Étapes suivantes et informations supplémentaires
- Pour en savoir plus sur ce type d'authentification, consultez ce guide.
Formations et certifications Google Cloud
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 26 août 2025
Dernier test de l'atelier : 29 juillet 2025
Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.