Experimente traduzir documentos formatados

Os serviços Vertex AI Translation e reconhecimento ótico de carateres (OCR) combinam-se para oferecer uma funcionalidade de processamento de documentos denominada Document Translate.

A Tradução de documentos traduz diretamente documentos formatados, como ficheiros PDF. Em comparação com as traduções de texto simples, a funcionalidade preserva a formatação e o esquema originais nos seus documentos traduzidos, o que ajuda a reter grande parte do contexto original, como as quebras de parágrafos.

O Document Translate suporta traduções de documentos incorporadas, de segmentos de armazenamento e em lote.

Esta página explica-lhe uma experiência interativa com a funcionalidade de processamento de documentos no Google Distributed Cloud (GDC) com isolamento de ar para traduzir documentos, preservando o respetivo formato.

Formatos suportados

O Document Translate suporta os seguintes tipos de ficheiros de entrada e os respetivos tipos de ficheiros de saída associados:

Entradas Tipo MIME do documento Saída
PDF application/pdf PDF, DOCX
DOC application/msword DOC, DOCX
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document DOCX
PPT application/vnd.ms-powerpoint PPT e PPTX
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation PPTX
XLS application/vnd.ms-excel XLS e XLSX
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet XLSX

Traduções de documentos PDF originais e digitalizados

O Document Translate suporta ficheiros PDF originais e digitalizados, incluindo traduções para ou de idiomas da direita para a esquerda. Além disso, o Document Translate preserva as hiperligações, o tamanho do tipo de letra e a cor do tipo de letra dos ficheiros.

Antes de começar

Antes de poder começar a usar a funcionalidade de processamento de documentos, tem de ter um projeto com o nome dt-project. O recurso personalizado do projeto tem de ter o seguinte aspeto no exemplo seguinte:

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

Além disso, tem de ativar as APIs pré-preparadas de tradução e OCR do Vertex AI e ter as credenciais adequadas. Considere instalar as bibliotecas cliente de tradução e OCR da Vertex AI para facilitar as chamadas API. Para mais informações sobre os pré-requisitos, consulte o artigo Configure um projeto de tradução.

Traduza um documento a partir de um contentor de armazenamento

Para traduzir um documento armazenado num contentor, use a API Vertex AI Translation.

Esta secção descreve como traduzir um documento de um contentor e armazenar o resultado noutro caminho do contentor de saída. A resposta também devolve um fluxo de bytes. Pode especificar o tipo MIME. Caso contrário, o Document Translate determina-o através da extensão do ficheiro de entrada.

O Document Translate suporta a deteção automática de idiomas para documentos armazenados em contentores. Se não especificar um código de idioma de origem, o Document Translate deteta o idioma por si. O idioma detetado é incluído na saída no campo detectedLanguageCode.

Siga estes passos para traduzir um documento a partir de um contentor de armazenamento:

  1. Configure a CLI gcloud para o armazenamento de objetos.
  2. Crie um contentor de armazenamento no namespace dt-project. Use uma Standard classe de armazenamento.

    Pode criar o contentor de armazenamento implementando um recurso Bucket no espaço de nomes 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. Conceda autorizações read e write no contentor à conta de serviço (ai-translation-system-sa) usada pelo serviço Vertex AI Translation.

    Pode seguir estes passos para criar a função e a associação de funções através de recursos personalizados:

    1. Crie a função implementando um recurso Role no espaço de nomes 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. Crie a associação de funções implementando um recurso RoleBinding no espaço de nomes 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. Carregue o documento para o contentor de armazenamento que criou. Para mais informações, consulte o artigo Carregue e transfira objetos de armazenamento em projetos.

  5. Faça um pedido à API pré-treinada Vertex AI Translation:

    curl

    Siga estes passos para fazer um pedido curl:

    1. Guarde o seguinte ficheiro request.json:

      cat <<- EOF > request.json
      {
        "parent": "projects/PROJECT_ID/locations/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
      

      Substitua o seguinte:

      • PROJECT_ID: o ID do seu projeto.
      • SOURCE_LANGUAGE: o idioma em que o documento está escrito. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
      • TARGET_LANGUAGE: o idioma ou os idiomas para os quais quer traduzir o seu documento. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
      • INPUT_FILE_PATH: o caminho do ficheiro do documento no contentor de armazenamento.

      Modifique o valor mime_type de acordo com o seu documento.

    2. Obtenha um token de autenticação.

    3. Faça o pedido:

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

      Substitua o seguinte:

      Se estiver num ambiente de desenvolvimento, adicione a flag --cacert CERT_NAME ao comando de pedido curl. Substitua CERT_NAME pelo nome do ficheiro de certificado da CA, como org-1-trust-bundle-ca.cert. Para mais informações, consulte o artigo Gere o ficheiro do certificado da AC do conjunto de confiança num ambiente de desenvolvimento.

Traduza um documento inline

Esta secção descreve como enviar um documento inline como parte do pedido da API. Tem de incluir o tipo MIME para traduções de documentos inline.

O Document Translate suporta a deteção automática de idiomas para traduções de texto inline. Se não especificar um código do idioma de origem, o Document Translate deteta o idioma por si. O idioma detetado é incluído no resultado no campo detectedLanguageCode.

Faça um pedido à API pré-treinada Vertex AI Translation:

curl

Siga estes passos para fazer um pedido curl:

  1. Obtenha um token de autenticação.

  2. Faça o pedido:

echo '{"parent": "projects/PROJECT_ID/locations/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/locations/PROJECT_ID:translateDocument

Substitua o seguinte:

  • PROJECT_ID: o ID do seu projeto.
  • SOURCE_LANGUAGE: o idioma em que o documento está escrito. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
  • TARGET_LANGUAGE: o idioma ou os idiomas para os quais quer traduzir o seu documento. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
  • INPUT_FILE_PATH: o caminho do ficheiro do documento localmente.
  • TOKEN: o token de autenticação que obteve.
  • ENDPOINT: o ponto final do Vertex AI Translation que usa para a sua organização. Para mais informações, veja o estado do serviço e os pontos finais

Se estiver num ambiente de desenvolvimento, adicione a flag --cacert CERT_NAME ao comando de pedido curl. Substitua CERT_NAME pelo nome do ficheiro de certificado da CA, por exemplo, org-1-trust-bundle-ca.cert. Para mais informações, consulte o artigo Gere o ficheiro do certificado da AC do conjunto de confiança num ambiente de desenvolvimento.

Traduza documentos em lote

A tradução em lote permite-lhe traduzir vários ficheiros para vários idiomas num único pedido. Para cada pedido, pode enviar até 100 ficheiros com um tamanho total de conteúdo de até 1 GB ou 100 milhões de pontos de código Unicode, consoante o limite que for atingido primeiro. Pode especificar um modelo de tradução específico para cada idioma.

Para mais informações, consulte batchTranslateDocument.

Se encontrar um problema 503 "Batch Document translation is not implemented", consulte os problemas conhecidos.

Traduza vários documentos

O exemplo seguinte inclui várias configurações de entrada. Cada configuração de entrada é um ponteiro para um ficheiro num contentor de armazenamento.

Faça um pedido à API pré-treinada Vertex AI Translation:

curl

Siga estes passos para fazer um pedido curl:

  1. Guarde o seguinte corpo do pedido num ficheiro denominado 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"
        }
      }
    }
    

    Substitua o seguinte:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
    • TARGET_LANGUAGE: o idioma ou os idiomas de destino para os quais os documentos de entrada devem ser traduzidos. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
    • INPUT_FILE_PATH: a localização do contentor de armazenamento e o nome do ficheiro de um ou mais documentos de entrada.
    • OUTPUT_FILE_PREFIX: a localização do contentor de armazenamento onde todos os documentos de saída são armazenados.
  2. Obtenha um token de autenticação.

  3. Faça o pedido:

    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/locations/PROJECT_ID:batchTranslateDocument"
    

    Substitua o seguinte:

A resposta contém o ID de uma operação de longa duração:

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

Traduza e converta um ficheiro PDF original

O exemplo seguinte traduz e converte um ficheiro PDF original num ficheiro DOCX. Pode especificar várias entradas de vários tipos de ficheiros. Não têm de ser todos ficheiros PDF originais. No entanto, não é possível incluir ficheiros PDF digitalizados quando inclui uma conversão. O pedido é rejeitado e não são feitas traduções. Apenas os ficheiros PDF originais são traduzidos e convertidos em ficheiros DOCX. Por exemplo, se incluir ficheiros PPTX, estes são traduzidos e devolvidos como ficheiros PPTX.

Se traduz regularmente uma combinação de ficheiros PDF digitalizados e originais, recomendamos que os organize em contentores separados. Desta forma, quando pedir uma tradução e uma conversão em lote, pode excluir o contentor que contém ficheiros PDF digitalizados em vez de ter de excluir ficheiros individuais.

Faça um pedido à API pré-treinada Vertex AI Translation:

curl

Siga estes passos para fazer um pedido curl:

  1. Guarde o seguinte corpo do pedido num ficheiro denominado 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"
      }
    }
    

    Substitua o seguinte:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
    • TARGET_LANGUAGE: o idioma ou os idiomas de destino para os quais os documentos de entrada devem ser traduzidos. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
    • INPUT_FILE_PATH: a localização do contentor de armazenamento e o nome do ficheiro de um ou mais documentos de entrada.
    • OUTPUT_FILE_PREFIX: a localização do contentor de armazenamento onde todos os documentos de saída são armazenados.
  2. Obtenha um token de autenticação.

  3. Faça o pedido:

    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/locations/PROJECT_ID:batchTranslateDocument"
    

    Substitua o seguinte:

A resposta contém o ID de uma operação de longa duração:

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

Use um glossário

Pode incluir um glossário para lidar com a terminologia específica do domínio. Se especificar um glossário, tem de especificar o idioma de origem. O exemplo seguinte usa um glossário. Pode especificar até 10 idiomas de destino com o seu próprio glossário.

Se especificar um glossário para alguns idiomas de destino, o sistema não usa nenhum glossário para os idiomas não especificados.

Faça um pedido à API pré-treinada Vertex AI Translation:

curl

Siga estes passos para fazer um pedido curl:

  1. Guarde o seguinte corpo do pedido num ficheiro denominado 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"
        },
        ...
      }
    }
    

    Substitua o seguinte:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
    • TARGET_LANGUAGE: o idioma ou os idiomas de destino para os quais os documentos de entrada devem ser traduzidos. Consulte a lista de idiomas suportados e os respetivos códigos de idioma.
    • INPUT_FILE_PATH: a localização do contentor de armazenamento e o nome do ficheiro de um ou mais documentos de entrada.
    • OUTPUT_FILE_PREFIX: a localização do contentor de armazenamento onde todos os documentos de saída são armazenados.
    • GLOSSARY_PROJECT_ID: o ID do projeto onde o glossário está localizado.
  2. Obtenha um token de autenticação.

  3. Faça o pedido:

    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/locations/PROJECT_ID:batchTranslateDocument"
    

    Substitua o seguinte:

A resposta contém o ID de uma operação de longa duração:

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