Traducir documentos con formato

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

Document Translate traduce directamente documentos con formato, como archivos PDF. En comparación con las traducciones de texto, esta función conserva el formato y el diseño originales de los documentos traducidos, lo que te ayuda a mantener gran parte del contexto original, como los saltos de párrafo.

Traductor de documentos permite traducir documentos en línea, desde contenedores de almacenamiento y por lotes.

En esta página se explica cómo usar de forma interactiva la función de procesamiento de documentos en Google Distributed Cloud (GDC) air-gapped para traducir documentos y conservar su formato.

Formatos admitidos

Traductor de documentos admite los siguientes tipos de archivo de entrada y sus tipos de archivo de salida asociados:

Entradas Tipo MIME del documento Salida
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

Traductor de documentos admite archivos PDF originales y escaneados, incluidas las traducciones a idiomas que se escriben de derecha a izquierda y viceversa. Además, Traductor de documentos conserva los hiperenlaces, el tamaño de fuente y el color de fuente de los archivos.

Antes de empezar

Para poder empezar a usar la función de procesamiento de documentos, debes tener un proyecto llamado dt-project. El recurso personalizado del proyecto debe tener el siguiente aspecto:

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 preentrenadas de traducción y OCR de Vertex AI y tener las credenciales adecuadas. Te recomendamos que instales las bibliotecas de 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 el artículo Configurar un proyecto de traducción.

Traducir un documento de un segmento de almacenamiento

Para traducir un documento almacenado en un segmento, debes usar la API Vertex AI Translation.

En esta sección se describe cómo traducir un documento de un contenedor y almacenar el resultado en otra ruta de contenedor de salida. La respuesta también devuelve un flujo de bytes. Puedes especificar el tipo MIME. Si no lo haces, Traductor de documentos lo determinará mediante la extensión del archivo de entrada.

Document Translate admite la detección automática del idioma de los documentos almacenados en contenedores. Si no especificas un código de idioma de origen, Traducción de documentos detectará el idioma por su cuenta. El idioma detectado se incluye en el resultado en el campo detectedLanguageCode.

Sigue estos pasos para traducir un documento de un segmento de almacenamiento:

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

    Para crear el segmento de almacenamiento, implementa 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. Concede los permisos read y write en el segmento a la cuenta de servicio (ai-translation-system-sa) que usa el servicio de traducción de Vertex AI.

    Puedes seguir estos pasos para crear el rol y el enlace de rol mediante recursos personalizados:

    1. Crea el rol desplegando 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 el enlace de rol desplegando 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 segmento de almacenamiento que has creado. Para obtener más información, consulta Subir y descargar objetos de almacenamiento en proyectos.

  5. Haz una solicitud a la API pre-trained Translation de Vertex AI:

    curl

    Para hacer una solicitud de curl, sigue estos pasos:

    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
      

      Haz los cambios siguientes:

      • PROJECT_ID: tu ID de proyecto.
      • SOURCE_LANGUAGE: el idioma en el que está escrito el documento. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
      • TARGET_LANGUAGE: el idioma o los idiomas a los que quieres traducir el documento. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
      • INPUT_FILE_PATH: la ruta del archivo de tu documento en el contenedor de almacenamiento.

      Modifica el valor de mime_type según tu documento.

    2. Obtener un token de autenticación

    3. Haz la solicitud:

      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
      

      Haz los cambios siguientes:

Traducir un documento en línea

En esta sección se describe cómo enviar un documento insertado como parte de la solicitud de la API. Debes incluir el tipo MIME de las traducciones de documentos insertados.

Traductor de documentos admite la detección automática del idioma para las traducciones de texto insertado. Si no especificas un código de idioma de origen, Traducción de documentos detectará el idioma por su cuenta. El idioma detectado se incluye en la salida en el campo detectedLanguageCode.

Haz una solicitud a la API pre-trained Translation de Vertex AI:

curl

Para hacer una solicitud de curl, sigue estos pasos:

  1. Obtener un token de autenticación

  2. Haz 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/locations/PROJECT_ID:translateDocument

Haz los cambios siguientes:

  • PROJECT_ID: tu ID de proyecto.
  • SOURCE_LANGUAGE: el idioma en el que está escrito el documento. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
  • TARGET_LANGUAGE: el idioma o los idiomas a los que quieres traducir el documento. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
  • INPUT_FILE_PATH: la ruta del archivo de tu documento en local.
  • TOKEN: el token de autenticación que has obtenido.
  • ENDPOINT: el endpoint de Vertex AI Translation que usa tu organización. Para obtener más información, consulta el estado del servicio y los endpoints.

Traducir documentos por lotes

La traducción por lotes te permite traducir varios archivos a varios idiomas en una sola solicitud. En 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, lo que se alcance primero. Puedes especificar un modelo de traducción concreto para cada idioma.

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

Traducir varios documentos

En el siguiente ejemplo se incluyen varias configuraciones de entrada. Cada configuración de entrada es un puntero a un archivo de un contenedor de almacenamiento.

Haz una solicitud a la API pre-trained Translation de Vertex AI:

curl

Para hacer una solicitud de curl, sigue estos pasos:

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

    Haz los cambios siguientes:

    • SOURCE_LANGUAGE: el código de idioma de los documentos de entrada. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • TARGET_LANGUAGE: el idioma o los idiomas de destino a los que se traducirán los documentos de entrada. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • INPUT_FILE_PATH: la ubicación del segmento de almacenamiento y el nombre de archivo de uno o varios documentos de entrada.
    • OUTPUT_FILE_PREFIX: la ubicación del contenedor de almacenamiento donde se almacenan todos los documentos de salida.
  2. Obtener un token de autenticación

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

    Haz los cambios siguientes:

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

Traducir y convertir un archivo PDF original

En el siguiente ejemplo se traduce y se convierte un archivo PDF original en un archivo DOCX. Puedes especificar varias entradas de distintos tipos de archivo. No tienen por qué ser archivos PDF originales. Sin embargo, no se pueden incluir archivos PDF escaneados al incluir una conversión. La solicitud se rechaza y no se realiza ninguna traducción. Solo se traducen los archivos PDF originales y se convierten a archivos DOCX. Por ejemplo, si incluyes archivos PPTX, se traducirán y se devolverán como archivos PPTX.

Si sueles traducir una combinación de archivos PDF escaneados y originales, te recomendamos que los organices en segmentos independientes. De esta forma, cuando solicites una traducción y conversión en lote, podrás excluir el contenedor que contiene los archivos PDF escaneados en lugar de tener que excluir archivos concretos.

Haz una solicitud a la API pre-trained Translation de Vertex AI:

curl

Para hacer una solicitud de curl, sigue estos pasos:

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

    Haz los cambios siguientes:

    • SOURCE_LANGUAGE: el código de idioma de los documentos de entrada. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • TARGET_LANGUAGE: el idioma o los idiomas de destino a los que se traducirán los documentos de entrada. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • INPUT_FILE_PATH: la ubicación del segmento de almacenamiento y el nombre de archivo de uno o varios documentos de entrada.
    • OUTPUT_FILE_PREFIX: la ubicación del contenedor de almacenamiento donde se almacenan todos los documentos de salida.
  2. Obtener un token de autenticación

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

    Haz los cambios siguientes:

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

Usar un glosario

Puedes incluir un glosario para gestionar 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 de destino con su propio glosario.

Si especifica un glosario para algunos idiomas de destino, el sistema no usará ningún glosario para los idiomas no especificados.

Haz una solicitud a la API pre-trained Translation de Vertex AI:

curl

Para hacer una solicitud de curl, sigue estos pasos:

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

    Haz los cambios siguientes:

    • SOURCE_LANGUAGE: el código de idioma de los documentos de entrada. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • TARGET_LANGUAGE: el idioma o los idiomas de destino a los que se traducirán los documentos de entrada. Consulta la lista de idiomas admitidos y sus códigos correspondientes.
    • INPUT_FILE_PATH: la ubicación del segmento de almacenamiento y el nombre de archivo de uno o varios documentos de entrada.
    • OUTPUT_FILE_PREFIX: la ubicación del contenedor de almacenamiento donde se almacenan todos los documentos de salida.
    • GLOSSARY_PROJECT_ID: el ID del proyecto en el que se encuentra la glosario.
  2. Obtener un token de autenticación

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

    Haz los cambios siguientes:

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