領収書の自動仕訳を“実務で回す”:AI-OCR × ルールエンジン × LLMのハイブリッド設計

完全LLMに任せない“堅牢アーキテクチャ”が鍵

AI-OCRは万能ではありません。実務レベルの精度と可用性を両立するには、 OCR → 正規化 → ルールエンジン → LLM補完 → 人手検証段階分離が安定します。

処理パイプライン

  1. 画像前処理:傾き補正・二値化・ノイズ除去(OpenCV)。
  2. OCR:日付・金額・店舗名・税率ごとにフィールド抽出(Vision API / Tesseract+学習)。
  3. 正規化:全角半角/通貨/税計算の検算。閾値を満たさない場合は保留。
  4. ルールエンジン:仕訳推定(勘定科目・税区分)をドメインルールで確定。
  5. LLM補完:不明店舗の業種推定、メモ自動生成、曖昧ケースの候補提示。
  6. ヒューマン・イン・ザ・ループ:UIで差分確認→承認→学習データ化。

ルール優先、LLMは“ギャップ埋め”に限定

税区分や端数処理はルールで確定させ、LLMは不確実な部分の補助に徹します。

スキーマ例とトレーサビリティ

-- PostgreSQL (simplified)
CREATE TABLE receipts (
  id BIGSERIAL PRIMARY KEY,
  tenant_id TEXT NOT NULL,
  uploaded_at TIMESTAMP NOT NULL,
  image_url TEXT NOT NULL,
  pay_date DATE, amount NUMERIC(12,2), tax_rate NUMERIC(4,2),
  vendor TEXT, category TEXT, tax_code TEXT,
  ocr_confidence NUMERIC(5,2),
  status TEXT CHECK (status IN ('pending','needs_review','posted')),
  trace_id TEXT -- 処理全体のトレース
);

CREATE TABLE audit_logs (
  id BIGSERIAL PRIMARY KEY,
  receipt_id BIGINT REFERENCES receipts(id),
  stage TEXT, -- ocr|normalize|rule|llm|human
  payload JSONB, created_at TIMESTAMP DEFAULT now()
);

各ステージを監査ログに残すことで、出力の説明可能性と再現性を担保します。

品質管理:サンプリングと再学習

  • 低信頼/高金額のサンプルを優先検証(リスクベース)
  • 否認データをハード・ネガティブとして再学習
  • 月次で科目・税区分のドリフトをチェック

現場で回る自動化はルール×AI×人の適切な分業から。精度だけでなく、説明責任と運用のしやすさを設計しましょう。

コメント

この記事へのコメントはありません。

関連記事