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, la función conserva el formato y el diseño originales de 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 intercaladas, desde buckets de almacenamiento y por lotes.

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

Formatos admitidos

Document Translate 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

Traducción de documentos admite archivos PDF originales y escaneados, incluidas las traducciones en o desde idiomas que se leen de derecha a izquierda. Además, Document Translate conserva los hipervínculos, el tamaño 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 de Vertex AI Translation y OCR previamente entrenadas 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 que se almacena 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 devuelve un flujo de bytes. Puedes especificar el tipo de MIME; si no lo haces, Traducción de documentos lo determina con la extensión del archivo de entrada.

Document Translate 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 de un bucket de almacenamiento:

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

    Para crear el bucket 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. Otorga permisos read y write en el bucket a las cuentas de servicio (ai-translation-system-sa y g-vai-translation-sie-sa) que usa el servicio de Vertex AI Translation.

    Sigue estos pasos para crear el rol y la vinculación de rol con recursos personalizados en el servidor de la API de administración:

    1. Para crear el rol, implementa 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: g-vai-translation-sie
          -
            kind: ServiceAccount
            name: g-vai-translation-sie-sa
            namespace: g-vai-translation-sie
      
  4. Sube tu documento al bucket de almacenamiento que creaste. Para obtener más información, consulta Sube y descarga 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/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
      

      Reemplaza lo siguiente:

      • PROJECT_ID: Es el ID del proyecto.
      • SOURCE_LANGUAGE: Es el idioma en el que está escrito el documento. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
      • TARGET_LANGUAGE: Es 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 del archivo de 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/locations/PROJECT_ID:translateDocument < request.json
      

      Reemplaza lo siguiente:

Traduce un documento directamente

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

La 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 Translate 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/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

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID del proyecto.
  • SOURCE_LANGUAGE: Es el idioma en el que está escrito el documento. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
  • TARGET_LANGUAGE: Es 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 de tu archivo de documento de forma local.
  • TOKEN: Es el token de autenticación que obtuviste.
  • ENDPOINT: Es el extremo de Vertex AI Translation que usas para tu organización. Para obtener más información, consulta el estado y los extremos del servicio.

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: Es el idioma de destino o los idiomas a los que se traducen los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • INPUT_FILE_PATH_1 y INPUT_FILE_PATH_2: Son las ubicaciones de bucket de almacenamiento y los nombres de archivo de los documentos de entrada.
    • OUTPUT_FILE_PREFIX: Es la ubicación del bucket de almacenamiento en el que se guardan 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/locations/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: Es el idioma de destino o los idiomas a los que se traducen los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • INPUT_FILE_PATH_1 y INPUT_FILE_PATH_2: Son las ubicaciones de bucket de almacenamiento y los nombres de archivo de los documentos de entrada.
    • OUTPUT_FILE_PREFIX: Es la ubicación del bucket de almacenamiento en el que se guardan 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/locations/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"
}
}

Usa 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 de destino con su propio glosario.

Si especificas un glosario para algunos idiomas de destino, 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/glossaries/GLOSSARY_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: Es el idioma de destino o los idiomas a los que se traducen los documentos de entrada. Consulta la lista de idiomas admitidos y sus respectivos códigos de idioma.
    • INPUT_FILE_PATH: Es 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 guardan todos los documentos de salida.
    • GLOSSARY_PROJECT_ID: Es el ID del proyecto en el que se encuentra el glosario.
    • GLOSSARY_ID: Es el ID del 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/locations/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"
}
}