Elabora i documenti con il parser di layout

Il parser del layout estrae elementi di contenuto del documento come testo, tabelle ed elenchi e crea blocchi sensibili al contesto che facilitano il recupero di informazioni nell'IA generativa e nelle applicazioni di rilevamento.

Funzionalità di Layout Parser

  • Eseguire l'analisi dei layout dei documenti. Puoi inserire file HTML o PDF in Layout Parser per identificare elementi di contenuti come blocchi di testo, tabelle, elenchi ed elementi strutturali come titoli e intestazioni. Questi elementi contribuiscono a definire l'organizzazione e la gerarchia di un documento con contenuti avanzati ed elementi strutturali che possono creare più contesto per il recupero e la scoperta delle informazioni.

  • Suddividi i documenti. Il parser del layout può suddividere i documenti in blocchi che mantengono le informazioni contestuali sulla gerarchia del layout del documento originale. Gli LLM che generano risposte possono utilizzare i chunk per migliorare la pertinenza e ridurre il carico computazionale.

    Tenere conto del layout di un documento durante l'organizzazione in blocchi migliora la coerenza semantica e riduce il rumore nei contenuti quando vengono utilizzati per il recupero e la generazione di LLM. Tutto il testo di un chunk proviene dalla stessa entità di layout, ad esempio un titolo, un sottotitolo o un elenco.

Limitazioni

Si applicano le seguenti limitazioni:

  • Elaborazione online:
    • Dimensione massima del file di input di 20 MB per tutti i tipi di file
    • Massimo 15 pagine per file PDF
  • Elaborazione batch:
    • Dimensione massima di un singolo file di 40 MB per i file PDF
    • Massimo 500 pagine per file PDF

Rilevamento del layout per tipo di file

La tabella seguente elenca gli elementi che Layout Parser può rilevare in base al tipo di file del documento.

Tipo di file Elementi rilevati Limitazioni
HTML paragrafo, tabella, elenco, titolo, intestazione, intestazione pagina, piè di pagina Tieni presente che l'analisi sintattica si basa molto sui tag HTML, pertanto la formattazione basata su CSS potrebbe non essere acquisita.
PDF paragrafo, tabella, titolo, intestazione, intestazione pagina, piè di pagina Le tabelle che si estendono su più pagine potrebbero essere suddivise in due tabelle.
DOCX (anteprima) paragrafo, tabelle su più pagine, elenco, titolo, elementi di intestazione Le tabelle nidificate non sono supportate.
PPTX (anteprima) paragraph, table, list, title, heading elements Affinché le intestazioni vengano identificate con precisione, devono essere contrassegnate come tali all'interno del file PowerPoint. Le tabelle nidificate e le slide nascoste non sono supportate.
XLSX/XLSM (anteprima) tabelle all'interno di fogli di lavoro Excel, che supportano i valori INT, FLOAT e STRING Il rilevamento di più tabelle non è supportato. Anche fogli, righe o colonne nascoste potrebbero influire sul rilevamento.

Prima di iniziare

Per attivare l'analisi del layout:

  1. Crea un'analisi del layout seguendo le istruzioni riportate in Creare e gestire i processori.

    Il nome del tipo di processore è LAYOUT_PARSER_PROCESSOR.

  2. Attiva l'analisi del layout seguendo le istruzioni riportate in Attivare un processore.

Inviare una richiesta di elaborazione online con l'analizzatore sintattico di layout

  1. Inserisci i documenti in Layout Parser per analizzarli e suddividerli in chunk.

    Segui le istruzioni per le richieste di elaborazione batch in Invia una richiesta di elaborazione.

    Configura i campi in ProcessOptions.layoutConfig in ProcessDocumentRequest.

    REST

    Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

    • LOCATION: la posizione del tuo elaboratore, ad esempio:
      • us - Stati Uniti
      • eu - Unione Europea
    • PROJECT_ID: il tuo Google Cloud ID progetto.
    • PROCESSOR_ID: l'ID del tuo processore personalizzato.
    • MIME_TYPE: il parser del layout supporta application/pdf e text/html.
    • DOCUMENT: i contenuti da suddividere in blocchi. Layout Parser accetta documenti PDF o HTML non elaborati oppure documenti analizzati generati da Layout Parser.
    • CHUNK_SIZE: facoltativo. La dimensione del chunk, in token, da utilizzare per suddividere i documenti.
    • INCLUDE_ANCESTOR_HEADINGS: facoltativo. Valore booleano. Indica se includere o meno le intestazioni precedenti durante la suddivisione dei documenti.

    Metodo HTTP e URL:

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

    Corpo JSON della richiesta:

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

    Per inviare la richiesta, scegli una delle seguenti opzioni:

    curl

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    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

    Salva il corpo della richiesta in un file denominato request.json, quindi esegui il comando seguente:

    $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 risposta include il documento elaborato con le informazioni relative al layout e al chunking come Document.documentLayout e Document.chunkedDocument.

    Python

    Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Document AI Python.

    Per autenticarti a Document AI, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

    
    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
    
    

Elaborare i documenti in batch con il parser di layout

Utilizza la procedura seguente per analizzare e suddividere più documenti in una singola richiesta.

  1. Inserisci i documenti in Layout Parser per analizzarli e suddividerli in chunk.

    Segui le istruzioni per le richieste di elaborazione batch in Invia una richiesta di elaborazione.

    Configura i campi in ProcessOptions.layoutConfig quando effettui una richiesta batchProcess.

    Input

    Il seguente esempio JSON configura ProcessOptions.layoutConfig.

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

    Sostituisci quanto segue:

    • CHUNK_SIZE: la dimensione massima del chunk, in numero di token, da utilizzare per suddividere i documenti.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: se includere o meno le intestazioni precedenti quando dividi i documenti. Le intestazioni predecessore sono le intestazioni principali delle sottointestazioni nel documento originale. Possono fornire un frammento con un contesto aggiuntivo sulla sua posizione nel documento originale. Un frammento può includere fino a due livelli di intestazioni.

Passaggi successivi