Memproses dokumen dengan pengurai tata letak

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

Fitur parser tata letak

  • Mengurai tata letak dokumen. Anda dapat memasukkan file HTML atau PDF ke parser tata letak 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. Pengurai tata letak dapat memecah dokumen menjadi beberapa bagian yang mempertahankan informasi kontekstual tentang hierarki tata letak dokumen asli. LLM yang menghasilkan jawaban dapat menggunakan potongan untuk meningkatkan relevansi dan mengurangi beban komputasi.

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

  • Parser tata letak Gemini. Pratinjau. Parser tata letak Gemini memberikan kualitas tata letak yang lebih baik pada pengenalan tabel, urutan baca, dan pengenalan teks file PDF. Anda dapat mengaktifkan fitur secara default dengan memilih versi prosesor parser tata letak pretrained-layout-parser-v1.4-2025-08-25, pretrained-layout-parser-v1.5-2025-08-25, atau pretrained-layout-parser-v1.5-pro-2025-08-25 untuk prosesor Anda.

  • Mengurai gambar dan tabel sebagai anotasi. Pratinjau. Parser tata letak dapat mengidentifikasi apakah ada gambar atau tabel dalam dokumen yang di-parse. Jika ditemukan, teks tersebut akan diberi anotasi sebagai blok teks deskriptif dengan informasi yang digambarkan dalam gambar dan tabel.

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 1 GB untuk file PDF
    • Maksimum 500 halaman per file PDF

Deteksi tata letak per jenis file

Tabel berikut mencantumkan elemen yang dapat dideteksi parser tata letak per jenis file dokumen.

Jenis file Jenis MIME Elemen yang terdeteksi Batasan
HTML text/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 application/pdf paragraf, tabel, judul, heading, header halaman, footer halaman Tabel yang mencakup beberapa halaman dapat dibagi menjadi dua tabel.
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document paragraf, tabel di beberapa halaman, daftar, judul, elemen heading Tabel bertingkat tidak didukung.
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation 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 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 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. File dengan hingga 5 juta sel dapat diproses.
XLSM application/vnd.ms-excel.sheet.macroenabled.12 spreadsheet dengan makro diaktifkan, mendukung nilai INT, FLOAT, dan STRING Deteksi beberapa tabel tidak didukung. Sheet, baris, atau kolom yang tersembunyi juga dapat memengaruhi deteksi.

Versi pemroses

Model berikut tersedia untuk parser tata letak. Untuk mengubah versi model, lihat Mengelola versi pemroses.

Untuk membuat permintaan penambahan kuota (QIR) untuk kuota prosesor default, ikuti langkah-langkah di Mengelola kuota Anda.

Versi model Deskripsi Saluran rilis Tanggal rilis
pretrained-layout-parser-v1.0-2024-06-03 Versi ketersediaan umum untuk analisis tata letak dokumen. Ini adalah versi default prosesor yang telah dilatih sebelumnya. Stabil 3 Juni 2024
pretrained-layout-parser-v1.5-2025-08-25 Versi pratinjau yang didukung oleh LLM Gemini 2.5 Flash untuk analisis tata letak yang lebih baik pada file PDF. Direkomendasikan bagi mereka yang ingin bereksperimen dengan versi baru. Jika digunakan untuk file non-PDF, perilaku yang dihasilkan akan sama dengan pretrained-layout-parser-v1.0-2024-06-03 stabil. Kandidat Rilis 25 Agustus 2025
pretrained-layout-parser-v1.5-pro-2025-08-25 Versi pratinjau yang didukung oleh LLM Gemini 2.5 Pro untuk analisis tata letak yang lebih baik pada file PDF. v1.5-pro memiliki latensi yang lebih tinggi daripada v1.5. Jika digunakan untuk file non-PDF, perilaku yang sama dengan v1.0 yang stabil akan terjadi. Kandidat Rilis 25 Agustus 2025

Sebelum memulai

Untuk mengaktifkan parser tata letak, 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 parser tata letak dengan mengikuti petunjuk di Mengaktifkan pemroses.

Mengirim permintaan pemrosesan online dengan parser tata letak

  1. Masukkan dokumen ke parser tata letak untuk diurai dan dipotong.

    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 prosesor 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. Parser tata letak menerima dokumen PDF atau HTML mentah, atau dokumen yang diuraikan yang dihasilkan oleh parser tata letak.
    • CHUNK_SIZE: Opsional. Ukuran potongan, dalam token, yang akan digunakan saat memisahkan 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

    Meminta isi JSON:

    // 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 Python API 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 parser tata letak

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

  1. Masukkan dokumen ke parser tata letak untuk diurai dan dipotong.

    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