Essayer de traduire des documents mis en forme

Les services Vertex AI Translation et Reconnaissance optique des caractères (OCR) sont combinés pour fournir une fonctionnalité de traitement de documents appelée "Traduction de documents".

Document Translate traduit directement les documents mis en forme, tels que les fichiers PDF. Par rapport aux traductions de texte brut, cette fonctionnalité conserve la mise en forme et la mise en page d'origine dans vos documents traduits, ce qui vous permet de conserver une grande partie du contexte d'origine, comme les sauts de paragraphe.

Document Translation permet de traduire des documents en ligne, à partir de buckets de stockage et par lots.

Cette page vous guide à travers une expérience interactive utilisant la fonctionnalité de traitement de documents sur Google Distributed Cloud (GDC) air-gapped pour traduire des documents tout en conservant leur format.

Formats compatibles

Document Translate accepte les types de fichiers d'entrée et les types de fichiers de sortie associés suivants :

Entrées Type MIME du document Sortie
PDF application/pdf PDF, DOCX
DOC application/msword DOC, DOCX
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document DOCX
PPT application/vnd.ms-powerpoint PPT, PPTX
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation PPTX
XLS application/vnd.ms-excel XLS, XLSX
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet XLSX

Traduction de documents PDF originaux et scannés

Document Translate est compatible avec les fichiers PDF natifs et scannés, y compris les traductions vers ou depuis les langues s'écrivant de droite à gauche. En outre, Document Translate conserve les liens hypertexte, la taille et la couleur de police des fichiers.

Avant de commencer

Avant de pouvoir utiliser la fonctionnalité de traitement des documents, vous devez disposer d'un projet nommé dt-project. La ressource personnalisée du projet doit ressembler à l'exemple suivant :

apiVersion: resourcemanager.gdc.goog/v1
kind: Project
metadata:
  labels:
    atat.config.google.com/clin-number: CLIN_NUMBER
    atat.config.google.com/task-order-number: TASK_ORDER_NUMBER
  name: dt-project
  namespace: platform

De plus, vous devez activer les API pré-entraînées Vertex AI Translation et OCR et disposer des identifiants appropriés. Envisagez d'installer les bibliothèques clientes Vertex AI Translation et OCR pour faciliter les appels d'API. Pour en savoir plus sur les conditions préalables, consultez Configurer un projet de traduction.

Traduire un document à partir d'un bucket de stockage

Pour traduire un document stocké dans un bucket, vous devez utiliser l'API Vertex AI Translation.

Cette section explique comment traduire un document à partir d'un bucket et stocker le résultat dans un autre chemin de bucket de sortie. La réponse renvoie également un flux d'octets. Vous pouvez spécifier le type MIME. Si vous ne le faites pas, Document Translate le détermine à l'aide de l'extension du fichier d'entrée.

Document Translate est compatible avec la détection automatique de la langue pour les documents stockés dans des buckets. Si vous ne spécifiez pas de code de langue source, Document Translate détecte la langue pour vous. La langue détectée est incluse dans la sortie dans le champ detectedLanguageCode.

Pour traduire un document à partir d'un bucket de stockage, procédez comme suit :

  1. Configurez la gcloud CLI pour le stockage d'objets.
  2. Créez un bucket de stockage dans l'espace de noms dt-project. Utilisez une classe de stockage Standard.

    Vous pouvez créer le bucket de stockage en déployant une ressource Bucket dans l'espace de noms dt-project :

      apiVersion: object.gdc.goog/v1
      kind: Bucket
      metadata:
        name: dt-bucket
        namespace: dt-project
      spec:
        description: bucket for document vision service
        storageClass: Standard
        bucketPolicy:
          lockingPolicy:
            defaultObjectRetentionDays: 90
    
  3. Accordez les autorisations read et write sur le bucket au compte de service (ai-translation-system-sa) utilisé par le service Vertex AI Translation.

    Vous pouvez suivre ces étapes pour créer le rôle et l'association de rôle à l'aide de ressources personnalisées :

    1. Créez le rôle en déployant une ressource Role dans l'espace de noms dt-project :

        apiVersion: rbac.authorization.k8s.io/v1
        kind: Role
        metadata:
          name: dvs-reader-writer
          namespace: dt-project
        rules:
          -
            apiGroups:
              - object.gdc.goog
            resources:
              - buckets
            verbs:
              - read-object
              - write-object
      
    2. Créez la liaison de rôle en déployant une ressource RoleBinding dans l'espace de noms dt-project :

        apiVersion: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        metadata:
          name: dvs-reader-writer-rolebinding
          namespace: dt-project
        roleRef:
          apiGroup: rbac.authorization.k8s.io
          kind: Role
          name: dvs-reader-writer
        subjects:
          -
            kind: ServiceAccount
            name: ai-translation-system-sa
            namespace: ai-translation-system
      
  4. Importez votre document dans le bucket de stockage que vous avez créé. Pour en savoir plus, consultez Importer et télécharger des objets de stockage dans des projets.

  5. Envoyez une requête à l'API Vertex AI Translation pré-entraînée :

    curl

    Pour envoyer une demande curl :

    1. Enregistrez le fichier request.json suivant :

      cat <<- EOF > request.json
      {
        "parent": "projects/PROJECT_ID",
        "source_language_code": "SOURCE_LANGUAGE",
        "target_language_code": "TARGET_LANGUAGE",
        "document_input_config": {
          "mime_type": "application/pdf",
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH"
          }
        },
        "document_output_config": {
          "mime_type": "application/pdf"
        },
        "enable_rotation_correction": "true"
      }
      EOF
      

      Remplacez les éléments suivants :

      • PROJECT_ID : ID de votre projet.
      • SOURCE_LANGUAGE : langue dans laquelle votre document est rédigé. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
      • TARGET_LANGUAGE : langue ou langues dans lesquelles vous souhaitez traduire votre document. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
      • INPUT_FILE_PATH : chemin d'accès au fichier de votre document dans le bucket de stockage.

      Modifiez la valeur mime_type en fonction de votre document.

    2. Obtenez un jeton d'authentification.

    3. Envoyez la demande :

      curl -vv --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT:443/v3/projects/PROJECT_ID:translateDocument < request.json
      

      Remplacez les éléments suivants :

Traduire un document intégré

Cette section explique comment envoyer un document intégré à la requête d'API. Vous devez inclure le type MIME pour les traductions de documents intégrés.

La traduction de documents est compatible avec la détection automatique de la langue pour les traductions de texte intégré. Si vous ne spécifiez pas de code de langue source, Document Translate détecte la langue pour vous. La langue détectée est incluse dans la sortie dans le champ detectedLanguageCode.

Envoyez une requête à l'API Vertex AI Translation pré-entraînée :

curl

Pour envoyer une demande curl :

  1. Obtenez un jeton d'authentification.

  2. Envoyez la demande :

echo '{"parent": "projects/PROJECT_ID","source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE", "document_input_config": { "mime_type": "application/pdf", "content": "'$(base64 -w 0 INPUT_FILE_PATH)'" }, "document_output_config": { "mime_type": "application/pdf" }, "enable_rotation_correction": "true"}' | curl --data-binary @- -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN" https://ENDPOINT/v3/projects/PROJECT_ID:translateDocument

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • SOURCE_LANGUAGE : langue dans laquelle votre document est rédigé. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
  • TARGET_LANGUAGE : langue ou langues dans lesquelles vous souhaitez traduire votre document. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
  • INPUT_FILE_PATH : chemin d'accès local à votre fichier de document.
  • TOKEN : jeton d'authentification que vous avez obtenu.
  • ENDPOINT : point de terminaison Vertex AI Translation que vous utilisez pour votre organisation. Pour en savoir plus, consultez l'état et les points de terminaison du service.

Traduire des documents par lots

La traduction par lots vous permet de traduire plusieurs fichiers dans plusieurs langues en une seule requête. Pour chaque requête, vous pouvez envoyer jusqu'à 100 fichiers dont la taille totale de contenu peut atteindre 1 Go ou 100 millions de points de code Unicode, selon la limite atteinte en premier. Vous pouvez spécifier un modèle de traduction particulier pour chaque langue.

Pour en savoir plus, consultez la page batchTranslateDocument.

Traduire plusieurs documents

L'exemple suivant inclut plusieurs configurations d'entrée. Chaque configuration d'entrée est un pointeur vers un fichier dans un bucket de stockage.

Envoyez une requête à l'API Vertex AI Translation pré-entraînée :

curl

Pour envoyer une demande curl :

  1. Enregistrez le corps de la requête suivant dans un fichier nommé request.json :

    {
      "source_language_code": "SOURCE_LANGUAGE",
      "target_language_codes": ["TARGET_LANGUAGE", ...],
      "input_configs": [
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_1"
          }
        },
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_2"
          }
        },
        ...
      ],
      "output_config": {
        "s3_destination": {
          "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX"
        }
      }
    }
    

    Remplacez les éléments suivants :

    • SOURCE_LANGUAGE : code de langue des documents d'entrée. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
    • TARGET_LANGUAGE : langue ou langues cibles dans lesquelles traduire les documents d'entrée. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
    • INPUT_FILE_PATH : emplacement du bucket de stockage et nom de fichier d'un ou de plusieurs documents d'entrée.
    • OUTPUT_FILE_PREFIX : emplacement du bucket de stockage où tous les documents de sortie sont stockés.
  2. Obtenez un jeton d'authentification.

  3. Envoyez la demande :

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://ENDPOINT:443/v3/projects/PROJECT_ID:batchTranslateDocument"
    

    Remplacez les éléments suivants :

La réponse contient l'ID d'une opération de longue durée :

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}

Traduire et convertir un fichier PDF original

L'exemple suivant traduit et convertit un fichier PDF d'origine en fichier DOCX. Vous pouvez spécifier plusieurs entrées de différents types de fichiers. Il n'est pas nécessaire que ces fichiers soient des fichiers PDF originaux. Toutefois, les fichiers PDF scannés ne peuvent pas être inclus lors d'une conversion. La requête est rejetée et aucune traduction n'est effectuée. Seuls les fichiers PDF originaux sont traduits et convertis en fichiers DOCX. Par exemple, si vous incluez des fichiers PPTX, ils sont traduits et renvoyés en fichiers PPTX.

Si vous traduisez régulièrement des fichiers PDF scannés et originaux, nous vous recommandons de les organiser dans des buckets distincts. De cette façon, lorsque vous demandez une traduction par lot et une conversion, vous pouvez exclure le bucket qui contient les fichiers PDF scannés au lieu d'avoir à exclure des fichiers individuels.

Envoyez une requête à l'API Vertex AI Translation pré-entraînée :

curl

Pour envoyer une demande curl :

  1. Enregistrez le corps de la requête suivant dans un fichier nommé request.json :

    {
      "source_language_code": "SOURCE_LANGUAGE",
      "target_language_codes": ["TARGET_LANGUAGE", ...],
      "input_configs": [
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_1"
          }
        },
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH_2"
          }
        },
        ...
      ],
      "output_config": {
        "s3_destination": {
          "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX"
        }
      },
      "format_conversions": {
        "application/pdf": "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
      }
    }
    

    Remplacez les éléments suivants :

    • SOURCE_LANGUAGE : code de langue des documents d'entrée. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
    • TARGET_LANGUAGE : langue ou langues cibles dans lesquelles traduire les documents d'entrée. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
    • INPUT_FILE_PATH : emplacement du bucket de stockage et nom de fichier d'un ou de plusieurs documents d'entrée.
    • OUTPUT_FILE_PREFIX : emplacement du bucket de stockage où tous les documents de sortie sont stockés.
  2. Obtenez un jeton d'authentification.

  3. Envoyez la demande :

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://ENDPOINT:443/v3/projects/PROJECT_ID:batchTranslateDocument"
    

    Remplacez les éléments suivants :

La réponse contient l'ID d'une opération de longue durée :

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}

Utiliser un glossaire

Vous pouvez inclure un glossaire afin de gérer la terminologie spécifique à un domaine. Si vous spécifiez un glossaire, vous devez spécifier la langue source. L'exemple suivant utilise un glossaire. Vous pouvez spécifier jusqu'à 10 langues cibles avec leur propre glossaire.

Si vous spécifiez un glossaire pour certaines langues cibles, le système n'utilise aucun glossaire pour les langues non spécifiées.

Envoyez une requête à l'API Vertex AI Translation pré-entraînée :

curl

Pour envoyer une demande curl :

  1. Enregistrez le corps de la requête suivant dans un fichier nommé request.json :

    {
      "source_language_code": "SOURCE_LANGUAGE",
      "target_language_codes": ["TARGET_LANGUAGE", ...],
      "input_configs": [
        {
          "s3_source": {
            "input_uri": "s3://INPUT_FILE_PATH"
          }
        }
      ],
      "output_config": {
        "s3_destination": {
          "output_uri_prefix": "s3://OUTPUT_FILE_PREFIX"
        }
      },
      "glossaries": {
        "TARGET_LANGUAGE": {
          "glossary": "projects/GLOSSARY_PROJECT_ID"
        },
        ...
      }
    }
    

    Remplacez les éléments suivants :

    • SOURCE_LANGUAGE : code de langue des documents d'entrée. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
    • TARGET_LANGUAGE : langue ou langues cibles dans lesquelles traduire les documents d'entrée. Consultez la liste des langues acceptées et de leurs codes de langue respectifs.
    • INPUT_FILE_PATH : emplacement du bucket de stockage et nom de fichier d'un ou de plusieurs documents d'entrée.
    • OUTPUT_FILE_PREFIX : emplacement du bucket de stockage où tous les documents de sortie sont stockés.
    • GLOSSARY_PROJECT_ID : ID du projet dans lequel se trouve le glossaire.
  2. Obtenez un jeton d'authentification.

  3. Envoyez la demande :

    curl -X POST \
      -H "Authorization: Bearer TOKEN" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://ENDPOINT:443/v3/projects/PROJECT_ID:batchTranslateDocument"
    

    Remplacez les éléments suivants :

La réponse contient l'ID d'une opération de longue durée :

{
"name": "projects/PROJECT_ID/operations/OPERATION_ID",
"metadata": {
  "@type": "type.googleapis.com/google.cloud.translation.v3.BatchTranslateDocumentMetadata",
  "state": "RUNNING"
}
}