保険金請求の書類、サポートチケット、KYC 書類の自動化は、外部のモデルプロバイダーに文書を一切送ることなく、企業自身のインフラの内側だけで動かせる。言語モデルは七つの段階の一つであり、分類、テキストとレイアウトの抽出、検証、レビューキュー、フィールドごとの評価、監査記録と並ぶ。ここでは、各段階をどう作るか、保険金請求、チケット、KYC で何が違うか、そしてそれを作ると申し出る会社に何を尋ねるべきかを扱う。
保険金請求の書類、サポートチケット、KYC 書類には、共通の問題がある。人がそれを読んで、別のシステムが必要とするフィールドを埋めているのだ。保険金請求は証券番号、損害発生日、明細行になる。チケットはカテゴリと顧客に、本人確認書類は氏名、生年月日、有効期限になる。この仕事に伴う要件は、たいてい何よりも先に告げられる。文書を OpenAI にも、ほかのどの外部モデルプロバイダーにも渡してはならない、と。
モデルをどこで動かすかは別の判断であり、このブログの以前の記事で比較している。この記事は、あなたのインフラの内側でサービングされるオープンウェイトモデルを前提とし、受け付けから、別のシステムが取り込むレコードまで、それを取り巻くパイプラインを説明する。扱うのは仕組みであり、事例紹介ではない。
短く答えるなら、言語モデルは七つの段階の一つであり、七つすべてがあなたのインフラの内側で動く。文書は受け付けの時点で分類される。モデルを呼び出す前に、OCR またはレイアウトモデルでテキストとレイアウトを抽出する。セルフホストのサービングエンジンが、出力を文書の種類ごとのスキーマに制約する。コードがレコードをスキーマと業務ルールに照らして検証する。失敗したフィールドや不確かなフィールドは人によるレビューのキューに回り、その修正が評価セットに還流する。精度はフィールドごと、文書の種類ごとに測る。そしてすべてのフィールドが、それを生み出したモデル、プロンプト、スキーマのバージョンの記録を持つ。保険金請求、チケット、KYC はこの骨格を共有し、ルール、個人データ、保持期間が異なる。amBrain が自社の LLM の仕事について公に裏付けられることは、次がすべてである:私たちは、あるクライアントの FinTech の境界の内側で、LLM インテグレーションを本番に導入した。ブローカーと取引所からの非構造化の通知 ― コーポレートアクション、銘柄の変更、証拠金の変更 ― を抽出・正規化し、トレーディングシステムが取り込む構造化レコードにするものである。クライアントの名前は挙げない。これらの段階のうち、そのプロジェクトがどれを使ったかは開示しない。また、この記事はそのプロジェクトの事例紹介ではない。
データを外部プロバイダーから遠ざけておくことは、モデルの呼び出しではなく、パイプライン全体の性質である。OCR エンジン、レビューツール、評価セット、監査ストア、ログのすべてが、文書か、そこから派生したものを保持している。その全体は、パイロットについての以前の記事に列挙してある。
後に続くすべての段階は、文書の種類に左右される。スキーマ、ルール、レビュアー、保持期間である。だから分類が最初に来て、ルートを決める。メールで届く保険金請求の書類には、保険金請求書、請求書、写真、診断書が含まれうる。添付ファイルはそれぞれ個別に分類し、同じ案件にひも付ける。
ソフトウェアが生成した PDF には、直接読み取れるテキストレイヤーがある。スキャンやスマートフォンの写真にあるのはピクセルだけであり、何かがそれを位置情報付きの文字に変えなければならない。
この段階のオープンソースのエンジンは、ローカルで動く。Tesseract のコマンドラインのドキュメントは、語ごとに信頼度の列を持つ TSV 出力と、語の信頼度を示す属性を持つ hOCR 出力を示しており、これはルーティングの段階が使える語単位のシグナルになる。MIT ライセンスのオープンソースの変換ライブラリである Docling は、PDF の機能としてページレイアウト、読み順、表の構造を挙げ、さらにスキャンした PDF と画像向けの OCR 対応、機微なデータとエアギャップ環境向けのローカル実行を挙げている。
代わりに、視覚言語モデルにページ画像を読ませることもできる。vLLM のマルチモーダル入力に関するドキュメントは、画像入力が OpenAI Vision API に準拠してサポートされていると述べている。どちらがうまくいくかは、あなたの文書で測る。その際、独立した OCR の段階は語の位置と信頼度を返すが、画像を読むモデルは返さないことを念頭に置く。
文書の種類ごとに専用の出力スキーマを持たせ、コードと同じようにバージョン管理する。vLLM の構造化出力に関するドキュメントは、五種類の制約を挙げている。choice、regex、JSON schema、文脈自由文法、structural tag である。バックエンドには xgrammar、guidance、outlines、lm-format-enforcer などがあり、既定値の auto は、リクエストの詳細に基づいて適切なバックエンドを選ぼうとする。
出力は、アプリケーションのコードでも、通常の JSON Schema バリデータでもう一度検証する。バックエンドには違いがある。同じページは、xgrammar、guidance、outlines が Rust 風の正規表現を使う一方、lm-format-enforcer は Python の re モジュールを使うこと、そして推論(reasoning)を有効にした Qwen3 Coder モデルでは、推論の内容が別のフィールドにパースされないと、構造化出力が無効になることがあると記している。トークン上限で止まった生成も、レコードの途中で終わる。二度目のチェックは安くつく。
スキーマに合ったレコードでも、なお誤っていることがある。それを捕まえるチェックは、バックオフィスがいま手作業で行っているものを、文書の種類ごとにコードとして書いたものである:
本人確認書類には、それ専用のバリデータがある。機械読み取り式渡航文書の仕様である ICAO Doc 9303 は、機械読み取り領域のチェックディジットを、7、3、1 の重みを連続して繰り返し適用するモジュラス 10 で計算すると定めており、A から Z の文字は 10 から 35、埋め字はゼロとして数える。また、チェックディジットによって読み取り装置がデータを正しく解釈したことを検証できると述べている。
ルーティングは文書ごとではなく、フィールドごとに決める。請求書の総額だけが通らず、ほかはすべて通った保険金請求なら、人に回すのはファイル全体ではなく一つのフィールドだ。シグナルは次のとおり:
モデル自身が述べる確信度は、あえて外してある。それが関門として弱い理由は、このブログの以前の記事で説明している。
レビュー画面は、提案された値の隣にページを表示し、引用された語をハイライトする。レビュアーは読み直すのではなく、確認すればよい。修正はフィールドごとに、古い値、新しい値、レビュアー、短いリストから選んだ理由とともに保存する。二人目が確認すると、修正は評価セットに加わるが、リリースの判断の根拠となる凍結部分には決して入らない。
パイプライン全体で一つの精度の数字は、肝心な結果を隠してしまう。たとえば、ある国の身分証明書で有効期限だけが失敗し、ほかのフィールドはすべて通っている、といった結果だ。測定は、ルーティングが使うのと同じ切り口で行う:
新しいモデル、プロンプト、スキーマ、OCR のバージョン、バリデータのどれであれ、リリースは本番に出る前に凍結セットで採点され、関門はフィールドごとに設けられる。平均が上がったとしても、どの文書の種類のどのフィールドも、その合格ラインを下回ってはならない。最初のラベル付きセットの作り方は、本番にたどり着かなかったパイロットについての以前の記事で扱っている。
争いのある保険金請求や、受け入れた本人確認についての監査人の問いは、一つの文書の一つのフィールドをめぐるものである。それに答える記録は、パイプラインの実行中に、フィールドごとに一件ずつ、追記専用のストアに書き込まれる:
EU AI Act は、高リスクとみなすシステムにログ記録の要件を課している。第12条(1) は、高リスク AI システムは、システムのライフタイムにわたってイベント(ログ)を自動的に記録することを技術的に可能にしなければならないと定めている。附属書 III は高リスクの用途を列挙しており、その中には、金融詐欺の検出を除く自然人の信用力の評価や、生命保険と健康保険におけるリスク評価と価格設定が含まれる。第6条(3) は、列挙されたシステムがそれでも高リスクとみなされない場合を定めており、たとえば限定的な手続き上のタスクを行う場合がそれに当たる。あるパイプラインが適用範囲に入るかどうかはクライアントの法務チームが判断する問題だが、実行時に書き込むフィールドごとの記録は、どちらにしても役に立つ。
パイプラインは、個人データを元のフォルダよりも多くの場所にコピーする。GDPR 第5条(1)(c) は、個人データが、それを処理する目的との関係で、十分であり、関連性があり、必要な範囲に限定されていることを求めている。第25条(2) は、デフォルトで、それぞれの特定の目的に必要な個人データだけが処理されることを確保する措置を求め、それを収集する量、処理の範囲、保存期間、アクセス可能性に適用している。パイプラインに当てはめると:
OWASP Logging Cheat Sheet は、健康データや政府発行の識別子など、機微な個人データと一部の形態の個人を識別できる情報を、通常はログに直接記録すべきでないデータに挙げ、そうしたデータは代わりに削除、マスク、サニタイズ、ハッシュ化、または暗号化すべきだとしている。
保持期間は文書の種類によって異なり、EU における KYC については資金洗浄対策の法律で定められている。2027年7月10日から適用される Regulation (EU) 2024/1624 の第77条は、義務主体に対し、顧客デューデリジェンスで取得した文書と情報の写しを保持すること、そしてそれらの記録が墨消し(redact)されないよう確保することを求めている。同条は、業務関係の終了日または一時的な取引の日から起算して五年の保持期間を定めており、その後、個人データは削除されるものとする。ただし、同条の例外に服する。KYC の元の記録は、記録システム(system of record)の中で完全なまま残る。パイプライン自身のコピーは、トレースからレビューのスナップショットまで最小化し、それ固有のより短いスケジュールで削除する。
バックオフィスの量は一様ではない。一つの出来事が多くの保険契約者に同時に影響することがあり、障害が起きればチケットのキューが埋まる。キュー、バックプレッシャー、手作業へのフォールバックは、パイロットについての以前の記事で扱っている。セルフホストの文書パイプラインに特有なのは、次の点だ:
あなた自身のインフラ内のアクセラレータのキャパシティは、短期的には固定されている。だから、どのキューから順に譲るかは、スパイクの最中ではなく、事前に決めておく。
文書を外部のモデルプロバイダーから遠ざけておけるかは、モデルがどこで動くかで決まる。パイプラインにそれらを任せられるかは、モデルを取り巻くすべてで決まる。スキーマ、ルール、レビューキュー、そして各フィールドを誰が生み出したかの記録である。
この問いには三種類の答えがあり、それぞれ売っているものが違う。文書処理のベンダーが売るのはプラットフォームであり、オンプレミスに導入できることもあるが、あなたが自分の文書に合わせて設定する。クラウドプロバイダーが売るのは、自社のインフラで動くマネージドサービスだ。エンジニアリング会社は、オープンなコンポーネントとあなたのルールから、あなたの環境の中にパイプラインを構築する。
どの種類の相手と話すにせよ、次の問いで、そのチームが以前にこれを作ったことがあるかどうかが分かる:
一つ目と五つ目の問いへの答えが一般論にとどまるなら、データ経路と監査証跡はまだ設計されていないということだ。
上の要約で述べた本番のインテグレーション以外に amBrain が公に裏付けられること:amBrain は2019年からソフトウェアを作ってきた。働き方は三つの形態がある。フルデリバリー、専任チーム、あるいはあなたのチームに入るエンジニアだ。クライアントはプロダクトとコードの完全な所有権を保持する。ただし当社の再利用可能なコンポーネントは除く。
この記事は、そうしたパイプラインの仕組みを説明するものである。事例紹介ではなく、どのクライアントの名前も挙げず、amBrain が保険金請求、チケット、KYC のシステムを構築したとも主張しない。上で挙げた本番の仕事は、トレーディングシステムのための、ブローカーと取引所からの通知の抽出である。
だから最初の一歩は、モデルを選ぶことではない。どの文書もパイプラインに届く前に、一つの文書の種類について、スキーマ、それをチェックするルール、そして人が必ず見なければならないフィールドを書き出すことである。
現在のアーキテクチャと気になっている障害シナリオをお持ちください。30 分で一緒に確認します。