Détecter le texte dans les fichiers (PDF/TIFF)

L'API Vision peut détecter et transcrire le texte des fichiers PDF et TIFF stockés dans Cloud Storage.

La détection du texte d'un document à partir de fichiers PDF et TIFF doit être initiée à l'aide de la fonction files:asyncBatchAnnotate qui effectue une requête hors ligne (asynchrone) et renvoie son état via les ressources operations.

Le résultat d'une requête PDF/TIFF est écrit dans un fichier JSON créé dans le bucket Cloud Storage spécifié.

Limites

L'API Vision accepte les fichiers PDF/TIFF jusqu'à 2 000 pages. Les fichiers plus volumineux génèrent une erreur.

Authentification

Les clés API ne sont pas acceptées pour les requêtes files:asyncBatchAnnotate. Consultez Utiliser un compte de service pour des instructions sur l'authentification avec un compte de service.

Le compte utilisé pour l'authentification doit avoir accès au bucket Cloud Storage que vous spécifiez pour le résultat (roles/editor, roles/storage.objectCreator ou supérieur).

Cependant, vous pouvez utiliser une clé API pour suivre l'état de l'opération. Pour obtenir des instructions, consultez Utiliser une clé API.

Requêtes de détection de document texte

Pour le moment, la détection de texte dans des documents PDF et TIFF n'est disponible que si les fichiers sont stockés dans des buckets Cloud Storage. Les fichiers JSON résultats sont enregistrés de même dans un bucket Cloud Storage.

Page du PDF sur le recensement américain de 2010
gs://cloud-samples-data/vision/pdf_tiff/census2010.pdf, Source : Bureau du recensement des États-Unis.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • CLOUD_STORAGE_BUCKET : répertoire/bucket Cloud Storage dans lequel enregistrer les fichiers de sortie, sous ce format :
    • gs://bucket/directory/
    L'utilisateur demandeur doit disposer d'autorisations d'écriture sur le bucket.
  • CLOUD_STORAGE_FILE_URI : chemin d'accès à un fichier valide (PDF/TIFF) dans un bucket Cloud Storage. Il faut au minimum disposer des droits en lecture sur le fichier. Exemple :
    • gs://cloud-samples-data/vision/pdf_tiff/census2010.pdf
  • FEATURE_TYPE : type de fonctionnalité valide. Pour les requêtes files:asyncBatchAnnotate, vous pouvez utiliser les types de fonctionnalités suivants :
    • DOCUMENT_TEXT_DETECTION
    • TEXT_DETECTION
  • PROJECT_ID : ID de votre projet Google Cloud .

Remarque sur les champs :

  • inputConfig remplace le champ image utilisé dans d'autres requêtes de l'API Vision. Il contient deux sous-champs :
    • gcsSource.uri est l'URI Google Cloud Storage du fichier PDF ou TIFF (devant être accessible à l'utilisateur ou au compte de service à l'origine de la requête).
    • mimeType est l'un des types de fichiers acceptés : application/pdf ou image/tiff.
  • outputConfig sert à configurer le résultat. Il contient deux sous-champs :
    • gcsDestination.uri est un URI Google Cloud Storage qui doit être valide. Le bucket doit être accessible en écriture par l'utilisateur ou le compte de service à l’origine de la requête. Le nom du fichier sera output-x-to-y, où x et y représentent les numéros de page  PDF/TIFF inclus dans le fichier de sortie. Si un fichier portant le même nom existe déjà, son contenu sera écrasé.
    • batchSize est le nombre de pages à inclure dans chaque fichier JSON résultat.

Méthode HTTP et URL :

POST https://vision.googleapis.com/v1/files:asyncBatchAnnotate

Corps JSON de la requête :

{
  "requests":[
    {
      "inputConfig": {
        "gcsSource": {
          "uri": "CLOUD_STORAGE_FILE_URI"
        },
        "mimeType": "application/pdf"
      },
      "features": [
        {
          "type": "FEATURE_TYPE"
        }
      ],
      "outputConfig": {
        "gcsDestination": {
          "uri": "CLOUD_STORAGE_BUCKET"
        },
        "batchSize": 1
      }
    }
  ]
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://vision.googleapis.com/v1/files:asyncBatchAnnotate"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "PROJECT_ID" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://vision.googleapis.com/v1/files:asyncBatchAnnotate" | Select-Object -Expand Content
Réponse :

Une requête asyncBatchAnnotate réussie renvoie une réponse avec un champ de nom unique :

{
  "name": "projects/usable-auth-library/operations/1efec2285bd442df"
}

Sa valeur représente une opération de longue durée avec un identifiant associé (par exemple, 1efec2285bd442df), dont on peut vérifier l'état à l'aide de l'API v1.operations.

Pour récupérer le résultat de l'annotation par Vision, envoyez une requête GET au point de terminaison v1.operations en transmettant l'identifiant de l'opération dans l'URL.

GET https://vision.googleapis.com/v1/operations/operation-id

Exemple :

curl -X GET -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H