Intenta traducir documentos con formato

Los servicios de Vertex AI Translation y reconocimiento óptico de caracteres (OCR) se combinan para proporcionar una función de procesamiento de documentos llamada Document Translate.

La traducción de documentos traduce directamente documentos con formato, como archivos PDF. En comparación con las traducciones de texto sin formato, esta función conserva el formato y el diseño originales en los documentos traducidos, lo que te ayuda a conservar gran parte del contexto original, como las divisiones de los párrafos.

Document Translate admite traducciones de documentos en línea, desde buckets de almacenamiento y por lotes.

En esta página, se te guía a través de una experiencia interactiva en la que se usa la función de procesamiento de documentos en Google Distributed Cloud (GDC) aislado para traducir documentos y conservar su formato.

Formatos admitidos

Document Translation admite los siguientes tipos de archivos de entrada y sus tipos de archivos de salida asociados:

Entradas Tipo de documento MIME Resultado
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

Traducciones de documentos PDF originales y escaneados

Document Translation admite archivos PDF originales y escaneados, incluidas las traducciones en o desde idiomas que se leen de derecha a izquierda. Además, Document Translation conserva los hipervínculos, el tamaño de la fuente y el color de la fuente de los archivos.

Antes de comenzar

Antes de comenzar a usar la función de procesamiento de documentos, debes tener un proyecto llamado dt-project. El recurso personalizado del proyecto debe verse como en el siguiente ejemplo:

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

Además, debes habilitar las APIs previamente entrenadas de Vertex AI Translation y OCR y tener las credenciales adecuadas. Considera instalar las bibliotecas cliente de Vertex AI Translation y OCR para facilitar las llamadas a la API. Para obtener más información sobre los requisitos previos, consulta Configura un proyecto de traducción.

Traduce un documento desde un bucket de almacenamiento

Para traducir un documento almacenado en un bucket, usa la API de Vertex AI Translation.

En esta sección, se describe cómo traducir un documento de un bucket y almacenar el resultado en otra ruta de acceso del bucket de salida. La respuesta también muestra un flujo de bytes. Puedes especificar el tipo de MIME. Si no lo haces, Document Translation lo determina con la extensión del archivo de entrada.

La Traducción de documentos admite la detección automática de idiomas para los documentos almacenados en buckets. Si no especificas un código de idioma de origen, Document Translation detecta el idioma por ti. El idioma detectado se incluye en el resultado del campo detectedLanguageCode.

Sigue estos pasos para traducir un documento desde un bucket de almacenamiento:

  1. Configura la CLI de gcloud para el almacenamiento de objetos.
  2. Crea un bucket de almacenamiento en el espacio de nombres dt-project. Usa una clase de almacenamiento Standard.

    Puedes crear el bucket de almacenamiento implementando un recurso Bucket en el espacio de nombres 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. Otorga permisos de read y write en el bucket a la cuenta de servicio (ai-translation-system-sa) que usa el servicio de Vertex AI Translation.

    Puedes seguir estos pasos para crear el rol y la vinculación del rol con recursos personalizados:

    1. Crea el rol implementando un recurso Role en el espacio de nombres 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. Crea la vinculación de rol implementando un recurso RoleBinding en el espacio de nombres 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. Sube el documento al bucket de almacenamiento que creaste. Para obtener más información, consulta Cómo subir y descargar objetos de almacenamiento en proyectos.

  5. Realiza una solicitud a la API previamente entrenada de Vertex AI Translation:

    curl

    Sigue estos pasos para realizar una solicitud de curl:

    1. Guarda el siguiente archivo 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
      

      Reemplaza lo siguiente:

      • PROJECT_ID: el ID de tu proyecto
      • SOURCE_LANGUAGE: Es el idioma en el que está escrito tu documento. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
      • TARGET_LANGUAGE: El idioma o los idiomas a los que deseas traducir tu documento. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
      • INPUT_FILE_PATH: Es la ruta de acceso al archivo de tu documento en el bucket de almacenamiento.

      Modifica el valor de mime_type según tu documento.

    2. Obtén un token de autenticación.

    3. Realiza la solicitud:

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

      Reemplaza lo siguiente:

Traduce un documento intercalado

En esta sección, se describe cómo enviar un documento intercalado como parte de la solicitud de la API. Debes incluir el tipo de MIME para traducciones de documentos intercalados.

La función Traducción de documentos admite la detección automática de idiomas para las traducciones de texto intercaladas. Si no especificas un código de idioma de origen, Document Translation detecta el idioma por ti. El idioma detectado se incluye en el resultado del campo detectedLanguageCode.

Realiza una solicitud a la API previamente entrenada de Vertex AI Translation:

curl

Sigue estos pasos para realizar una solicitud de curl:

  1. Obtén un token de autenticación.

  2. Realiza la solicitud:

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

Reemplaza lo siguiente:

  • PROJECT_ID: el ID de tu proyecto
  • SOURCE_LANGUAGE: Es el idioma en el que está escrito tu documento. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
  • TARGET_LANGUAGE: El idioma o los idiomas a los que deseas traducir tu documento. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
  • INPUT_FILE_PATH: Es la ruta de acceso local a tu archivo de documento.
  • TOKEN: El token de autenticación que obtuviste
  • ENDPOINT: Es el extremo de Vertex AI Translation que usas para tu organización. Consulta el estado y los extremos del servicio para obtener más información.

Traduce documentos por lotes

La traducción por lotes te permite traducir varios archivos a varios idiomas en una sola solicitud. Para cada solicitud, puedes enviar hasta 100 archivos con un tamaño de contenido total de hasta 1 GB o 100 millones de puntos de código Unicode, el límite que se alcance primero. Puedes especificar un modelo de traducción particular para cada idioma.

Para obtener más información, consulta batchTranslateDocument.

Traduce varios documentos

En el siguiente ejemplo, se incluyen varios parámetros de configuración de entrada. Cada configuración de entrada es un puntero a un archivo en un bucket de almacenamiento.

Realiza una solicitud a la API previamente entrenada de Vertex AI Translation:

curl

Sigue estos pasos para realizar una solicitud de curl:

  1. Guarda el siguiente cuerpo de la solicitud en un archivo llamado 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"
        }
      }
    }
    

    Reemplaza lo siguiente:

    • SOURCE_LANGUAGE: Es el código de idioma de los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • TARGET_LANGUAGE: Idioma o idiomas de destino a los que se traducirán los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • INPUT_FILE_PATH: La ubicación del bucket de almacenamiento y el nombre de archivo de uno o más documentos de entrada.
    • OUTPUT_FILE_PREFIX: Es la ubicación del bucket de almacenamiento en el que se almacenan todos los documentos de salida.
  2. Obtén un token de autenticación.

  3. Realiza la solicitud:

    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"
    

    Reemplaza lo siguiente:

La respuesta contiene el ID de una operación de larga duración:

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

Traduce y convierte un archivo PDF original

En el siguiente ejemplo, se traduce un archivo PDF original y se convierte en un archivo DOCX. Puedes especificar varias entradas de varios tipos de archivos (no todos tienen que ser archivos PDF originales). Sin embargo, los archivos PDF escaneados no se pueden incluir cuando se incluye una conversión; la solicitud se rechaza y no se realizan traducciones. Solo los archivos PDF originales se traducen y se convierten en archivos DOCX. Por ejemplo, si incluyes archivos PPTX, estos se traducen y se muestran como archivos PPTX.

Si traduces con frecuencia una combinación de archivos PDF originales y escaneados, te recomendamos que los organices en buckets independientes. De esta manera, cuando solicitas una traducción por lotes y una conversión, puedes excluir el bucket que contiene archivos PDF escaneados en lugar de tener que excluir archivos individuales.

Realiza una solicitud a la API previamente entrenada de Vertex AI Translation:

curl

Sigue estos pasos para realizar una solicitud de curl:

  1. Guarda el siguiente cuerpo de la solicitud en un archivo llamado 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"
      }
    }
    

    Reemplaza lo siguiente:

    • SOURCE_LANGUAGE: Es el código de idioma de los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • TARGET_LANGUAGE: Idioma o idiomas de destino a los que se traducirán los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • INPUT_FILE_PATH: La ubicación del bucket de almacenamiento y el nombre de archivo de uno o más documentos de entrada.
    • OUTPUT_FILE_PREFIX: Es la ubicación del bucket de almacenamiento en el que se almacenan todos los documentos de salida.
  2. Obtén un token de autenticación.

  3. Realiza la solicitud:

    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"
    

    Reemplaza lo siguiente:

La respuesta contiene el ID de una operación de larga duración:

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

Cómo usar un glosario

Puedes incluir un glosario para manejar la terminología específica del dominio. Si especificas un glosario, debes especificar el idioma de origen. En el siguiente ejemplo, se usa un glosario. Puedes especificar hasta 10 idiomas objetivo con su propio glosario.

Si especificas un glosario para algunos idiomas objetivo, el sistema no usa ningún glosario para los idiomas no especificados.

Realiza una solicitud a la API previamente entrenada de Vertex AI Translation:

curl

Sigue estos pasos para realizar una solicitud de curl:

  1. Guarda el siguiente cuerpo de la solicitud en un archivo llamado 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"
        },
        ...
      }
    }
    

    Reemplaza lo siguiente:

    • SOURCE_LANGUAGE: Es el código de idioma de los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • TARGET_LANGUAGE: Idioma o idiomas de destino a los que se traducirán los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • INPUT_FILE_PATH: La ubicación del bucket de almacenamiento y el nombre de archivo de uno o más documentos de entrada.
    • OUTPUT_FILE_PREFIX: Es la ubicación del bucket de almacenamiento en el que se almacenan todos los documentos de salida.
    • GLOSSARY_PROJECT_ID: Es el ID del proyecto en el que se encuentra el glosario.
  2. Obtén un token de autenticación.

  3. Realiza la solicitud:

    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"
    

    Reemplaza lo siguiente:

La respuesta contiene el ID de una operación de larga duración:

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