Tente traduzir documentos formatados

Os serviços Vertex AI Translation e Reconhecimento óptico de caracteres (OCR) se combinam para fornecer 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 Document Translation oferece suporte a traduções de documentos inline, de buckets de armazenamento e em lote.

Nesta página, você vai encontrar uma experiência interativa usando o recurso de processamento de documentos no Google Distributed Cloud (GDC) com isolamento físico para traduzir documentos sem alterar o formato.

Formatos compatíveis

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

Entradas Tipo de documento MIME 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, 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 PDF originais e digitalizados

A Document Translation dá suporte a arquivos PDF originais e digitalizados, incluindo traduções para ou de idiomas da direita para a esquerda. Além disso, a Document Translation 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, é preciso ter um projeto chamado dt-project. O recurso personalizado do projeto precisa ser semelhante ao seguinte exemplo:

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 apropriadas. Considere instalar as bibliotecas de cliente da Vertex AI Translation e OCR para facilitar as chamadas de API. Para mais informações sobre os 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 Vertex AI Translation.

Nesta seção, descrevemos 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 Document Translate oferece suporte à detecção automática de idioma para documentos armazenados em buckets. Se você não especificar um código de idioma de origem, a Document Translation 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 o armazenamento de objetos.
  2. Crie um bucket de armazenamento no namespace dt-project. Use uma classe de armazenamento Standard.

    Para criar o bucket de armazenamento, implante 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 as permissões read e write no bucket às contas de serviço (ai-translation-system-sa e g-vai-translation-sie-sa) usadas pelo serviço Vertex AI Translation.

    Siga estas etapas para criar o papel e a vinculação de papel usando recursos personalizados no servidor de API de gerenciamento:

    1. Crie o papel implantando um recurso Role no namespace 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 vinculação de papel 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: g-vai-translation-sie
          -
            kind: ServiceAccount
            name: g-vai-translation-sie-sa
            namespace: g-vai-translation-sie
      
  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 da 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/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:

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

      Modifique o valor mime_type de acordo com seu documento.

    2. Receba 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/locations/PROJECT_ID:translateDocument < request.json
      

      Substitua:

Traduzir um documento inline

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

A Document Translate é compatível com a 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 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 da Vertex AI Translation:

curl

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

  1. Receba um token de autenticação.

  2. Faça a solicitação:

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:

  • PROJECT_ID: o ID do projeto.
  • SOURCE_LANGUAGE: o idioma em que o documento está escrito. Confira a lista de idiomas disponíveis e os respectivos códigos.
  • TARGET_LANGUAGE: os idiomas para os quais você quer traduzir o documento. Confira a lista de idiomas disponíveis 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, confira o status e os endpoints do serviço.

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 da 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 disponíveis e os respectivos códigos.
    • TARGET_LANGUAGE: os idiomas-alvo para os quais os documentos de entrada serão traduzidos. Confira a lista de idiomas disponíveis e os respectivos códigos.
    • INPUT_FILE_PATH_1 e INPUT_FILE_PATH_2: os locais do bucket de armazenamento e os nomes de arquivo dos documentos de entrada.
    • OUTPUT_FILE_PREFIX: o local do bucket de armazenamento em que todos os documentos de saída são armazenados.
  2. Receba 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/locations/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. É possível 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 originais 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 da 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 disponíveis e os respectivos códigos.
    • TARGET_LANGUAGE: os idiomas-alvo para os quais os documentos de entrada serão traduzidos. Confira a lista de idiomas disponíveis e os respectivos códigos.
    • INPUT_FILE_PATH_1 e INPUT_FILE_PATH_2: os locais do bucket de armazenamento e os nomes de arquivo dos documentos de entrada.
    • OUTPUT_FILE_PREFIX: o local do bucket de armazenamento em que todos os documentos de saída são armazenados.
  2. Receba 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/locations/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 a terminologia específica do domínio. Se você especificar um glossário, precisará especificar o idioma de origem. O exemplo a seguir usa um glossário. É possível especificar até 10 idiomas-alvo com os próprios glossários.

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

Faça uma solicitação à API pré-treinada da 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/glossaries/GLOSSARY_ID"
        }
      }
    }
    

    Substitua:

    • SOURCE_LANGUAGE: o código do idioma dos documentos de entrada. Confira a lista de idiomas disponíveis e os respectivos códigos.
    • TARGET_LANGUAGE: os idiomas-alvo para os quais os documentos de entrada serão traduzidos. Confira a lista de idiomas disponíveis e os respectivos códigos.
    • INPUT_FILE_PATH: o local do bucket de armazenamento e o nome de 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.
    • GLOSSARY_ID: o ID do glossário.
  2. Receba 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/locations/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"
}
}