Procesar documentos con el analizador de diseño

El analizador de diseño extrae elementos de contenido de documentos, como texto, tablas y listas, y crea fragmentos contextualizados que facilitan la recuperación de información en aplicaciones de IA generativa y de descubrimiento.

Funciones del analizador de diseños

  • Analiza los diseños de los documentos. Puedes introducir archivos HTML o PDF en el analizador de diseño para identificar elementos de contenido, como bloques de texto, tablas, listas y elementos estructurales, como títulos y encabezados. Estos elementos ayudan a definir la organización y la jerarquía de un documento con contenido enriquecido y elementos estructurales que pueden crear más contexto para la recuperación y el descubrimiento de información.

  • Fracciona los documentos. El analizador de diseño puede dividir los documentos en fragmentos que conservan información contextual sobre la jerarquía del diseño del documento original. Los LLMs que generan respuestas pueden usar fragmentos para mejorar la relevancia y reducir la carga computacional.

    Tener en cuenta el diseño de un documento durante la fragmentación mejora la coherencia semántica y reduce el ruido en el contenido cuando se usa para la recuperación y la generación de LLMs. Todo el texto de un fragmento procede de la misma entidad de diseño, como un encabezado, un subtítulo o una lista.

  • Analizador de diseño de Gemini. Vista previa El analizador de diseño de Gemini ofrece una mejor calidad de diseño en el reconocimiento de tablas, el orden de lectura y el reconocimiento de texto de los archivos PDF. Puedes habilitar la función de forma predeterminada seleccionando la versión del procesador del analizador de diseño pretrained-layout-parser-v1.4-2025-08-25, pretrained-layout-parser-v1.5-2025-08-25 o pretrained-layout-parser-v1.5-pro-2025-08-25 para tu procesador.

  • Analizar imágenes y tablas como anotaciones. Vista previa. El analizador de diseño puede identificar si hay imágenes o tablas en los documentos analizados. Cuando se encuentran, se anotan como un bloque de texto descriptivo con la información que se muestra en la imagen y la tabla.

Limitaciones

Se aplican las siguientes limitaciones:

  • Procesamiento online:
    • El tamaño máximo del archivo de entrada es de 20 MB para todos los tipos de archivo
    • Máximo de 15 páginas por archivo PDF
  • Procesamiento por lotes:
    • Tamaño máximo de un único archivo PDF de 1 GB
    • Máximo de 500 páginas por archivo PDF

Detección de diseño por tipo de archivo

En la siguiente tabla se enumeran los elementos que el analizador de diseño puede detectar por tipo de archivo de documento.

Tipo de archivo Tipo MIME Elementos detectados Limitaciones
HTML text/html párrafo, tabla, lista, título, encabezado, encabezado de página y pie de página Ten en cuenta que el análisis depende en gran medida de las etiquetas HTML, por lo que es posible que no se capture el formato basado en CSS.
PDF application/pdf párrafo, tabla, título, encabezado, encabezado de página, pie de página Las tablas que abarcan varias páginas pueden dividirse en dos tablas.
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document párrafos, tablas en varias páginas, listas, títulos y elementos de encabezado No se admiten tablas anidadas.
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation Elementos de párrafo, tabla, lista, título y encabezado Para que los encabezados se identifiquen correctamente, deben marcarse como tales en el archivo de PowerPoint. No se admiten las tablas anidadas ni las diapositivas ocultas.
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Tablas de hojas de cálculo de Excel que admiten los valores INT, FLOAT y STRING No se admite la detección de varias tablas. Las hojas, filas o columnas ocultas también pueden influir en la detección. Se pueden procesar archivos de hasta 5 millones de celdas.
XLSM application/vnd.ms-excel.sheet.macroenabled.12 hoja de cálculo con macros habilitadas que admite los valores INT, FLOAT y STRING No se admite la detección de varias tablas. Las hojas, filas o columnas ocultas también pueden influir en la detección.

Versiones del encargado del tratamiento

Los siguientes modelos están disponibles para el analizador de diseño. Para cambiar las versiones del modelo, consulta Gestionar versiones de procesadores.

Para enviar una solicitud de aumento de cuota (QIR) para la cuota predeterminada del procesador, sigue los pasos que se indican en Gestionar tu cuota.

Versión del modelo Descripción Canal de lanzamiento Fecha de lanzamiento
pretrained-layout-parser-v1.0-2024-06-03 Versión de disponibilidad general para el análisis de diseño de documentos. Esta es la versión predeterminada del procesador preentrenado. Estable 3 de junio del 2024
pretrained-layout-parser-v1.5-2025-08-25 Versión de vista previa basada en el MLE Gemini 2.5 Flash para mejorar el análisis de diseño en archivos PDF. Recomendado para quienes quieran probar nuevas versiones. Si se usa en archivos que no son PDF, tendrá el mismo comportamiento que la versión estable pretrained-layout-parser-v1.0-2024-06-03. Versión candidata 25 de agosto del 2025
pretrained-layout-parser-v1.5-pro-2025-08-25 Versión de vista previa basada en el LLM Gemini 2.5 Pro para mejorar el análisis de diseño en archivos PDF. La latencia de la versión 1.5-pro es mayor que la de la versión 1.5. Si se usa en archivos que no son PDF, tendrá el mismo comportamiento que la versión estable 1.0. Versión candidata 25 de agosto del 2025

Antes de empezar

Para activar el analizador de diseño, sigue estos pasos:

  1. Crea un analizador de diseño siguiendo las instrucciones de Crear y gestionar procesadores.

    El nombre del tipo de procesador es LAYOUT_PARSER_PROCESSOR.

  2. Para habilitar el analizador de diseño, sigue las instrucciones que se indican en el artículo Habilitar un procesador.

Enviar una solicitud de proceso online con el analizador de diseño

  1. Introduce documentos en el analizador de diseño para analizarlos y dividirlos en fragmentos.

    Sigue las instrucciones para enviar solicitudes de procesamiento en lote que se indican en la sección Enviar una solicitud de procesamiento.

    Configura los campos en ProcessOptions.layoutConfig en ProcessDocumentRequest.

    REST

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • LOCATION: la ubicación de tu procesador, por ejemplo:
      • us - Estados Unidos
      • eu - Unión Europea
    • PROJECT_ID: tu ID de proyecto Google Cloud .
    • PROCESSOR_ID: el ID de tu procesador personalizado.
    • MIME_TYPE: el analizador de diseño admite application/pdf y text/html.
    • DOCUMENT: el contenido que se va a dividir en fragmentos. El analizador de diseño acepta documentos PDF o HTML sin procesar, o documentos analizados que haya generado el analizador de diseño.
    • CHUNK_SIZE: opcional. Tamaño del fragmento, en tokens, que se usará al dividir los documentos.
    • INCLUDE_ANCESTOR_HEADINGS: opcional. Booleano. Indica si se deben incluir los encabezados de los elementos superiores al dividir documentos.

    Método HTTP y URL:

    POST https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process

    Cuerpo JSON de la solicitud:

    // Sample for inputting raw documents such as PDF or HTML
    {
      "rawDocument": {
        "mimeType": "MIME_TYPE",
        "content": "DOCUMENT"
      },
      "processOptions": {
        "layoutConfig": {
          "chunkingConfig": {
            "chunkSize": "CHUNK_SIZE",
            "includeAncestorHeadings": "INCLUDE_ANCESTOR_HEADINGS",
          }
        }
      }
    }
    

    Para enviar tu solicitud, elige una de estas opciones:

    curl

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    curl -X POST \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process"

    PowerShell

    Guarda el cuerpo de la solicitud en un archivo llamado request.json y ejecuta el siguiente comando:

    $headers = @{  }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-documentai.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/processors/PROCESSOR_ID:process" | Select-Object -Expand Content
    La respuesta incluye el documento procesado con información sobre el diseño y la segmentación como Document.documentLayout y Document.chunkedDocument.

    Python

    Para obtener más información, consulta la documentación de referencia de la API Python de Document AI.

    Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.

    
    from typing import Optional, Sequence
    
    from google.api_core.client_options import ClientOptions
    from google.cloud import documentai
    
    # TODO(developer): Uncomment these variables before running the sample.
    # project_id = "YOUR_PROJECT_ID"
    # location = "YOUR_PROCESSOR_LOCATION" # Format is "us" or "eu"
    # processor_id = "YOUR_PROCESSOR_ID" # Create processor before running sample
    # processor_version = "rc" # Refer to https://cloud.google.com/document-ai/docs/manage-processor-versions for more information
    # file_path = "/path/to/local/pdf"
    # mime_type = "application/pdf" # Refer to https://cloud.google.com/document-ai/docs/file-types for supported file types
    
    
    def process_document_layout_sample(
        project_id: str,
        location: str,
        processor_id: str,
        processor_version: str,
        file_path: str,
        mime_type: str,
    ) -> documentai.Document:
        process_options = documentai.ProcessOptions(
            layout_config=documentai.ProcessOptions.LayoutConfig(
                chunking_config=documentai.ProcessOptions.LayoutConfig.ChunkingConfig(
                    chunk_size=1000,
                    include_ancestor_headings=True,
                )
            )
        )
    
        document = process_document(
            project_id,
            location,
            processor_id,
            processor_version,
            file_path,
            mime_type,
            process_options=process_options,
        )
    
        print("Document Layout Blocks")
        for block in document.document_layout.blocks:
            print(block)
    
        print("Document Chunks")
        for chunk in document.chunked_document.chunks:
            print(chunk)
    
    
    
    def process_document(
        project_id: str,
        location: str,
        processor_id: str,
        processor_version: str,
        file_path: str,
        mime_type: str,
        process_options: Optional[documentai.ProcessOptions] = None,
    ) -> documentai.Document:
        # You must set the `api_endpoint` if you use a location other than "us".
        client = documentai.DocumentProcessorServiceClient(
            client_options=ClientOptions(
                api_endpoint=f"{location}-documentai.googleapis.com"
            )
        )
    
        # The full resource name of the processor version, e.g.:
        # `projects/{project_id}/locations/{location}/processors/{processor_id}/processorVersions/{processor_version_id}`
        # You must create a processor before running this sample.
        name = client.processor_version_path(
            project_id, location, processor_id, processor_version
        )
    
        # Read the file into memory
        with open(file_path, "rb") as image:
            image_content = image.read()
    
        # Configure the process request
        request = documentai.ProcessRequest(
            name=name,
            raw_document=documentai.RawDocument(content=image_content, mime_type=mime_type),
            # Only supported for Document OCR processor
            process_options=process_options,
        )
    
        result = client.process_document(request=request)
    
        # For a full list of `Document` object attributes, reference this page:
        # https://cloud.google.com/document-ai/docs/reference/rest/v1/Document
        return result.document
    
    

Procesar documentos por lotes con el analizador de diseño

Sigue este procedimiento para analizar y dividir en fragmentos varios documentos en una sola solicitud.

  1. Introduce documentos en el analizador de diseño para analizarlos y dividirlos en fragmentos.

    Sigue las instrucciones para enviar solicitudes de procesamiento en lote que se indican en la sección Enviar una solicitud de procesamiento.

    Configura los campos en ProcessOptions.layoutConfig al enviar una solicitud batchProcess.

    Entrada

    En el siguiente ejemplo de JSON se configura ProcessOptions.layoutConfig.

    "processOptions": {
      "layoutConfig": {
        "chunkingConfig": {
          "chunkSize": "CHUNK_SIZE",
          "includeAncestorHeadings": "INCLUDE_ANCESTOR_HEADINGS_BOOLEAN"
        }
      }
    }
    

    Haz los cambios siguientes:

    • CHUNK_SIZE: tamaño máximo del fragmento, en número de tokens, que se usará al dividir documentos.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: Indica si se deben incluir los encabezados de los elementos antecesores al dividir documentos. Los encabezados de nivel superior son los elementos principales de los subencabezados del documento original. Pueden proporcionar un fragmento con contexto adicional sobre su posición en el documento original. Se pueden incluir hasta dos niveles de encabezados con un fragmento.

Siguientes pasos