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 header. Elemen ini membantu menentukan pengaturan dan hierarki dokumen dengan konten yang kaya dan elemen struktural yang dapat menciptakan lebih banyak konteks untuk pengambilan dan penemuan informasi.

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

    Dengan mempertimbangkan tata letak dokumen selama pengelompokan, koherensi semantik akan meningkat dan derau dalam konten akan berkurang saat digunakan untuk pengambilan dan pembuatan LLM. Semua teks dalam 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
    • Maksimal 15 halaman per file PDF
  • Pemrosesan batch:
    • 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, judul, header halaman, footer halaman Perhatikan bahwa penguraian sangat bergantung pada tag HTML, sehingga pemformatan berbasis CSS mungkin tidak diambil.
PDF paragraf, tabel, judul, judul, header halaman, footer halaman Tabel yang mencakup beberapa halaman dapat dibagi menjadi dua tabel.
DOCX (Pratinjau) paragraf, tabel di beberapa halaman, daftar, judul, elemen judul Tabel bertingkat tidak didukung.
PPTX (Pratinjau) elemen paragraf, tabel, daftar, judul, judul Agar dapat diidentifikasi secara akurat, judul harus ditandai sedemikian rupa 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 Layout Parser dengan mengikuti petunjuk dalam Membuat dan mengelola pemroses.

    Nama jenis prosesor adalah LAYOUT_PARSER_PROCESSOR.

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

Mengirim permintaan proses online dengan Layout Parser

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

    Ikuti petunjuk untuk permintaan pemrosesan batch di Mengirim permintaan pemrosesan.

    Konfigurasikan 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: project ID Google Cloud Anda.
    • PROCESSOR_ID: ID pemroses kustom Anda.
    • MIME_TYPE: Parser Tata Letak 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 memisahkan dokumen.
    • INCLUDE_ANCESTOR_HEADINGS: Opsional. Boolean. Apakah akan menyertakan judul ancestor atau tidak saat memisahkan dokumen.

    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 menyertakan 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, baca 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 massal dengan Layout Parser

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

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

    Ikuti petunjuk untuk permintaan pemrosesan batch di Mengirim permintaan pemrosesan.

    Konfigurasikan 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 ancestor saat memisahkan dokumen. Judul ancestor adalah induk subjudul dalam dokumen asli. Mereka dapat memberikan bagian dengan konteks tambahan tentang posisinya dalam dokumen asli. Hingga dua tingkat judul dapat disertakan dengan bagian.

Langkah selanjutnya