次の方法で共有


ai_parse_document 関数

適用対象:チェック済み: はい Databricks SQLチェック済み: はい Databricks Runtime

Important

この機能は パブリック プレビュー段階です

ai_parse_document()関数は、Databricks Foundation Model API から最先端の生成 AI モデルを呼び出して、構造化されていないドキュメントから構造化コンテンツを抽出します。

Requirements

Important

この関数を利用するモデルは、Mosaic AI Model Serving Foundation Model API を使用して利用できます。 Databricks で使用できる モデルと、それらのモデル の使用を管理するライセンスとポリシーについては、該当するモデル開発者ライセンスと使用条件を参照してください。

Databricks の内部ベンチマークに従ってパフォーマンスが向上するモデルが将来出現した場合、Databricks によってモデルが変更され、ドキュメントが更新される可能性があります。

データのセキュリティ

ドキュメント データは、Databricks セキュリティ境界内で処理されます。 Databricks では、 ai_parse_document function 呼び出しに渡されるパラメーターは格納されませんが、使用される Databricks Runtime バージョンなどのメタデータ実行の詳細は保持されます。

サポートされている入力ファイル形式

入力データ ファイルは、BLOB データとしてバイト単位で格納する必要があります。つまり、DataFrame または Delta テーブルのバイナリ型の列です。 ソース ドキュメントが Unity カタログ ボリュームに格納されている場合は、Spark binaryFile フォーマット リーダーを使用してバイナリ型の列を生成できます。

次のファイル形式がサポートされています。

  • PDF
  • JPG/JPEG
  • PNG
  • DOC/DOCX
  • PPT/PPTX

Syntax

ai_parse_document(content)
ai_parse_document(content, Map("version" -> "2.0"))

Arguments

  • content: 入力バイト配列データを表す BINARY 式。
  • version: サポートされている出力スキーマのバージョン: "2.0"。
  • 'imageOutputPath': 省略可能。 レンダリングされたページ イメージを Unity カタログ ボリュームに保存して、参照アプリケーションまたはマルチモーダル RAG アプリケーションに保存します。
  • 'descriptionElementTypes': AI によって生成された説明。 バージョン 2.0 では figures の説明のみがサポートされているため、 '*''figure' 同じ動作が生成されます。
    • '' (空の文字列): 説明は生成されません。 これにより、必要なコンピューティングと、多くの数値を含むドキュメントのコストが削減されます。
    • 'figure': 図表のみの説明を生成します。 AI によって生成された説明のみをサポートします。
    • '*' (既定値): サポートされているすべての要素型の説明を生成します。

Returns

ai_parse_document関数は、page_numberheaderfooterなど、ドキュメントからコンテキスト レイアウト メタデータを抽出します。 また、テキスト段落などのドキュメントの内容も抽出されます。 バージョン 2.0 の場合、テーブルは HTML で表されます。 出力は VARIANT 型です。

Important

関数の出力スキーマは、major.minor 形式を使用してバージョン管理されます。 Databricks は、サポートされているバージョンまたは既定のバージョンをアップグレードして、継続的な調査に基づいて改善された表現を反映する場合があります。

  • マイナー バージョンのアップグレードは下位互換性があり、新しいフィールドのみが導入される場合があります。
  • メジャー バージョンのアップグレードには、フィールドの追加、削除、名前変更などの破壊的変更が含まれる場合があります。

出力スキーマを次に示します。

2025 年 9 月 22 日の時点で、出力スキーマはバージョン "2.0" にあり、以下を含むように更新されています。

  • descriptions AI によって生成された図の説明。
  • bbox 境界ボックス座標の場合は 〗。

更新されたスキーマを使用するように既存のワークロードを移行するには、「更新されたスキーマ へのワークロードの移行」を参照してください。

{
  "document": {
    "pages": [
      {
        "id": INT,                // 0-based page index
        "image_uri": STRING       // Path to saved page image (if enabled)
      }
    ],
    "elements": [
      {
        "id": INT,                 // 0-based element index
        "type": STRING,            // Supported: text, table, figure, table, title, caption, section_header,
                                   // page_footer, page_header, page_number, footnote
        "content": STRING,         // Text content of the target element
        "bbox": [                  // Bounding box coordinates
          {
            "coord": [ INT ],
            "page_id": INT
          }
        ],
        "description": STRING      // AI-generated description for figures
      }
    ]
  },
  "error_status": [
    {
      "error_message": STRING       // The detailed error message
      "page_id": INT                // 0-based page index
    }
  ],
  "metadata": {
    "id": STRING,
    "version": STRING,              // The version of the output schema
    "file_metadata": {
      "file_path": STRING,
      "file_name": STRING,
      "file_size": LONG,
      "file_modification_time": TIMESTAMP
    }
  }
}

更新されたスキーマにワークロードを移行する

このセクションの手順では、更新された出力スキーマを使用するために 2025 年 9 月 22 日より前に作成されたワークロードを移行する方法について説明します。

  1. SQL 要求で、 version パラメーターを使用して特定のスキーマ バージョンを指定します。
SELECT
ai_parse_document(
  content,
  map('version', '2.0')
) AS parsed
FROM READ_FILES('/path/to/documents', format => 'binaryFile');
  1. elements配列ではなく、pages配列からコンテンツを読み取るコードを変更します。
  2. メタデータを再評価します。 たとえば、ヘッダーやフッターなどの page メタデータを使用していた場合は、 elementsからこの情報を抽出するための別のアプローチを開発する必要があります。
  3. 完全なワークロードを移行する前に、サンプル ドキュメントを使用して更新されたロジックを検証します。
  4. ユース ケースに関連する場合は、図の説明または画像の永続化を有効にすることを検討してください。
  5. アクセス許可のチェック たとえば、イメージの永続化を使用する場合は、ターゲット Unity カタログ ボリュームに対して適切なアクセス許可が設定されていることを確認します。

Examples

このセクションでは、 ai_parse_documentの使用例を示します。

ai_parse_documentを使用した増分処理シナリオについては、この Databricks アセット バンドルの例を参照してください。

次の例では、 ai_parse_document を使用してテキスト要素を抽出し、すべてのテキスト コンテンツを連結します。 そこから、Claude Sonnet 4 モデルの ai_query を使用して、ベンダー名、日付、請求書番号、購入したアイテムなどの特定の構造化情報を抽出します。

WITH parsed_documents AS (
    SELECT
      path,
      ai_parse_document(
        content,
        map(
          'imageOutputPath', '/Volumes/catalog/schema/volume/parsed_images/',
          'descriptionElementTypes', '*'
        )
      ) AS parsed
    FROM READ_FILES('/Volumes/catalog/schema/volume/source_docs/*.{pdf,jpg,jpeg,png,doc,docx,ppt,pptx}', format => 'binaryFile')
  ),
  parsed_text AS (
    SELECT
      path,
      concat_ws(
        '\n\n',
        transform(
          try_cast(parsed:document:elements AS ARRAY<VARIANT>),
          element -> try_cast(element:content AS STRING)
        )
      ) AS text
    FROM parsed_documents
    WHERE try_cast(parsed:error_status AS STRING) IS NULL
  )
  SELECT
    path,
    text,
    ai_query(
      'databricks-claude-sonnet-4',
      concat(
        'Extract vendor name, date, invoice number, and items purchased from this document. ',
        'Return the result as a JSON object with keys: vendor, date, invoice_number, items (as an array). ',
        text
      ),
      returnType => 'STRING'
    ) AS structured_data
  FROM parsed_text
  WHERE text IS NOT NULL;

次の例では、 ai_parse_document を使用して、1 つのファイルの出力としてドキュメント レイアウト VARIANT 抽出し、次のように指定します。

  • レンダリングされたイメージを保存する場所。
  • 出力スキーマのバージョンをピン留めします。
  • 図に対して AI によって生成された説明を有効にします。
SELECT
  path,
  ai_parse_document(
    content,
    map(
      'version', '2.0',
      'imageOutputPath', '/Volumes/catalog/schema/volume/directory/',
      'descriptionElementTypes', '*'
    )
  ) as parsed_doc
FROM READ_FILES('/Volumes/data/documents/', format => 'binaryFile');

次の例では、 ai_parse_document を使用して、Unity カタログ ボリューム内のファイル VARIANT 出力としてドキュメント レイアウトを抽出します。

SQL

SELECT
  path,
  ai_parse_document(content)
FROM READ_FILES('/Volumes/path/to/your/directory', format => 'binaryFile');

Python

from pyspark.sql.functions import *


df = spark.read.format("binaryFile") \
  .load("/Volumes/path/to/your/directory") \
  .withColumn(
    "parsed",
    expr("ai_parse_document(content)"))
display(df)

Scala

import org.apache.spark.sql.functions._


val df = spark.read.format("binaryFile")
  .load("/Volumes/path/to/your/directory")
  .withColumn(
    "parsed",
    ai_parse_document($"content"))
display(df)

次の例では、 ai_parse_document を使用して、出力の各最上位フィールドを区切ります。 たとえば、document.pagesdocument.elementserror_statusmetadata を個々の列に分割します。

SQL

WITH corpus AS (
  SELECT
    path,
    ai_parse_document(content) AS parsed
  FROM
    READ_FILES('/Volumes/path/to/source/file.pdf', format => 'binaryFile')
)
SELECT
  path,
  parsed:document:pages,
  parsed:document:elements,
  parsed:error_status,
  parsed:metadata
FROM corpus;

Python

from pyspark.sql.functions import *

df = (
  spark.read.format("binaryFile")
    .load("/Volumes/path/to/source/file.pdf")
    .withColumn("parsed", ai_parse_document(col("content")))
    .select(
      "path",
      expr("parsed:document:pages"),
      expr("parsed:document:elements"),
      expr("parsed:error_status"),
      expr("parsed:metadata")
    )
)
display(df)

Scala


import com.databricks.sql.catalyst.unstructured.DocumentParseResultV2_0
import org.apache.spark.sql.functions._


val df = spark.read.format("binaryFile")
 .load("/Volumes/path/to/source/file.pdf")
 .withColumn(
   "parsed",
   ai_parse_document($"content").cast(DocumentParseResultV2_0.SCHEMA))
 .select(
   $"path",
   $"parsed.*")
display(df)

デバッグ インターフェイス ノートブック

次のノートブックは、 ai_parse_document 関数の出力を分析するためのビジュアル デバッグ インターフェイスを提供します。 対話型の境界ボックス オーバーレイを使用して解析されたドキュメントをレンダリングし、ドキュメントの各領域から抽出されたコンテンツを調べることができます

デバッグ インターフェイス ノートブック

ノートブックを入手

制限事項

  • Databricks は、すべての機能の改善に継続的に取り組んでいますが、LLM は新しいテクノロジであり、エラーが発生する可能性があります。
  • ai_parse_document関数は、構造情報を保持しながらドキュメントコンテンツを抽出するのに時間がかかる場合があります。特に、解像度の低い高密度コンテンツまたはコンテンツを含むドキュメントの場合です。 場合によっては、関数の実行またはコンテンツの無視に時間がかかる場合があります。 Databricks は、待機時間の改善に継続的に取り組んでいます。
  • サポートされている入力ファイル形式を参照してください。 Databricks は、組織にとって最も重要な追加の形式に関するフィードバックを歓迎します。
  • ai_parse_documentをサポートするモデルのカスタマイズや、ai_parse_documentに対する顧客提供のモデルの使用はサポートされていません。
  • 日本語や韓国語などの非ラテン文字のテキストを使用して画像を処理する場合、基になるモデルが最適に動作しない場合があります。
  • デジタル署名を含むドキュメントは、正確に処理されない場合があります。