Procesa 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 con contexto que facilitan la recuperación de información en la IA generativa y las aplicaciones de descubrimiento.

Funciones del Analizador de diseño

  • Analiza diseños de documentos. Puedes ingresar archivos HTML o PDF en Layout Parser 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.

  • Segmenta 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 disminuir 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 LLM. Todo el texto de un fragmento proviene de la misma entidad de diseño, como un encabezado, un subencabezado o una lista.

Limitaciones

Se aplica la siguiente limitación:

  • Procesamiento en línea:
    • El tamaño máximo del archivo de entrada es de 20 MB para todos los tipos de archivos.
    • Un máximo de 15 páginas por archivo PDF
  • Procesamiento por lotes:
    • Tamaño máximo de un solo archivo de 40 MB para archivos PDF
    • Un 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 Layout Parser puede detectar por tipo de archivo de documento.

Tipo de archivo Elementos detectados Limitaciones
HTML párrafo, tabla, lista, título, encabezado, encabezado de página, 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 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 (vista previa) párrafos, tablas en varias páginas, listas, títulos y elementos de encabezado No se admiten las tablas anidadas.
PPTX (vista previa) párrafos, tablas, listas, títulos y elementos de encabezado Para que los encabezados se identifiquen con precisión, deben marcarse como tales en el archivo de PowerPoint. No se admiten tablas anidadas ni diapositivas ocultas.
XLSX/XLSM (vista previa) Tablas dentro de hojas de cálculo de Excel, que admiten valores INT, FLOAT y STRING No se admite la detección de varias tablas. Las hojas, las filas o las columnas ocultas también pueden afectar la detección.

Antes de comenzar

Para activar Layout Parser, sigue estos pasos:

  1. Crea un Layout Parser siguiendo las instrucciones en Crea y administra procesadores.

    El nombre del tipo de procesador es LAYOUT_PARSER_PROCESSOR.

  2. Para habilitar Layout Parser, sigue las instrucciones en Habilita un procesador.

Envía una solicitud de proceso en línea con Layout Parser

  1. Documentos de entrada para que el analizador de diseño los analice y los divida en fragmentos.

    Sigue las instrucciones para las solicitudes de procesamiento por lotes en Envía una solicitud de procesamiento.

    Configura los campos en ProcessOptions.layoutConfig en ProcessDocumentRequest.

    REST

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • LOCATION: La ubicación de tu procesador, por ejemplo:
      • us: Estados Unidos
      • eu: Unión Europea
    • PROJECT_ID: El ID de tu proyecto de Google Cloud .
    • PROCESSOR_ID: Es el ID de tu procesador personalizado.
    • MIME_TYPE: Layout Parser admite application/pdf y text/html.
    • DOCUMENT: Es el contenido que se dividirá en fragmentos. El Layout Parser acepta documentos PDF o HTML sin procesar, o documentos analizados que generó el Layout Parser.
    • CHUNK_SIZE: Opcional Es el tamaño de fragmento, en tokens, que se usará cuando se dividan los documentos.
    • INCLUDE_ANCESTOR_HEADINGS: Opcional Booleano. Indica si se deben incluir los encabezados de principales cuando se dividen los 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 de diseño y fragmentación como Document.documentLayout y Document.chunkedDocument.

    Python

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

    Para autenticarte en Document AI, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para 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
    
    

Procesa documentos por lotes con el Analizador de diseño

Sigue el siguiente procedimiento para analizar y dividir varios documentos en una sola solicitud.

  1. Documentos de entrada para que el analizador de diseño los analice y los divida en fragmentos.

    Sigue las instrucciones para las solicitudes de procesamiento por lotes en Envía una solicitud de procesamiento.

    Configura los campos en ProcessOptions.layoutConfig cuando realices una solicitud de batchProcess.

    Entrada

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

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

    Reemplaza lo siguiente:

    • CHUNK_SIZE: Es el tamaño máximo de fragmento, en cantidad de tokens, que se usará cuando se dividan documentos.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: Indica si se deben incluir los encabezados principales cuando se dividen los documentos. Los encabezados principales son los encabezados superiores de los subencabezados en el 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.

¿Qué sigue?