適用対象:
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 によってモデルが変更され、ドキュメントが更新される可能性があります。
-
バッチ推論用に最適化された AI Functions をサポートする米国リージョンのワークスペース。
- ワークスペースが米国内ではなく、バッチ推論用に最適化された AI Functions をサポートするリージョンにある場合は、ワークスペースで クロス地理ルーティングを有効にする必要があります 。
- これらのリージョンのお客様の場合、
ai_parse_document機能は 、セキュリティ強化アドオンとコンプライアンス アドオンがあるワークスペースでも使用できますが、ワークスペース管理者は プレビュー ポータルで有効にする必要があります。
- Databricks Runtime 17.1 以降。
- サーバーレス コンピューティングを使用している場合は、次も必要です。
- サーバーレス環境のバージョンは 3 以上に設定する必要があります。これにより、
VARIANTなどの機能が有効になります。 - Python または SQL を使用する必要があります。 その他のサーバーレス機能と制限事項については、「 サーバーレス コンピューティングの制限事項」を参照してください。
- サーバーレス環境のバージョンは 3 以上に設定する必要があります。これにより、
-
ai_parse_document関数は、Databricks ノートブック、SQL エディター、Databricks ワークフロー、ジョブ、または Lakeflow 宣言パイプラインを使用して使用できます。 - 課金の詳細については、 ベータ製品の価格に 関するページを参照してください。
データのセキュリティ
ドキュメント データは、Databricks セキュリティ境界内で処理されます。 Databricks では、 ai_parse_document function 呼び出しに渡されるパラメーターは格納されませんが、使用される Databricks Runtime バージョンなどのメタデータ実行の詳細は保持されます。
サポートされている入力ファイル形式
入力データ ファイルは、BLOB データとしてバイト単位で格納する必要があります。つまり、DataFrame または Delta テーブルのバイナリ型の列です。 ソース ドキュメントが Unity カタログ ボリュームに格納されている場合は、Spark binaryFile フォーマット リーダーを使用してバイナリ型の列を生成できます。
次のファイル形式がサポートされています。
- 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_number、header、footerなど、ドキュメントからコンテキスト レイアウト メタデータを抽出します。 また、テキスト段落などのドキュメントの内容も抽出されます。 バージョン 2.0 の場合、テーブルは HTML で表されます。 出力は VARIANT 型です。
Important
関数の出力スキーマは、major.minor 形式を使用してバージョン管理されます。 Databricks は、サポートされているバージョンまたは既定のバージョンをアップグレードして、継続的な調査に基づいて改善された表現を反映する場合があります。
- マイナー バージョンのアップグレードは下位互換性があり、新しいフィールドのみが導入される場合があります。
- メジャー バージョンのアップグレードには、フィールドの追加、削除、名前変更などの破壊的変更が含まれる場合があります。
出力スキーマを次に示します。
注
2025 年 9 月 22 日の時点で、出力スキーマはバージョン "2.0" にあり、以下を含むように更新されています。
-
descriptionsAI によって生成された図の説明。 -
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 日より前に作成されたワークロードを移行する方法について説明します。
- SQL 要求で、
versionパラメーターを使用して特定のスキーマ バージョンを指定します。
SELECT
ai_parse_document(
content,
map('version', '2.0')
) AS parsed
FROM READ_FILES('/path/to/documents', format => 'binaryFile');
-
elements配列ではなく、pages配列からコンテンツを読み取るコードを変更します。 - メタデータを再評価します。 たとえば、ヘッダーやフッターなどの
pageメタデータを使用していた場合は、elementsからこの情報を抽出するための別のアプローチを開発する必要があります。 - 完全なワークロードを移行する前に、サンプル ドキュメントを使用して更新されたロジックを検証します。
- ユース ケースに関連する場合は、図の説明または画像の永続化を有効にすることを検討してください。
- アクセス許可のチェック たとえば、イメージの永続化を使用する場合は、ターゲット 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.pages、document.elements、error_status、metadata を個々の列に分割します。
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に対する顧客提供のモデルの使用はサポートされていません。 - 日本語や韓国語などの非ラテン文字のテキストを使用して画像を処理する場合、基になるモデルが最適に動作しない場合があります。
- デジタル署名を含むドキュメントは、正確に処理されない場合があります。