この記事の音声は準備中です。
音声の一覧・再生リストへドキュメント AI(帳票・PDF の構造化)
この記事の目的
スキャン文書・PDF・帳票から、後続処理(RAG外部の知識ソースを検索し、結果を LLM の入力に加えて回答の根拠にする手法。検索の判断を Agent に任せる構成は Agentic RAG と呼ばれる。・業務システム)に使える構造化データを取り出すパイプラインを設計できるようになります。入力の類型と前処理・OCR と VLM画像とテキストを一緒に扱える(画像を理解できる)モデル。大まかな内容は読めるが、細かい文字・数え上げ・精密な空間関係/座標で急に外す崖を持つ。図表読解・UI 解析・検品などに使い、重要な読み取りは検証・別手段と併用する。画像を「操作」する computer use とは区別する。 直読の使い分け・レイアウトと表の扱い・抽出結果の検証・精度の測り方を、実務判断として持ち帰れる状態を目指します。取り込み後の検索は RAG 実装パターン、出力形式の強制は 構造化出力 が正本です。
対象読者
- 帳票・契約書・PDF を扱う業務システムで、文書からの情報抽出パイプラインを設計する実装担当
- RAG の前段として、非構造の文書を検索可能な形に取り込みたいエンジニア
前提知識
- マルチモーダルモデルの仕組み(数式なしの直感) — 画像入力のトークン経済・精度の崖(本記事の前提)
- 構造化出力 — 抽出結果を型で保証する(本記事の出力側)
本文
概要: 「読める」から「使える」へ
ドキュメント AI(document AI)は、文書を「読む」だけでなく、後続処理が使える構造化データにすることが目的です。単に本文テキストを起こすのではなく、「どの項目が・どの値か」を、検証可能な形で取り出します。本記事は取り出しのパイプラインを扱い、取り込み後の検索は RAG 実装パターン、形式の強制は 構造化出力 に委ねます。
入力の類型と前処理
まず、入力文書の性質で処理が変わることを押さえます。
| 入力 | 性質 | 主な前処理 |
|---|---|---|
| ボーンデジタル PDF | テキスト情報を内部に持つ | テキスト抽出(OCR 不要なことが多い) |
| スキャン PDF・画像 | 見た目だけ(テキスト情報なし) | 傾き補正・ノイズ除去・OCR/VLM |
| 写真 | 歪み・影・低解像度が混じる | 台形補正・明度補正・解像度確認 |
- ボーンデジタルは内部テキスト抽出から比較する: 文字コードやフォント情報を利用でき、画像認識を介さず抽出できます。ただし読み順・表構造・文字マッピングが壊れる場合があります。pypdf のテキスト抽出の解説 を踏まえ、原本の表示と照合し、不十分なページでは OCR/VLM も比較します
- スキャン・写真は前処理が効く: 傾き・歪み・低解像度は読み取り精度を大きく下げます。補正・解像度確保(マルチモーダルモデルの仕組みの解像度とコスト)が効きます
- 混在を前提に振り分ける: 実務では 1 つの取り込み口に複数の性質が混ざります。入力の性質を判定して処理を振り分ける設計にします
OCR か VLM 直読か
文書からテキスト・項目を取り出す方式は、大きく OCR と VLM 直読の 2 系統です。使い分けが設計の要点です。
- OCR(光学文字認識): 画像中の文字を検出してテキスト化する専用技術。文字起こしの精度・座標(位置情報)が得られ、大量処理のコストが読みやすい。レイアウトの復元は別途必要
- VLM 直読: 視覚言語モデル(VLM)に文書画像を直接読ませ、項目を抽出させる。レイアウトを踏まえた「意味的な読み取り」ができる一方、細かい文字・数字で誤りが出やすく(マルチモーダルモデルの仕組みの精度の崖)、画像トークンでコストが上がる
- 使い分けの軸: 精度(細部の正確さ)・コスト(量)・レイアウト保持(構造の復元)で選びます。「文字起こしの正確さが要る大量処理」は OCR、「レイアウトを踏まえた項目抽出」は VLM、と役割で分け、両者を組み合わせる(OCR で文字と座標、VLM で意味的な項目対応)ことも多いです
レイアウトと表の扱い
文書の価値はレイアウトに宿ります。段組・表・ヘッダーフッターを潰すと、意味が失われます。
- レイアウト解析: 段組・見出し・本文・ヘッダーフッター・図表領域を区別します。単純にテキストを連結すると、段組が混ざり・ヘッダーが本文に紛れます
- 表の抽出: 表はレイアウト復元が複雑になりやすい要素です。セルの結合・複数行・入れ子で崩れやすく、「もっともらしいが行列がずれた表」が生まれます。表は特に抽出後の検証が要ります
- 構造化出力LLM の出力を JSON Schema などの機械可読なスキーマに従わせる技術。後続の処理がコードである出力(分類・抽出・スコア)に使う。へ接続: 抽出した項目を、スキーマで型付けした構造化データにします(構造化出力)。「請求金額は数値・日付は日付型」と型で縛ると、後続システムが使えます。ただし形式が正しいことと値が正しいことは別で、後者は次項で検証します
帳票処理の実務: 抽出 + 検証 + 人手振り分け
帳票のような正確さが要る文書では、抽出だけで終わらせず、検証と人手を組み合わせます。
- 抽出 + 検証ルール: 抽出した項目に、業務ルールでの検証を重ねます(合計 = 明細の和・日付の妥当性・必須項目の充足・コードの存在チェック)。モデルの抽出を業務ロジックで裏取りします
- 信頼度による人手振り分け: モデル・OCR の確信度や検証結果に応じて、「自動確定 / 人手確認 / 却下」に振り分けます(信頼度と較正(calibration)の選択的予測確信度が閾値を下回ったら答えずに棄権する(「わからない」と言う・人へエスカレーションする)設計。棄権を増やすと答えたケースの精度は上がるがカバレッジは下がるため、閾値は失敗コストで決める。を、抽出の人手エスカレーションに使う形)。全件を人が見るのでも、全件を自動確定するのでもなく、振り分け基準を評価データで検証する設計です。モデルの自己申告確信度だけでは判断せず、自動確定した結果も抜き取り確認します。
- 長文書の分割とメタデータ: 長い文書は扱いやすい単位に分割し、文書単位のメタデータ(種別・日付・発行元)を付けます。分割は後続の RAG での検索単位にも影響します(RAG 実装パターンのチャンク設計)
精度の測り方
ドキュメント AI は「動いた」では不十分で、精度を測って運用します。
- グラウンドトゥルースを作る: 正解データ(人が確認した抽出結果)を用意し、抽出結果と突き合わせます(評価データセットの構築と保守)。作るのは手間ですが、精度を語るには不可欠です
- 項目ごとに測る: 「文書全体の精度」でなく、項目ごと(金額・日付・宛名)に正確さを測ります。重要項目の精度が要件を満たすかで判断します
- サンプリング検品: 全件のグラウンドトゥルースが作れない場合、サンプリングして検品し、精度を推定します。とくに表・細かい数字は誤りが出やすいので重点的に見ます
- 失敗の型を知る: どういう文書・項目で落ちるか(低解像度・特殊レイアウト・手書き)を把握し、前処理・人手振り分けの条件に反映します
実務での注意点
アンチパターン
- 内部テキストを確認せず全ページを OCR にかける → 利用できる文字情報を捨て、認識誤りや費用を増やす場合がある → 内部抽出と原本表示を照合し、必要なページで OCR/VLM を比較する
- VLM 直読の抽出を検証なしで確定する → 細かい数字・表の誤りをそのまま業務システムに流す → 業務ルールで検証し、危ういものは人手に回す
- 表を単純なテキスト連結で扱う → 行列がずれて意味が壊れる → レイアウト解析で表構造を保持し、抽出後に検証する
- リスクと品質要件を決めず自動確定率だけを上げる → 重要項目の誤りが流出する → 検証結果と測定済みの信頼度で振り分け、要件によっては全件確認も選ぶ
- 精度を測らずに本番投入する → どの項目がどれだけ正しいか分からないまま業務に使う → グラウンドトゥルース + 項目別・サンプリングで測る
チェックリスト
- 入力の性質(ボーンデジタル / スキャン / 写真)を判定して処理を振り分けている
- ボーンデジタル PDF の内部抽出を試し、読み順・表・文字の破損がある場合の代替処理を設計した
- OCR と VLM 直読を、精度・コスト・レイアウト保持で使い分けた(必要なら組み合わせた)
- 段組・表・ヘッダーフッターのレイアウトを保持している
- 抽出項目を構造化出力で型付けし、業務ルールで検証している
- 信頼度・検証結果で「自動確定 / 人手確認 / 却下」に振り分けている
- グラウンドトゥルースを用意し、項目別・サンプリングで精度を測っている
関連トピック
- 画像理解の実務パターン — VLM 直読の土台となる画像読解のプロンプト設計
- マルチモーダル RAG — 構造化した文書を検索する次段
- 構造化出力 — 抽出結果を型で保証する(形式保証と内容保証は別)
- RAG 実装パターン — 取り込み後の検索・チャンク設計
- 信頼度と較正(calibration) — 人手振り分けの確信度判断
- 評価データセットの構築と保守 — グラウンドトゥルースの作り方
- マルチモーダルモデルの仕組み(数式なしの直感) — 画像入力のコスト・精度の崖
- 表計算・構造化データ操作エージェント — 抽出後の「編集可能な表(生きた計算モデル)」の操作
参考資料
- pypdf, Extract Text from a PDF — PDF の文字層・OCR・表や読み順の抽出上の制約(アクセス日: 2026-09-10)
- OpenAI, Images and vision — 小さい文字・図表・位置・数え上げの制約を示す実装例。他の VLM の精度は別途評価します(アクセス日: 2026-09-10)