Elabora i documenti con il parser di layout

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

Funzionalità del parser del layout

  • Analizza i layout dei documenti. Puoi inserire file HTML o PDF in Layout Parser per identificare elementi dei contenuti come blocchi di testo, tabelle, elenchi ed elementi strutturali come titoli e intestazioni. Questi elementi aiutano 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 l'individuazione delle informazioni.

  • Dividi i documenti in blocchi. Il parser del layout può dividere i documenti in blocchi che conservano 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 la suddivisione 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 blocco 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 per tipo di file del documento.

Tipo di file Elementi rilevati Limitazioni
HTML paragrafo, tabella, elenco, titolo, intestazione, intestazione di pagina, piè di pagina Tieni presente che l'analisi si basa in gran parte 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 divise in due tabelle.
DOCX (anteprima) paragrafo, tabelle su più pagine, elenco, titolo, elementi di intestazione Le tabelle nidificate non sono supportate.
PPTX (anteprima) elementi paragrafo, tabella, elenco, titolo e intestazione Affinché i titoli vengano identificati con precisione, devono essere contrassegnati come tali all'interno del file PowerPoint. Le tabelle nidificate e le slide nascoste non sono supportate.
XLSX/XLSM (anteprima) tabelle all'interno dei fogli di lavoro Excel, che supportano i valori INT, FLOAT e STRING Il rilevamento di più tabelle non è supportato. Anche i fogli, le righe o le colonne nascosti potrebbero influire sul rilevamento.

Prima di iniziare

Per attivare Layout Parser:

  1. Crea un parser di layout seguendo le istruzioni riportate nella sezione Creare e gestire i processori.

    Il nome del tipo di processore è LAYOUT_PARSER_PROCESSOR.

  2. Attiva Layout Parser seguendo le istruzioni riportate in Attivare un processore.

Inviare una richiesta di elaborazione online con Layout Parser

  1. Inserisci i documenti nel parser di layout 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 responsabile del trattamento, ad esempio:
      • us - Stati Uniti
      • eu - Unione Europea
    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • PROCESSOR_ID: l'ID del tuo processore personalizzato.
    • MIME_TYPE: il parser del layout supporta application/pdf e text/html.
    • DOCUMENT: I contenuti da dividere in blocchi. Layout Parser accetta documenti PDF o HTML non elaborati oppure documenti analizzati che sono stati generati da Layout Parser.
    • CHUNK_SIZE: (Facoltativo). La dimensione del blocco, in token, da utilizzare per dividere i documenti.
    • INCLUDE_ANCESTOR_HEADINGS: (Facoltativo). Valore booleano. Indica se includere o meno le intestazioni predecessore 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 di queste 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 sul layout e sul chunking come Document.documentLayout e Document.chunkedDocument.

    Python

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

    Per autenticarti in Document AI, configura le Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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
    
    

Elabora i documenti in batch con il parser di layout

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

  1. Inserisci i documenti nel parser di layout 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 di 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 dividere i documenti.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: Indica se includere le intestazioni predecessore durante la suddivisione dei documenti. Le intestazioni predecessore sono i genitori delle intestazioni secondarie nel documento originale. Possono fornire un blocco con un contesto aggiuntivo sulla sua posizione nel documento originale. Un chunk può includere fino a due livelli di intestazioni.

Passaggi successivi