レイアウト パーサーでドキュメントを処理する

レイアウト パーサーは、テキスト、表、リストなどのドキュメント コンテンツ要素を抽出し、生成 AI や検索アプリケーションでの情報検索を容易にするコンテキスト アウェア チャンクを作成します。

レイアウト パーサーの機能

  • ドキュメント レイアウトを解析します。レイアウト パーサーに HTML ファイルまたは PDF ファイルを入力して、テキスト ブロック、表、リストなどのコンテンツ要素や、タイトルや見出しなどの構造要素を特定できます。これらの要素は、リッチ コンテンツと構造要素を含むドキュメントの構成と階層を定義するのに役立ちます。これらの要素は、情報検索と検出のコンテキストをより多く作成できます。

  • ドキュメントをチャンクします。レイアウト パーサーは、元のドキュメントのレイアウト階層に関するコンテキスト情報を保持するチャンクにドキュメントを分割できます。回答生成 LLM は、チャンクを使用して関連性を高め、コンピューティング負荷を軽減できます。

    チャンク化の際にドキュメントのレイアウトを考慮すると、検索と LLM 生成に使用される場合、セマンティック要素の一貫性が向上し、コンテンツのノイズが軽減されます。チャンク内のすべてのテキストは、見出し、小見出し、リストなどの同じレイアウト エンティティから取得されます。

  • Gemini レイアウト パーサープレビュー。Gemini レイアウト パーサーは、PDF ファイルのテーブル認識、読み取り順序、テキスト認識のレイアウト品質を向上させます。プロセッサのレイアウト パーサー プロセッサ バージョンとして pretrained-layout-parser-v1.4-2025-08-25pretrained-layout-parser-v1.5-2025-08-25pretrained-layout-parser-v1.5-pro-2025-08-25 のいずれかを選択すると、この機能をデフォルトで有効にできます。

  • 画像と表をアノテーションとして解析しますプレビュー。レイアウト パーサーは、解析されたドキュメントに画像やテーブルがあるかどうかを識別できます。検出された場合は、画像と表に示されている情報を含む説明的なテキスト ブロックとしてアノテーションが付けられます。

制限事項

次の制限が適用されます。

  • オンライン処理:
    • すべてのファイル形式で、ファイルサイズの最大値を 20 MB と入力します
    • PDF ファイルあたりの最大ページ数: 15 ページ
  • バッチ処理:
    • PDF ファイルの最大ファイルサイズは 1 GB
    • PDF ファイルあたりの最大ページ数は 500 ページ

ファイル形式ごとのレイアウト検出

次の表に、レイアウト パーサーがドキュメントのファイル形式ごとに検出できる要素を示します。

ファイル形式 MIME タイプ 検出された要素 制限事項
HTML text/html 段落、表、リスト、タイトル、見出し、ページ ヘッダー、ページ フッター 解析は HTML タグに大きく依存するため、CSS ベースの書式設定はキャプチャされない可能性があります。
PDF application/pdf 段落、表、タイトル、見出し、ページ ヘッダー、ページ フッター 複数ページにまたがる表は、2 つの表に分割されることがあります。
DOCX application/vnd.openxmlformats-officedocument.wordprocessingml.document 段落、複数ページにわたる表、リスト、タイトル、見出しの要素 ネストされたテーブルはサポートされていません。
PPTX application/vnd.openxmlformats-officedocument.presentationml.presentation 段落、表、リスト、タイトル、見出しの要素 見出しを正確に識別するには、PowerPoint ファイル内で見出しとしてマークする必要があります。ネストされた表と非表示のスライドはサポートされていません。
XLSX application/vnd.openxmlformats-officedocument.spreadsheetml.sheet Excel スプレッドシート内のテーブル。INTFLOATSTRING の値をサポート 複数のテーブルの検出はサポートされていません。非表示のシート、行、列も検出に影響する可能性があります。最大 500 万個のセルを含むファイルを処理できます。
XLSM application/vnd.ms-excel.sheet.macroenabled.12 マクロが有効なスプレッドシート。INTFLOATSTRING の値をサポート 複数のテーブルの検出はサポートされていません。非表示のシート、行、列も検出に影響する可能性があります。

プロセッサ バージョン

レイアウト パーサーでは、次のモデルを使用できます。モデル バージョンを変更するには、プロセッサ バージョンを管理するをご覧ください。

デフォルトのプロセッサ割り当ての割り当て増加リクエスト(QIR)を行うには、割り当てを管理するの手順に沿って操作します。

モデル バージョン 説明 リリース チャンネル リリース日
pretrained-layout-parser-v1.0-2024-06-03 ドキュメント レイアウト分析の一般提供バージョン。これは、デフォルトの事前トレーニング済みプロセッサ バージョンです。 Stable 2024 年 6 月 3 日
pretrained-layout-parser-v1.5-2025-08-25 Gemini 2.5 Flash LLM を活用したプレビュー版。PDF ファイルのレイアウト分析の精度が向上しています。新しいバージョンを試したい方におすすめします。PDF 以外のファイルに使用された場合、安定版の pretrained-layout-parser-v1.0-2024-06-03 と同じ動作になります。 リリース候補 2025 年 8 月 25 日
pretrained-layout-parser-v1.5-pro-2025-08-25 Gemini 2.5 Pro LLM を搭載したプレビュー バージョンで、PDF ファイルのレイアウト分析の精度が向上しています。v1.5-pro は v1.5 よりもレイテンシが高くなっています。PDF 以外のファイルに使用された場合は、安定版 v1.0 と同じ動作になります。 リリース候補 2025 年 8 月 25 日

始める前に

レイアウト パーサーをオンにする手順は次のとおりです。

  1. プロセッサの作成と管理の手順に沿って、レイアウト パーサーを作成します。

    プロセッサ タイプ名は LAYOUT_PARSER_PROCESSOR です。

  2. プロセッサを有効にするの手順に沿って、レイアウト パーサーを有効にします。

レイアウト パーサーを使用してオンライン プロセス リクエストを送信する

  1. レイアウト パーサーにドキュメントを入力して、解析とチャンク化を行います。

    処理リクエストを送信するのバッチ処理リクエストの手順に沿って操作します。

    ProcessDocumentRequestProcessOptions.layoutConfig でフィールドを構成します。

    REST

    リクエストのデータを使用する前に、次のように置き換えます。

    • LOCATION: プロセッサのロケーション(例:
      • us - 米国
      • eu - 欧州連合
    • PROJECT_ID: 実際の Google Cloud プロジェクト ID。
    • PROCESSOR_ID: カスタム プロセッサの ID。
    • MIME_TYPE: レイアウト パーサーが application/pdftext/html をサポートします。
    • DOCUMENT: チャンクに分割するコンテンツ。レイアウト パーサーは、生の PDF ドキュメントまたは HTML ドキュメント、またはレイアウト パーサーによって出力された解析済みドキュメントを受け入れます。
    • CHUNK_SIZE: 省略可。ドキュメントの分割時に使用するチャンクサイズ(トークン単位)。
    • INCLUDE_ANCESTOR_HEADINGS: 省略可。ブール値。ドキュメントを分割するときに上位の見出しを含めるかどうか。

    HTTP メソッドと URL:

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

    リクエストの本文(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",
          }
        }
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを選択します。

    curl

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    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

    リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

    $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
    レスポンスには、レイアウトとチャンク情報を含む処理済みドキュメントが Document.documentLayoutDocument.chunkedDocument として含まれます。

    Python

    詳細については、Document AI Python API リファレンス ドキュメントをご覧ください。

    Document AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。

    
    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
    
    

レイアウト パーサーを使用してドキュメントをバッチ処理する

次の手順に沿って、1 つのリクエストで複数のドキュメントを解析してチャンク化します。

  1. レイアウト パーサーにドキュメントを入力して、解析とチャンク化を行います。

    処理リクエストを送信するのバッチ処理リクエストの手順に沿って操作します。

    batchProcess リクエストを行うときに、ProcessOptions.layoutConfig でフィールドを構成します。

    入力

    次の JSON の例では、ProcessOptions.layoutConfig を構成します。

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

    次のように置き換えます。

    • CHUNK_SIZE: ドキュメントの分割時に使用するチャンクの最大サイズ(トークン数)。
    • INCLUDE_ANCESTOR_HEADINGS_BOOLEAN: ドキュメントを分割するときに、祖先の見出しを含めるかどうか。上位の見出しは、元のドキュメントの小見出しの親です。元のドキュメント内の位置に関する追加のコンテキストを含むチャンクを提供できます。チャンクには、最大 2 レベルの見出しを含めることができます。

次のステップ