Tente traduzir documentos formatados

Os serviços Vertex AI Translation e Reconhecimento óptico de caracteres (OCR) se combinam para oferecer um recurso de processamento de documentos chamado Document Translate.

A Document Translation traduz diretamente documentos formatados, como arquivos PDF. Em comparação com traduções de texto simples, o recurso preserva a formatação e o layout originais nos documentos traduzidos, ajudando você a reter grande parte do contexto original, como quebras de parágrafo.

A Tradução de documentos é compatível com traduções inline, de buckets de armazenamento e em lote.

Esta página orienta você em uma experiência interativa usando o recurso de processamento de documentos no Google Distributed Cloud (GDC) isolado para traduzir documentos e preservar o formato deles.

Formatos compatíveis

A Document Translation é compatível com os seguintes tipos de arquivo de entrada e os tipos de arquivo de saída associados:

Entradas Tipo de documento MIME Saída
PDF application/pdf PDF e 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

Traduções de documentos originais e digitalizados em PDF

A Tradução de documentos é compatível com arquivos PDF originais e digitalizados, incluindo traduções para ou de idiomas da direita para a esquerda. Além disso, a Tradução de documentos preserva hiperlinks, tamanho e cor da fonte dos arquivos.

Antes de começar

Antes de começar a usar o recurso de processamento de documentos, você precisa ter um projeto chamado dt-project. O recurso personalizado do projeto precisa ser semelhante ao exemplo a seguir:

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, é necessário ativar as APIs pré-treinadas de tradução e OCR da Vertex AI e ter as credenciais adequadas. Considere instalar as bibliotecas de cliente de tradução e OCR da Vertex AI para facilitar as chamadas de API. Para mais informações sobre pré-requisitos, consulte Configurar um projeto de tradução.

Traduzir um documento de um bucket de armazenamento

Para traduzir um documento armazenado em um bucket, use a API Translation da Vertex AI.

Esta seção descreve como traduzir um documento de um bucket e armazenar o resultado em outro caminho de bucket de saída. A resposta também retorna um fluxo de bytes. É possível especificar o tipo MIME. Caso contrário, a Document Translation determina a extensão usando a extensão do arquivo de entrada.

A Tradução de documentos oferece suporte à detecção automática de idiomas para documentos armazenados em buckets. Se você não especificar um código de idioma de origem, a Document Translation vai detectar o idioma para você. O idioma detectado está incluído na saída do campo detectedLanguageCode.

Siga estas etapas para traduzir um documento de um bucket de armazenamento:

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

    É possível criar o bucket de armazenamento implantando um recurso Bucket no namespace 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 permissões read e write no bucket à conta de serviço (ai-translation-system-sa) usada pelo serviço Vertex AI Translation.

    Siga estas etapas para criar a função e a vinculação de função usando recursos personalizados:

    1. Implante um recurso Role no namespace dt-project para criar a função:

        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 vinculação de função implantando um recurso RoleBinding no namespace 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. Faça upload do documento para o bucket de armazenamento que você criou. Para mais informações, consulte Fazer upload e download de objetos de armazenamento em projetos.

  5. Faça uma solicitação à API pré-treinada Vertex AI Translation:

    curl

    Siga estas etapas para fazer uma solicitação curl:

    1. Salve o seguinte arquivo request.json:

      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
      

      Substitua:

      • PROJECT_ID: o ID do projeto.
      • SOURCE_LANGUAGE: o idioma em que o documento foi escrito. Confira a lista de idiomas aceitos e os respectivos códigos.
      • TARGET_LANGUAGE: o idioma ou os idiomas para os quais você quer traduzir o documento. Confira a lista de idiomas aceitos e os respectivos códigos.
      • INPUT_FILE_PATH: o caminho do arquivo de documento no bucket de armazenamento.

      Modifique o valor de mime_type de acordo com seu documento.

    2. Receber um token de autenticação.

    3. Faça a solicitação:

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

      Substitua:

Traduzir um documento in-line

Nesta seção, descrevemos como enviar um documento in-line como parte da solicitação de API. É necessário incluir o tipo MIME para traduções de documentos inline.

O Document Translate oferece suporte à detecção automática de idioma para traduções de texto inline. Se você não especificar um código de idioma de origem, a Document Translation vai detectar o idioma para você. O idioma detectado está incluído na saída do campo detectedLanguageCode.

Faça uma solicitação à API pré-treinada Vertex AI Translation:

curl

Siga estas etapas para fazer uma solicitação curl:

  1. Receber um token de autenticação.

  2. Faça a solicitação:

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

Substitua:

  • PROJECT_ID: o ID do projeto.
  • SOURCE_LANGUAGE: o idioma em que o documento foi escrito. Confira a lista de idiomas aceitos e os respectivos códigos.
  • TARGET_LANGUAGE: o idioma ou os idiomas para os quais você quer traduzir o documento. Confira a lista de idiomas aceitos e os respectivos códigos.
  • INPUT_FILE_PATH: o caminho do arquivo de documento localmente.
  • TOKEN: o token de autenticação que você recebeu.
  • ENDPOINT: o endpoint da Vertex AI Translation que você usa na sua organização. Para mais informações, consulte o status do serviço e os endpoints.

Traduzir documentos em lote

A tradução em lote permite que você traduza vários arquivos em vários idiomas em uma única solicitação. Para cada solicitação, é possível enviar até 100 arquivos com tamanho de conteúdo total de até 1 GB ou 100 milhões de pontos de código Unicode, o limite que for atingido primeiro. É possível especificar um modelo de tradução específico para cada idioma.

Para ver mais informações, consulte batchTranslateDocument.

Traduzir vários documentos

O exemplo a seguir inclui várias configurações de entrada. Cada configuração de entrada é um ponteiro para um arquivo em um bucket de armazenamento.

Faça uma solicitação à API pré-treinada Vertex AI Translation:

curl

Siga estas etapas para fazer uma solicitação curl:

  1. Salve o corpo da solicitação a seguir em um arquivo chamado 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:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Confira a lista de idiomas aceitos e os respectivos códigos.
    • TARGET_LANGUAGE: os idiomas de destino para os quais os documentos de entrada serão traduzidos. Confira a lista de idiomas aceitos e os respectivos códigos.
    • INPUT_FILE_PATH: o local do bucket de armazenamento e o nome do arquivo de um ou mais documentos de entrada.
    • OUTPUT_FILE_PREFIX: o local do bucket de armazenamento em que todos os documentos de saída são armazenados.
  2. Receber um token de autenticação.

  3. Faça a solicitação:

    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"
    

    Substitua:

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"
}
}

Traduzir e converter um arquivo PDF original

O exemplo a seguir traduz e converte um arquivo PDF original em um arquivo DOCX. Você pode especificar várias entradas de vários tipos de arquivo. Nem todos precisam ser arquivos PDF originais. No entanto, os arquivos PDF digitalizados não podem ser incluídos ao incluir uma conversão: a solicitação será rejeitada, e nenhuma tradução será feita. Somente arquivos PDF originais são traduzidos e convertidos em arquivos DOCX. Por exemplo, se você incluir arquivos PPTX, eles serão traduzidos e retornados como arquivos PPTX.

Se você traduz regularmente uma combinação de arquivos PDF nativos e digitalizados, recomendamos organizá-los em buckets separados. Dessa forma, ao solicitar uma conversão e uma tradução em lote, é possível excluir o bucket que contém arquivos PDF digitalizados em vez de excluir arquivos individuais.

Faça uma solicitação à API pré-treinada Vertex AI Translation:

curl

Siga estas etapas para fazer uma solicitação curl:

  1. Salve o corpo da solicitação a seguir em um arquivo chamado 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:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Confira a lista de idiomas aceitos e os respectivos códigos.
    • TARGET_LANGUAGE: os idiomas de destino para os quais os documentos de entrada serão traduzidos. Confira a lista de idiomas aceitos e os respectivos códigos.
    • INPUT_FILE_PATH: o local do bucket de armazenamento e o nome do arquivo de um ou mais documentos de entrada.
    • OUTPUT_FILE_PREFIX: o local do bucket de armazenamento em que todos os documentos de saída são armazenados.
  2. Receber um token de autenticação.

  3. Faça a solicitação:

    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"
    

    Substitua:

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"
}
}

Usar um glossário

É possível incluir um glossário para lidar com a terminologia específica do domínio. Se você especificar um glossário, também precisará especificar o idioma de origem. O exemplo a seguir usa um glossário. É possível especificar até 10 idiomas de destino com os próprios glossários.

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

Faça uma solicitação à API pré-treinada Vertex AI Translation:

curl

Siga estas etapas para fazer uma solicitação curl:

  1. Salve o corpo da solicitação a seguir em um arquivo chamado 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:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Confira a lista de idiomas aceitos e os respectivos códigos.
    • TARGET_LANGUAGE: os idiomas de destino para os quais os documentos de entrada serão traduzidos. Confira a lista de idiomas aceitos e os respectivos códigos.
    • INPUT_FILE_PATH: o local do bucket de armazenamento e o nome do arquivo de um ou mais documentos de entrada.
    • OUTPUT_FILE_PREFIX: o local do bucket de armazenamento em que todos os documentos de saída são armazenados.
    • GLOSSARY_PROJECT_ID: o ID do projeto em que o glossário está localizado.
  2. Receber um token de autenticação.

  3. Faça a solicitação:

    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"
    

    Substitua:

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"
}
}