【Dify】経費精算チェックを自動化する方法|規程違反と差戻しをAIで判定

NoCode
この記事は約11分で読めます。

毎月の経費精算で、領収書と申請内容の突き合わせに時間を取られていませんか。金額の転記ミスや日付の取り違え、交際費の参加人数の書き漏れなど、確認する項目は多岐にわたります。差戻しの連絡を書くのも地味に手間がかかる作業です。さらに2026年10月からは、インボイス制度の経過措置により、免税事業者等からの仕入れに係る控除割合が80%から70%に変わりました。

この記事では、ノーコードでAIアプリを作れる開発基盤「Dify(ディフィー)」を使い、経費精算の一次チェックを自動化するワークフローの作り方を解説します。ノード構成、コピペで使えるプロンプト、経理担当者が最終判断する承認ステップまでを手順に沿って紹介します。

対象は、経費精算の確認を担当している経理・総務の方や、Difyを業務で使い始めた管理部門の方です。プログラミングの経験がなくても読み進められる構成にしています。

スポンサーリンク

Difyで経費精算チェックを自動化すると何が変わるか

経費精算の確認作業は、分解すると「読む」「計算する」「規程と照らす」「判断する」「連絡する」の5つに分けられます。このうち、読む・計算する・連絡文を書く作業は、AIとプログラムで大きく肩代わりできます。一方で、勘定科目の最終判断や税務上の扱いは、経理担当者が責任を持って決めるべき領域です。

Difyのワークフロー機能を使うと、これらの作業を「ノード」と呼ばれる部品の組み合わせで表現できます。ノードとは、AIへの指示や計算、条件分岐などを担当するブロックのことです。画面上でつなぐだけで処理の流れを作れます。

自動化しやすいチェック項目と人が残すべき判断

役割分担の目安は次の表のとおりです。

チェック項目担当理由
領収書の日付・支払先・金額の読み取りLLMノード(画像認識)レイアウトの違いや手書きにも柔軟に対応できる
申請金額と領収書金額の一致確認Codeノード数値の比較は計算で確実に判定できる
登録番号の形式(T+13桁)Codeノード形式は正規表現で機械的に判定できる
上限額・対象科目など規程との照合LLMノード+ナレッジ社内規程の文書を参照する必要がある
交際費か会議費かなどの最終判断経理担当者税務判断や社内の事情を伴う

ポイントは「計算はコード、読み取りと文章はAI、判断は人」と役割を分けることです。生成AIは数字の比較を誤ることがあるため、金額の一致確認をAIに任せきりにしない設計が安全です。

経費精算チェックで押さえる2026年10月時点のルール

AIに規程を照合させる前に、前提となる税務ルールを整理しておきます。以下は執筆時点(2026年10月)の国税庁の公表情報にもとづく概要です。個別の取扱いは、顧問税理士や所轄税務署に確認してください。

インボイスの登録番号と経過措置(70%控除)

インボイス発行事業者以外(免税事業者など)からの課税仕入れは、経過措置により一定割合を控除できます。国税庁の令和8年度税制改正特集によると、2026年10月1日から2年間は70%、2028年10月1日から2年間は50%、2030年10月1日から1年間は30%と段階的に縮小されます。

また、基準期間の課税売上高が1億円以下などの事業者は、税込1万円未満の課税仕入れについてインボイスの保存がなくても帳簿の保存で控除できる「少額特例」があります。適用期間は2029年9月30日までです。ワークフローでは、登録番号の有無と金額をもとに「経過措置の対象かもしれない」というフラグを立て、最終判断は経理が行う形にします。

基本的にはAIの判断は確率論のため完全ではないため、このblogではhuman in the loopと呼ばれる、人間による最終確認・判断を推奨しています

交際費の1人当たり1万円基準

国税庁のタックスアンサーでは、2024年4月1日以後に支出した飲食費は、1人当たり10,000円以下であれば一定の要件のもと交際費等から除かれるとされています。適用には、飲食の年月日、参加した取引先の氏名や関係、参加人数、費用の額、店舗の名称と所在地などを記載した書類の保存が必要です。

これらは申請フォームの入力項目に組み込み、AIに不足をチェックさせると効果的です。

Dify 経費精算ワークフローのノード構成

ワークフローの全体像です。上から順に処理が進みます。

  • ① 開始(User Input):申請者名、利用日、申請金額、勘定科目、用途、参加人数、参加者情報、領収書ファイル(画像またはPDF)を受け取る
  • ② LLMノード(領収書読み取り):画像認識に対応したモデルで、日付・支払先・税込金額・税率区分・登録番号を構造化出力(JSON)で抽出する
  • ③ Codeノード(機械照合):申請金額との差額、登録番号の形式、1人当たり金額、申請期限の超過を計算する
  • ④ ナレッジ検索(Knowledge Retrieval):社内の経費精算規程から、科目に関連する条文を取り出す
  • ⑤ LLMノード(規程照合):②〜④の結果をもとに「OK/要確認/差戻し」を判定し、理由と差戻し文案を作る
  • ⑥ IF/ELSEノード:判定結果で処理を分岐する
  • ⑦ Human Inputノード:要確認・差戻しの案件を経理担当者にメールで送り、承認か差戻しかを選んでもらう
  • ⑧ HTTP Requestノード/出力:結果をチャットツールや経費精算システムに連携する

⑦のHuman Inputノードは、ワークフローを一時停止して人の判断を待つ機能です。Dify公式ドキュメントによると、配信方法はWebアプリとメールから選べ、メールならDifyのアカウントがない人にも送れます。回答は最初の1件のみ受け付けられ、既定のタイムアウトは3日間です。なお、トリガーで起動したワークフローではWebアプリ配信を使えない点に注意してください。

Difyで経費精算チェックを作る設定手順

ここからは、Difyのクラウド版を前提に作成手順を説明します。画面名称はバージョンにより異なる場合があります。

  1. Difyにログインし、「アプリを作成」から「ワークフロー」を選びます。
  2. 開始ノードに入力項目を追加します。領収書はファイル型、金額と参加人数は数値型にします。
  3. 「ナレッジ」に経費精算規程(PDFやテキスト)を登録します。条文ごとに見出しを付けておくと検索精度が上がります。
  4. LLMノードを追加し、画像に対応したモデルを選んで領収書ファイルを入力に指定します。構造化出力をオンにし、抽出項目をJSONスキーマで定義します。
  5. Codeノードを追加し、後述のコードで申請値と読み取り値を照合します。
  6. ナレッジ検索ノードと2つ目のLLMノードを追加し、判定と差戻し文案を作らせます。
  7. IF/ELSEノードで「OK」以外をHuman Inputノードへ流し、承認・差戻しのボタンを設定します。
  8. テスト実行で過去の申請(個人情報をマスクしたもの)を10件ほど流し、判定のぶれを確認してから公開します。

領収書読み取りプロンプト例

LLMノードのシステムプロンプトに、次の文章を設定します。読めない項目を推測で埋めない指示を必ず入れてください。

あなたは経理部の領収書確認担当です。
添付された領収書から次の項目を読み取り、JSONで出力してください。
- issue_date:発行日(YYYY-MM-DD)
- payee:支払先の名称
- total_amount:税込合計金額(数値)
- tax_rate:10% / 8% / 混在 / 不明
- registration_no:登録番号(T から始まる番号)。記載がなければ空文字
- note:但し書き

ルール:
- 読み取れない項目は推測せず null とする
- 金額はカンマや円記号を除いた数値にする
- 領収書以外の画像の場合は note に「領収書ではない」と書く

規程照合と差戻し文案のプロンプト例

あなたは経費精算の一次チェック担当です。
以下の情報を確認し、判定を OK / 要確認 / 差戻し のいずれかで出してください。

[申請内容] {{申請内容}}
[領収書の読み取り結果] {{読み取り結果}}
[機械照合の結果] {{照合結果}}
[関連する社内規程] {{規程の抜粋}}

判定ルール:
- 機械照合で金額差がある場合は必ず差戻し
- 規程の上限超過、必須項目の不足は差戻し
- 登録番号がない、科目の判断が分かれる場合は要確認
- 規程に根拠がない指摘はしない

出力:判定、理由(根拠となる規程の条文名を明記)、
申請者への差戻しメッセージ案(敬語・150字以内)

Codeノードの照合ロジック例

AIの読み取り結果と申請値を数値で比較するPythonの例です。

import re

def main(apply_amount: float, receipt_amount: float,
         reg_no: str, persons: int, account: str) -> dict:
    diff = apply_amount - (receipt_amount or 0)
    reg_ok = bool(re.fullmatch(r'T\d{13}', reg_no or ''))
    per_head = apply_amount / persons if persons else 0
    flags = []
    if abs(diff) > 0:
        flags.append('金額差あり')
    if not reg_ok:
        flags.append('登録番号なし・形式不正')
    if account == '会議費' and per_head > 10000:
        flags.append('1人当たり1万円超')
    return {'diff': diff, 'reg_ok': reg_ok,
            'per_head': per_head, 'flags': ', '.join(flags)}

登録番号は形式が正しくても、実際に登録されているとは限りません。国税庁の「インボイス制度 適格請求書発行事業者公表サイト」で確認する運用を組み合わせてください。

料金プランと運用の目安

Difyクラウド版の主なプランは次のとおりです(執筆時点の公式料金ページより)。最新情報は公式サイトをご確認ください。

プラン月額メッセージクレジットメンバー数
Sandbox無料2001
Professional59米ドル5,000/月3
Team159米ドル10,000/月50
Community(セルフホスト)無料――

データを社外に出したくない場合は、セルフホスト版も選択肢です。セルフホスト版の運用方法については、いつかblogで書こうかと思いますが、クラウドのインスタンス運用に慣れている方向けなので、それ以外は基本クラウドを使ってください。

導入時の注意点・リスク(個人情報・電子帳簿保存法)

経費精算のデータには、取引先の担当者名や従業員の行動履歴が含まれます。次の点を事前に確認しておきましょう。

  • 個人情報の取扱い:交際費の参加者氏名は個人情報です。利用するAIモデルの提供元でデータが学習に使われない設定か、社内の情報管理規程に適合するかを確認します。
  • 読み取りミス(ハルシネーション):AIはもっともらしい誤りを出すことがあります。金額は必ずCodeノードで照合し、読めない項目はnullにさせる設計にします。
  • 電子帳簿保存法との関係:Difyはチェックのための仕組みであり、帳簿書類の保存システムではありません。領収書の保存は、スキャナ保存や電子取引の要件を満たす既存の経費精算システム等で行います。
  • 権限管理:ワークフローを編集できる人を限定し、プロンプトや規程ナレッジの変更履歴を残します。
  • 社内規程との整合:AIの判定はあくまで一次チェックと位置付け、最終承認者を経費精算規程に明記します。

導入前のチェックリストとして、次の項目を確認してください。

  • ☐ 経費精算規程の最新版をナレッジに登録したか
  • ☐ テストデータの個人情報をマスクしたか
  • ☐ AIの判定を最終決定にしない運用ルールを決めたか
  • ☐ 経過措置や少額特例の判断者(経理・税理士)を決めたか
  • ☐ 規程改定時にナレッジを更新する担当を決めたか

よくある質問(FAQ)

Q1. Difyだけで経費精算システムの代わりになりますか?

代わりにはなりません。Difyは申請内容のチェックや差戻し文の作成を自動化する仕組みとして使うのが現実的です。領収書の保存、承認ワークフローの証跡管理、会計ソフトへの連携は、電子帳簿保存法に対応した既存の経費精算システムに任せ、その前段にDifyを挟む構成がおすすめです。

Q2. 手書きの領収書やレシートも読み取れますか?

画像認識に対応したモデルを使えば、手書きでもある程度は読み取れます。ただし、かすれや折り目があると誤読の可能性が高まります。読み取れない項目はnullにする指示を入れ、Codeノードで金額差を検知した場合は必ず人が確認する流れにしておくと安全です。

Q3. 登録番号が本当に有効かまでAIで判定できますか?

AIが判定できるのは「T+13桁」という形式までです。実際に登録されている事業者かどうかは、国税庁の公表サイトで確認する必要があります。件数が多い場合は、公表サイトが提供するWeb-APIをHTTP Requestノードで呼び出す方法もありますが、利用条件は公表サイトで事前に確認してください。

まとめ:Dify 経費精算チェックは小さく始めて育てる

Difyを使えば、領収書の読み取り、金額の照合、規程との突き合わせ、差戻し文の作成までを1つのワークフローにまとめられます。成功のコツは、計算はコード、読み取りと文章はAI、最終判断は人という役割分担を崩さないことです。2026年10月からのインボイス経過措置の変更のように、ルールは定期的に変わるため、規程ナレッジを更新し続ける運用も欠かせません。

次のアクションとして、まずは交通費や会議費など件数の多い科目に絞り、Sandboxプランで過去の申請10件を流してみてください。判定のぶれを確認しながら、対象科目を少しずつ広げていくのがおすすめです。

関連記事

参考リンク

タイトルとURLをコピーしました