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

Funciones del analizador de diseño

  • Analizar diseños de documentos Puedes ingresar archivos HTML o PDF a 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 retienen información contextual sobre la jerarquía de diseño del documento original. Los LLM 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 el 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 subtítulo o una lista.

Limitaciones

Se aplica la siguiente limitación:

  • Procesamiento en línea:
    • Tamaño máximo del archivo de entrada 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 el Analizador de diseño puede detectar por tipo de archivo de documento.

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

Antes de comenzar

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

  1. Para crear un analizador de diseño, sigue las instrucciones en Cómo crear y administrar 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 Habilita un procesador.

Envía una solicitud de proceso en línea con el Analizador de diseño

  1. Ingresa documentos al analizador de diseño para analizarlos y fragmentarlos.

    Sigue las instrucciones para las solicitudes de procesamiento por lotes en Cómo enviar 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 Google Cloud ID de tu proyecto.
    • PROCESSOR_ID: Es el ID de tu procesador personalizado.
    • MIME_TYPE: El analizador de diseño admite application/pdf y text/html.
    • DOCUMENT: Es el contenido que se dividirá en fragmentos. El analizador de diseño acepta documentos PDF o HTML sin procesar, o bien documentos analizados que generó el analizador de diseño.
    • CHUNK_SIZE: Opcional Es el tamaño de la sección, en tokens, que se usará cuando se dividan los documentos.
    • INCLUDE_ANCESTOR_HEADINGS: Opcional Booleano. Indica si se deben incluir o no encabezados de principales cuando se dividen 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 la información de diseño y división en fragmentos 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

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

  1. Ingresa documentos al analizador de diseño para analizarlos y fragmentarlos.

    Sigue las instrucciones para las solicitudes de procesamiento por lotes en Cómo enviar una solicitud de procesamiento.

    Configura campos en ProcessOptions.layoutConfig cuando realices 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"
        }
      }
    }
    

    Reemplaza lo siguiente:

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