Data ExtractionDocument AILLM API

LLMデータ抽出:PDFから構造化JSONへ(2026年版)

約1分

請求書パイプラインは先四半期に40,000件の文書を取り込みました。照合レポートは完璧に見えました——誰かがベンダー項目の3%が静かに間違っていることに気づくまでは:数字が入れ替わった請求書番号、誤った行に付いた税項目、欠落した通貨記号。誰も気づきませんでした。なぜなら抽出は失敗しなかったからです。間違った答えで成功したのです。

それが文書抽出特有の恐怖です:失敗は沈黙します。スキーマフィールドが空のまま検証を通過して返っても500エラーはなく、テーブルのカラムがずれても例外は発生しません。LLMデータ抽出は2026年で最も価値の高いLLMワークロードの1つ——請求書、契約書、フォーム、クレーム——でありながら、最もベンチマークに惑わされやすいものでもあります。ベンダーのベンチマークはベンダー自身が、自社のパーサーに都合の良い文書で書くからです。

本ガイドは抽出パイプラインをエンドツーエンドで扱います——parse、schema、extract、validate——正直なベンチマークの問い(あなたの文書での、LLM単体 vs パーシングベンダー vs オープンソース)、静かな破損を防ぐスキーマ設計、合法性を保つPII処理、そして1,000文書あたりのコストモデルです。

文書抽出が実際に含むもの

要点:抽出は5段階のチェーン——パース、理解、スキーマ化、抽出、検証——であり、どの段階も静かに失敗し得ます。

PDF → 1. Parse (layout, tables, OCR) → 2. Understand (vision or text)
        → 3. Schema (what fields, what types) → 4. Extract (LLM)
        → 5. Validate (types, required, confidence) → JSON

チェーンは最も弱い段階と同じ強さしかなく、各段階は異なる形で失敗します:パースはスキャン文書や複数カラムのレイアウトで壊れ、理解は回転・透かし入りのコンテンツで壊れ、スキーマはフィールドが欠落しても誰も気づかないときに壊れ、バリデーションは実装されていないときに壊れます。パイプラインの仕事は、すべての失敗を沈黙ではなく目立つものにすることです。

抽出が本番で失敗する理由

要点:3つの失敗クラス——パースエラー、スキーマドリフト、バリデーション欠如——そのうちログに現れるのは1つだけです。

  1. パースの失敗。 OCRなしのスキャン文書、テキストのスープとして読まれるテーブル、ガラクタの順序に平坦化される複数カラムのレイアウト。パーサーが天井を決めます。LLMはパーサーが破壊したものからは抽出できません。
  2. スキーマドリフト。 文書は変わります——新しいフィールドが現れる、ベンダーがテンプレートを変える——しかしスキーマは固定されたままです。「欠落」がルールになっていないため、抽出は欠落フィールドを検証通過させて静かに返します。
  3. バリデーションの欠如。 型チェックも、必須フィールドのルールも、信頼度スコアリングもありません。パイプラインはJSONを返しますが、正しく見えて実際は正しくないJSONは、JSONがないより悪い:もっともらしい嘘を下流システムに流し込みます。

業界自身の比較——pdfmuxの2026年パーサー対決など——は一貫して、モデル選択よりもパーサー選択の方が精度を動かすことを示しています。それが最初の教訓です:モデルをベンチマークする前に、あなたの文書でパーサーをベンチマークしましょう。

中立なテスト:LLM単体 vs パーサー vs オープンソース

要点:自社のコーパス——単純なテキスト文書、乱雑なスキャン文書、テーブル——で三者比較テストを実行しましょう。ランキングは文書タイプによって逆転するからです。

2026年の状況には3つのファミリーがあります:

  • LLM単体——文書(テキストまたは画像)をマルチモーダルモデルに直接渡します。クリーンなデジタルPDFでは機能しますが、レイアウトが複雑になると劣化します。
  • パーシングベンダー——LlamaParse、Unstructuredなど、LLMの前にレイアウトを正規化する事業者です。複雑な文書でのベンチマークリーダーですが、ページあたりコストがかかります。
  • オープンソース——Docling、Marker、そしてNuExtract3のような新しい抽出特化モデル(構造化抽出用に構築されたオープンウェイトの4B視覚言語モデル(vision-language model)で、NuExtractの価格体系でセルフホスト可能)です。制御性とコスト上限を、運用コストと引き換えに得られます。

決着をつけるテスト:3つの文書セット——クリーンなデジタル、スキャン、テーブル中心——を3つのファミリーすべてに通し、フィールドレベルの精度(「似ている」マッチングではなく)、1,000文書あたりのコスト、失敗率で測定します。正直な予測:LLM単体はクリーンなセットで勝ち、ベンダーはスキャンのセットで勝ち、オープンソースはボリューム時のコスト列で勝ちます——そして、どの列が重要かはあなたのコーパスが決めます。

パイプラインの組み立て方:Parse → Schema → Extract → Validate

要点:スキーマ設計が最もレバレッジの高い段階です——バリデーション付きの厳密なスキーマが、抽出を期待から契約に変えます。

プロバイダー非依存のコアループ——統合チャットエンドポイント上で:

import json
from openai import OpenAI

client = OpenAI()  # unified endpoint

SCHEMA = {  # the contract: required fields fail loudly
    "type": "object",
    "required": ["invoice_number", "vendor", "total"],
    "properties": {
        "invoice_number": {"type": "string"},
        "vendor": {"type": "string"},
        "total": {"type": "number"},
        "currency": {"type": "string", "enum": ["USD", "EUR", "GBP"]},
    },
}

def extract(page_text: str) -> dict:
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        response_format={"type": "json_schema", "json_schema": {"name": "invoice", "schema": SCHEMA}},
        messages=[{"role": "user", "content": f"Extract the invoice data as JSON:\n{page_text}"}],
    )
    return json.loads(resp.choices[0].message.content)

def validate(doc: dict) -> tuple[bool, list[str]]:
    errors = []
    for field in SCHEMA["required"]:
        if field not in doc or doc[field] in (None, ""):
            errors.append(f"missing required field: {field}")
    if not isinstance(doc.get("total"), (int, float)):
        errors.append("total is not a number")
    return (not errors, errors)

本番グレードにする4つのルール:

  1. スキーマは契約です。 必須フィールド、enum、型——モデルの構造化出力モード(本シリーズで解説しているパターン)で強制されるため、「欠落」はキーの不在ではなくエラーになります。
  2. プロンプトの前にパース。 デジタルPDFはLLMに直接渡し、スキャン文書はOCRまたはマルチモーダルモデルを通します。モデルカタログがどのモデルが画像を受け入れるかを示します。判断ルールは「パーサーにテキストが見えるか?」です。
  3. 信頼度とキュー。 すべての抽出に信頼度スコアを付け、低信頼度の行はデータベースではなく人間によるレビューキューに送ります。キューこそ「沈黙の失敗」を目立つものにする仕組みです——そして、リトライ可能な失敗はエラーコードのリファレンスに対応します。
  4. 両端でのPII対策。 可能な場合は抽出前にリダクション、抽出後にスキャン——個人データの取り扱いはパイプラインの付加機能ではなくコンプライアンス要件であり、標準のデータプライバシーチェックリストが適用されます。

スケールとコスト削減の方法

要点:1,000文書あたりのコストは設計上の数字です——文書の複雑度によるティアリングとボリュームによるバッチングで、通常半分以上削減できます。

コストモデル:1,000文書あたり=パースコスト(あれば)+モデルトークン×モデルレート。レバー:

  1. 文書の複雑度でティアリング。 クリーンなデジタル文書は低コストモデルで、スキャンやテーブル中心の文書は高価なパスで実行します。ほとんどのパイプラインは70〜80%がクリーンで、つまりボリュームの70〜80%が低コストレートで済みます——カスタムルーティングが文書ごとの判断を機械的にします。
  2. バックログをバッチ化。 過去文書のダンプは完璧なバッチワークロードです——遅延に寛容で高ボリューム、そして本シリーズのバッチ割引パターンがそのまま50%オフを適用します。
  3. テンプレートをキャッシュ。 同じベンダー、同じテンプレート=同じプロンプトプレフィックスです。安定したプレフィックスはキャッシュ価格にヒットしますが、テンプレートは何千回も繰り返されるため、これは抽出において他の何よりも重要です。
  4. パーサーの内製 vs 購入。 ベンダーはページ単位で課金し、オープンソースはGPU時間単位で課金します。本シリーズのTCO分析がその形を示しています:マネージドはボリューム閾値以下で勝ち、オープンソースは閾値以上で勝ち、閾値は運用負担の許容度次第です。

データを静かに破損させるよくある失敗

要点:4つの静かな破損パターン——どれももっともらしく見える間違ったデータを生み出します。

  1. バリデーションのないスキーマ。 スキーマは記述であり、ゲートではありません。型チェックと必須フィールドのルールがなければ、「スキーマ準拠」の抽出も、データとして通る空フィールドを返します。
  2. スキャン文書でのOCR省略。 テキストのスープが入れば、ガラクタのJSONが出ます——パーサーの失敗はモデルより上流にあり、モデルのプロンプトでは修正できません。
  3. モデルバージョンの追跡がない。 モデルのアップグレードは抽出挙動を変えます。バージョンの固定とリグレッションコーパスがなければ、「モデルが良くなった」は静かに「フィールドがずれた」になります。モデルの文字列とスキーマを一緒にバージョン管理しましょう。
  4. 常にフロンティアモデルだけを使う。 フラッグシップモデルでクリーンな文書を処理するのは、精度を改善しない最も高価な方法です——複雑度でティアリングし、浮いた費用をレビューキューに使いましょう。

FAQ

LLMだけでPDFから抽出できますか?

クリーンなデジタルPDFなら、はい。スキャン文書と複雑なレイアウトは、最初にOCRまたはマルチモーダルモデルが必要です——パーサーが天井を決め、LLMはその範囲内で抽出します。

抽出精度はどう厳密に測定しますか?

文書タイプごとに、手作業でラベル付けしたサンプルに対するフィールドレベルのマッチング(フィールド、型、値が正確に一致)——さらに、型と必須フィールドのバリデーションエラーを別の指標として計測します。「似ている」マッチングは、本ガイドが防ごうとしている3%の静かな誤り問題を生み出します。

1,000文書あたりの抽出コストはいくらですか?

パースコスト(あれば)+あなたのティアでのモデルトークンです——クリーンな文書の低コストモデルは、スキャン文書のフラッグシップモデルを大きく下回ります。複雑度でティアリングすれば平均は大幅に下がり、バックログをバッチ化すればさらに半分になります。

スキーマはどう設計すべきですか?

必須フィールド、enum、型——構造化出力で強制し、必須項目の欠落はエラーとして扱います。スキーマは文書とデータベースの間の契約であり、両者と同じレベルのレビューに値します。

パーシングベンダーは必要ですか、それともオープンソースで十分ですか?

自社のコーパスで三者比較テストを実行しましょう。複雑なレイアウトではベンダーがリードし、オープンソース(Docling、Marker、NuExtract3のような抽出特化モデル)はボリューム時のコストと制御で勝ちます。TCOの閾値は現実に存在し、測定可能です。

抽出時のPIIはどう扱いますか?

可能な場合は抽出前にリダクションし、抽出後に出力をスキャンし、保持期間は最小限にします——標準のデータプライバシー要件は、ソース文書とまったく同じように抽出データにも適用されます。

まとめ

LLMデータ抽出はモデルの特性ではなくパイプラインの規律です:意図的にパースし、スキーマを契約として定義し、その範囲内で抽出し、すべてを検証して失敗を目立つものにします。モデルより先にパーサーをあなたの文書でベンチマークし、文書の複雑度でティアリングし、バックログをバッチ化し、レビューキューを機能として扱いましょう。正しく行えば、抽出はLLMスタックで最も信頼性の高い高ボリュームワークロードになります。間違って行えば、もっともらしい間違ったデータがデータベースに流れ込みます。

ベンチマークと議論する前に、100ページをパイプラインに通しましょう。TokSpan APIキーを取得して——サンプル実行用の$5分の無料クレジット付き(クイックスタート)——自社の請求書で文書あたりのコストを確認してください。