Memproses dokumen dengan Layout Parser

Layout Parser mengekstrak elemen konten dokumen seperti teks, tabel, dan daftar, serta membuat potongan kontekstual yang memfasilitasi pengambilan informasi dalam AI generatif dan aplikasi penemuan.

Fitur Layout Parser

  • Mengurai tata letak dokumen. Anda dapat memasukkan file HTML atau PDF ke Layout Parser untuk mengidentifikasi elemen konten seperti blok teks, tabel, daftar, dan elemen struktural seperti judul dan tajuk. Elemen ini membantu menentukan organisasi dan hierarki dokumen dengan konten multimedia dan elemen struktural yang dapat menciptakan lebih banyak konteks untuk pengambilan dan penemuan informasi.

  • Membagi dokumen menjadi beberapa bagian. Layout Parser dapat memecah dokumen menjadi beberapa bagian yang mempertahankan informasi kontekstual tentang hierarki tata letak dokumen asli. LLM penghasil jawaban dapat menggunakan potongan untuk meningkatkan relevansi dan mengurangi beban komputasi.

    Mempertimbangkan tata letak dokumen selama proses segmentasi akan meningkatkan koherensi semantik dan mengurangi derau dalam konten saat digunakan untuk pengambilan dan pembuatan LLM. Semua teks dalam satu bagian berasal dari entity tata letak yang sama, seperti judul, subjudul, atau daftar.

Batasan

Batasan berikut berlaku:

  • Pemrosesan online:
    • Ukuran file input maksimum 20 MB untuk semua jenis file
    • Maksimum 15 halaman per file PDF
  • Batch processing:
    • Ukuran file tunggal maksimum 40 MB untuk file PDF
    • Maksimum 500 halaman per file PDF

Deteksi tata letak per jenis file

Tabel berikut mencantumkan elemen yang dapat dideteksi Layout Parser per jenis file dokumen.

Jenis file Elemen yang terdeteksi Batasan
HTML paragraf, tabel, daftar, judul, heading, header halaman, footer halaman Perlu diketahui bahwa penguraian sangat bergantung pada tag HTML, sehingga pemformatan berbasis CSS mungkin tidak tercakup.
PDF paragraf, tabel, judul, heading, header halaman, footer halaman Tabel yang mencakup beberapa halaman dapat dibagi menjadi dua tabel.
DOCX (Pratinjau) paragraf, tabel di beberapa halaman, daftar, judul, elemen heading Tabel bertingkat tidak didukung.
PPTX (Pratinjau) paragraf, tabel, daftar, judul, elemen heading Agar judul dapat diidentifikasi secara akurat, judul harus ditandai sebagai judul dalam file PowerPoint. Tabel bertingkat dan slide tersembunyi tidak didukung.
XLSX/XLSM (Pratinjau) tabel dalam spreadsheet Excel, yang mendukung nilai INT, FLOAT, dan STRING Deteksi beberapa tabel tidak didukung. Sheet, baris, atau kolom yang tersembunyi juga dapat memengaruhi deteksi.

Sebelum memulai

Untuk mengaktifkan Layout Parser, ikuti langkah-langkah berikut:

  1. Buat Parser Tata Letak dengan mengikuti petunjuk di Membuat dan mengelola pemroses.

    Nama jenis prosesor adalah LAYOUT_PARSER_PROCESSOR.

  2. Aktifkan Layout Parser dengan mengikuti petunjuk di Mengaktifkan pemroses.

Mengirim permintaan pemrosesan online dengan Layout Parser

  1. Masukkan dokumen ke Layout Parser untuk mengurai dan memotong.

    Ikuti petunjuk untuk permintaan batch processing di Mengirim permintaan pemrosesan.

    Konfigurasi kolom di ProcessOptions.layoutConfig di ProcessDocumentRequest.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • LOCATION: lokasi pemroses Anda, misalnya:
      • us - Amerika Serikat
      • eu - Uni Eropa
    • PROJECT_ID: ID project Google Cloud Anda.
    • PROCESSOR_ID: ID pemroses kustom Anda.
    • MIME_TYPE: Layout Parser mendukung application/pdf dan text/html.
    • DOCUMENT: Konten yang akan dibagi menjadi beberapa bagian. Layout Parser menerima dokumen PDF atau HTML mentah, atau dokumen yang diuraikan yang dihasilkan oleh Layout Parser.
    • CHUNK_SIZE: Opsional. Ukuran potongan, dalam token, yang akan digunakan saat membagi dokumen.
    • INCLUDE_ANCESTOR_HEADINGS: Opsional. Boolean. Apakah akan menyertakan judul induk saat memisahkan dokumen atau tidak.

    Metode HTTP dan URL:

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

    Isi JSON permintaan:

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

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, lalu jalankan perintah berikut:

    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

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $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
    Respons mencakup dokumen yang diproses dengan informasi tata letak dan pengelompokan sebagai Document.documentLayout dan Document.chunkedDocument.

    Python

    Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Document AI.

    Untuk melakukan autentikasi ke Document AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

    
    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
    
    

Memproses dokumen secara batch dengan Layout Parser

Gunakan prosedur berikut untuk mengurai dan membagi beberapa dokumen dalam satu permintaan.

  1. Masukkan dokumen ke Layout Parser untuk mengurai dan memotong.

    Ikuti petunjuk untuk permintaan batch processing di Mengirim permintaan pemrosesan.

    Konfigurasi kolom di ProcessOptions.layoutConfig saat membuat permintaan batchProcess.

    Input

    Contoh JSON berikut mengonfigurasi ProcessOptions.layoutConfig.

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

    Ganti kode berikut:

    • CHUNK_SIZE: Ukuran potongan maksimum, dalam jumlah token, yang akan digunakan saat memisahkan dokumen.
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: Apakah akan menyertakan judul induk saat memisahkan dokumen. Judul ancestor adalah induk subjudul dalam dokumen asli. Chunk ini dapat memberikan konteks tambahan tentang posisinya dalam dokumen asli. Hingga dua tingkat judul dapat disertakan dengan chunk.

Langkah berikutnya