Media > AI活用ユースケース > 経理 > 受け取った請求書が適格請求書の要件を満たしているかを、支払う前に点検する

受け取った請求書が適格請求書の要件を満たしているかを、支払う前に点検する

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

仕入先から届いた請求書を読み取り、適格請求書として必要な記載事項がそろっているかを1枚ずつ点検します。足りない項目のある請求書を支払う前に洗い出し、再発行を依頼する先の一覧にします。

サマリー
利用ツール
AWS Textract/Azure AI/ChatGPT/Claude/Gemini/Google Document AI/Make/n8n/Power Automate/Zapier
対象業界
不動産/士業/小売/建設/自治体
対象部門
経理/財務
対象業務
データ入力・転記/内容確認・チェック
主な課題
人手が足りない/入力作業が多い/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
必須
現在工数
50h/月
AI導入後
12.5h/月
想定削減
75%
年間削減
450h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 紙の請求書を受け取り、スキャンして共有フォルダに保存する。PDFで届いたものはそのまま保存する
  2. メール本文に金額だけが書かれているものは、担当者が印刷するかPDFにして同じフォルダへ入れる
  3. 1枚ずつ開き、売手の名称、登録番号、取引年月日、取引内容、税率ごとの金額、消費税額が書かれているかを目で見る
  4. 登録番号が書かれていれば、取引先マスタのスプレッドシートを開いて突き合わせる
  5. 足りない項目があれば、付箋またはスプレッドシートにメモする
  6. メモがたまったところで、担当者が取引先ごとに再発行の依頼メールを書く
  7. 記載がそろったものは会計システムへ入力し、支払の手続きに回す
導入後(After)
  1. 紙の請求書をスキャンし、PDFとメール本文のものとあわせて受領フォルダに保存する
  2. 自動ファイルの保存をきっかけにワークフローが動き、形式・サイズ・ページ数を確かめる
  3. 自動OCRが請求書の項目と明細、読み取りの信頼度を返す
  4. 自動取引先マスタを引き、その取引先が簡易インボイスの対象かどうかで点検の基準を選ぶ
  5. 自動記載事項を1項目ずつ見て、`ok` / `missing` / `unreadable` / `ambiguous` を付ける
  6. 自動登録番号の値の有無を確かめ、取引先マスタと突き合わせる
  7. 自動項目ごとの結果と基準から、`pass` / `needs_resend` / `needs_human` を機械的に決める
  8. 自動`needs_resend` のものについて、再発行を依頼する文面の下書きを作る
  9. 担当者が `needs_resend` と `needs_human` のものだけを開き、判定を確かめる
  10. 差し戻すと決めたものについて、下書きを直して取引先へ送る
  11. 【人/自動】 `pass` のものは会計システムへ回す
各工程の詳しい説明を読む
  1. 紙の請求書を受け取り、スキャンして共有フォルダに保存する。PDFで届いたものはそのまま保存する
  2. メール本文に金額だけが書かれているものは、担当者が印刷するかPDFにして同じフォルダへ入れる
  3. 1枚ずつ開き、売手の名称、登録番号、取引年月日、取引内容、税率ごとの金額、消費税額が書かれているかを目で見る
  4. 登録番号が書かれていれば、取引先マスタのスプレッドシートを開いて突き合わせる
  5. 足りない項目があれば、付箋またはスプレッドシートにメモする
  6. メモがたまったところで、担当者が取引先ごとに再発行の依頼メールを書く
  7. 記載がそろったものは会計システムへ入力し、支払の手続きに回す

(a)不備は支払った後に分かる。 締め日直後の忙しさのなかで3番と4番を省いて処理し、後になって記載の不足が見つかることがあります。そのときには支払はすでに終わっており、何か月も前の請求書の再発行を取引先に頼むことになります。 取引先にとっても当時の伝票を探し直す作業で、頼むほうも頼まれるほうも重い仕事です。

(b)書式がばらばらで、見る場所が決まらない。 小規模な取引先ほど手書きやExcelの自作の書式で、どこに何が書かれているかが決まっていません。「登録番号がどこにあるか探す」ところから始まる請求書が、毎月何十枚もあります。

(c)書いてあるように見えて値が無い。 「登録番号」という欄はあるのに空欄のまま、税率ごとの区分が1行にまとまっている、消費税額が合計だけ書かれている。欄が印刷されていると、埋まっているように見えてしまいます。 目視で見落とすのは、たいていこの型です。

(d)全件を目視するのは続かない。 750枚を4名で見ると、1枚4分でも月50時間です。丁寧にやるほど支払の期日に間に合わなくなるので、忙しい月から順に省かれます。不備のものだけを人に回す形にしないと、点検は定着しません。

  1. 【人】 紙の請求書をスキャンし、PDFとメール本文のものとあわせて受領フォルダに保存する
  2. 【自動】 ファイルの保存をきっかけにワークフローが動き、形式・サイズ・ページ数を確かめる
  3. 【自動】 OCRが請求書の項目と明細、読み取りの信頼度を返す
  4. 【自動】 取引先マスタを引き、その取引先が簡易インボイスの対象かどうかで点検の基準を選ぶ
  5. 【自動】 記載事項を1項目ずつ見て、okmissingunreadableambiguous を付ける
  6. 【自動】 登録番号の値の有無を確かめ、取引先マスタと突き合わせる
  7. 【自動】 項目ごとの結果と基準から、passneeds_resendneeds_human を機械的に決める
  8. 【自動】 needs_resend のものについて、再発行を依頼する文面の下書きを作る
  9. 【人】 担当者が needs_resendneeds_human のものだけを開き、判定を確かめる
  10. 【人】 差し戻すと決めたものについて、下書きを直して取引先へ送る
  11. 【人/自動】 pass のものは会計システムへ回す

9番目が、この設計の分かれ目です。人が見るのは全件ではありません。 記載がそろっているものは一覧で流し見て終わりにし、不備と出たものと判断がつかなかったものだけに時間を使います。 全件を人が確認する設計にすると、50.0時間はほとんど減りません。

7番目を機械の規則で決めているのも、意図してのことです。 項目が足りないという事実の記録はAIにさせますが、その不足を差し戻す理由とするかどうかは規則の側に置きます。 どこまでを不備とするかは自社の取り決めで、後から変わるからです。

02今回想定するシステム構成

構成図
請求書(紙・PDF・メール本文)
   │  紙はスキャン、メール本文はPDF化
   ▼【トリガー】受領フォルダへの保存
Make
   ├──▶ ファイル形式・サイズ・ページ数の確認
   ▼
Azure AI Document Intelligence(事前構築済み請求書モデル)
   │   請求書の項目・明細・読み取りの信頼度を返す
   ▼
Make ── 取引先マスタを引く(登録番号/簡易インボイスの区分)
   ▼
Claude API ── 記載事項の充足を1項目ずつ見る
   │   ① 相手方の名称   ② 売手の名称と登録番号   ③ 取引年月日
   │   ④ 取引内容       ⑤ 税率ごとの対価と税率   ⑥ 税率ごとの消費税額等
   ▼
Make ── 登録番号の値の確認と取引先マスタとの照合
   ▼
判定(要件充足 pass / 不備あり needs_resend / 判断不能 needs_human)
   ▼
【人が不備のものだけ確認】
   ├──▶ Claude API ── 仕入先への再発行依頼の下書き
   └──▶ 会計システムへ
役割想定する製品代替候補
ワークフローMakePower Automate、n8n、Zapier
OCRAzure AI Document Intelligence(事前構築済み請求書モデル)Google Document AI、AWS Textract
処理Claude API(記載事項の充足の判定と差し戻し文の下書き)OpenAI API、Gemini API

会計システムと取引先マスタは、新しく足すものではありません。 会計システムには判定を通ったものだけが回り、この構成からは書き込みません。取引先マスタのスプレッドシートに、登録番号の列と「簡易インボイスの対象か」の列を足すのが最初の準備作業です。

土台になるのは、Azure AI Document Intelligence の事前構築済み請求書モデルです。 光学式文字認識(OCR)の機能で、売上請求書・公共料金・発注書から主要なフィールドと品目を分析・抽出するとされ、現在27言語の請求書をサポートしています。

入力できるのはPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)で、事前構築済みモデルはこの2つが対象です。 Office形式は「読む」「レイアウト」「カスタム分類」の機能で扱うため、メール本文で届く請求はPDFにしてから入れます。 PDFとTIFFは最大2,000ページまで(Free レベルは最初の2ページのみ)、サイズは有料(S0)レベルで500MBです。

返ってくるJSONは3つに分かれます。 readResults は認識された全テキストと選択マークをページ・行・単語で整理したもの、pageResults は抽出されたテーブルとセルに信頼度が付いたもの、documentResults はモデルが検出した請求書固有の値と品目で、請求書ID、請求先、顧客、合計、明細を探す場所です。

この構成でいちばん効くのは、キーと値のペアの扱いです。 返却は既定では無効で、オプションで有効にできます。そしてキーが存在しても関連付けられた値が無い場合、キーだけが単独で存在することもあるとされています。第3章の(c)そのものです。項目名の有無ではなく、値の有無で判定する理由が、ここにあります。

03どうやって実装するのか

Step1

処理の起点を決める

受領フォルダにファイルが保存されたことを起点にします。 締め日の直後に集中して届くため、1日1回の定時実行にはしません。 まとめて処理すると、不備が見つかるのが支払の直前になり、再発行を頼む時間が残りません。

入る経路は3つあります。紙をスキャンしたもの、PDFで届いたもの、メール本文をPDFにしたものです。いずれも同じフォルダに入れ、そこから先は区別しません。経路ごとに分けると、どれか1つだけが点検されない期間ができます。

保存のたびに1枚ずつ動かし、処理が終わったファイルは処理済みフォルダへ移します。 移すのは成功したときだけにします。受領フォルダに残っている数が、そのまま未処理の数になります。

Step2

入力データを集める

データ中身取得元
請求書ファイルPDFまたは画像。受け取った日時と経路受領フォルダ
読み取り結果請求書固有の値と品目、全テキスト、テーブルとセル、読み取りの信頼度Azure AI Document Intelligence
取引先の情報取引先コード、名称、登録番号簡易インボイスの対象か、過去の不備の履歴取引先マスタ
自社の情報自社の名称と、請求書に書かれうる表記ゆれの一覧自社で用意する一覧

質を決めるのは、いちばん下の2つです。 取引先マスタに登録番号が無ければ、読み取った番号を突き合わせる先がありません。自社名の表記ゆれの一覧が無ければ、「株式会社」が前か後ろか、旧社名かだけで、相手方の名称が書かれていないという判定になります。

過去の不備の履歴は、取引先ごとの傾向を見るために持ちます。 毎月同じ項目を落としている相手なら、1枚ずつ差し戻すより書式そのものを相談したほうが早く終わります。

Step3

データの取得方法を決める

読み取りは、ワークフローから請求書モデルを呼ぶだけです。このとき、キーと値のペアの返却をオプションで有効にします。 既定では無効なので、有効にしないと「項目名はあるが値が無い」という状態を見分けられません。

取るものどこから何に使うか
請求書固有の値と品目documentResults6項目それぞれの値の候補
テーブルとセル、信頼度pageResults税率ごとの区分が行として分かれているかの確認
全テキスト、選択マークreadResultsdocumentResults に出なかった項目を本文から拾う
キーと値のペアオプションで有効にした返却項目名だけがあって値が空の検出

税率ごとの区分は、値ではなくテーブルの構造で見ます。 10%と8%の対価や消費税額が分かれて書かれているかは、金額の数だけでは分かりません。セルが行として分かれているかを pageResults で確かめます。

取引先マスタの照合は、スプレッドシートを読むだけで足ります。照合の順は、登録番号が先、名称が後です。 名称から先に引くと、表記ゆれで引けない取引先が出ます。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … PDFまたは画像であることを確かめ、それ以外はPDFに変換します
  2. ページ数とサイズの確認 … PDFとTIFFは最大2,000ページ、有料(S0)レベルで500MBが上限です。超えるものは分割します
  3. 画像の寸法の確認 … 50×50ピクセルから10,000×10,000ピクセルの間である必要があります。範囲外はスキャンし直します
  4. 解像度の確認 … 抽出するテキストの最小高さは、1024×768の画像で12ピクセルです。150dpiで約8ポイントのテキストに相当します
  5. ロックの解除 … パスワードでロックされたPDFは、提出前にロックを解除する必要があります
  6. 複数の請求書がないかの確認 … まとめてスキャンされたものは、ページで分けます
  7. 重複の検知 … 同じ取引先・金額・取引年月日のものが直近にあれば、既処理として印を付けます

3番目と4番目を軽く見ないでください。 紙をコピー機の既定の設定でスキャンすると、この下限に近いところに入ります。解像度が足りないだけの請求書は、「書かれていない」と区別がつきません。

Step5

AIに処理させる

させるのは、6項目それぞれについて「値が読み取れているか」を判定し、根拠にした文字列を書き出すことだけです。 6項目は、国税庁が示す記載事項をそのまま並べたものです。

見るもの判定の仕方判断できないときの扱い
相手方(自社)の名称記載の有無と、自社名との一致読み取りの信頼度が低ければ unreadable
売手の名称と登録番号両方の値があるか。登録番号は取引先マスタと突き合わせる値が空なら missing、読めなければ unreadable
取引年月日日付として解釈できるか複数の日付があれば ambiguous
取引内容品目の記載があるか。軽減税率の対象品目である旨の表示明細が画像でつぶれていれば unreadable
税率ごとの対価の総額と適用税率税率の区分ごとに金額があるか1行にまとまっていれば missing
税率ごとの消費税額等税率の区分ごとに消費税額があるか合計だけなら missing

右端の列が、この構成でいちばん大事な区別です。 missing は書かれていないということ、unreadable は文字は検出されているが値として確定できないということで、前者は取引先に再発行を頼むもの、後者は自社のスキャンをやり直すものです。

分ける材料は pageResults の信頼度です。 何も検出されていなければ missing、検出はされていて信頼度が低ければ unreadable根拠を、OCRが返した数値に置きます。

させないこと理由
適格請求書に当たるかの結論どこまでを不備とするかは顧問税理士と決める取り決め
差し戻すかどうかの判断取引先との関係に関わる。規則で決め、人が確かめる
金額の計算・割り戻し合計から埋めると、見つけたかった不備が消える
登録番号の補完桁を足す、記号を直す、それらしい番号に近づけない
信頼度の付け直しOCRが返した値をそのまま使う

3行目がいちばん起きやすい失敗です。 税率ごとの消費税額が無い請求書を渡すと、合計と税率から計算して埋め、その瞬間、見つけようとしていた不備が消えます。

Step6

指示内容を固定する

あなたは経理部門で、受け取った請求書の記載事項を点検する立場です。
OCRが返した読み取り結果だけを見て判定してください。推測で埋めないでください。

【点検する6項目】
1. 相手方(請求を受ける側)の名称
2. 売手の名称と登録番号
3. 取引年月日
4. 取引内容(軽減税率の対象品目である旨の表示を含む)
5. 税率ごとの対価の総額と適用税率
6. 税率ごとの消費税額等

【status の選び方】
- ok ......... 値が読み取れており、その項目として解釈できる
- missing .... 値が無い。項目名だけがあって値が空の場合も missing
- unreadable . 文字は検出されているが信頼度が低く、値として確定できない
- ambiguous .. 値の候補が複数あり、1つに決められない
迷ったときに ok を選ばないでください。

【厳守事項】
- 記載がなければ「不明」とし、status を missing にしてください。
  他の項目から補って埋めないでください。
- 「登録番号」といった項目名があっても、値が空なら missing です。
  項目名があることを、値があることとして扱わないでください。
- 登録番号は読み取った文字列をそのまま value に入れてください。
  桁を補う、記号を足す、それらしい番号に直すことをしないでください。
- 金額の計算をしないでください。税率ごとの金額や消費税額が無いときに、
  合計から割り戻して埋めないでください。書かれていなければ missing です。
- 税率ごとの区分は、金額が行として分かれているかで見てください。
  1行にまとまっているものを、分かれているものとして扱わないでください。
- evidence には、判定の根拠にした文字列をそのまま写してください。
- confidence は OCR が返した値をそのまま入れてください。
- 適格請求書に当たるかも、差し戻すべきかも書かないでください。
- 請求書でない書類と判断した場合は、点検をせず document_type に種類を書いてください。

【読み取り結果】{ocr_result}
【この取引先の区分】{rule_set}
【自社の名称と表記ゆれの一覧】{own_names}

「項目名を、値があることとして扱わない」を明記しないと ok になります。 読み取り結果には「登録番号」という文字列が確かに存在し、何も言わなければその存在を根拠に選びます。禁じるのは、項目名を根拠にする判断そのものです。

「合計から割り戻さない」を2か所に書いているのも同じ理由です。 計算を禁じるだけでは「合計から推定した」と書いて埋めます。埋めた値が正しいかではなく、書かれていないという事実が消えることが問題です。

Step7

出力形式を固定する

次の形のJSONで受け取ります。

{
  "invoice_id": "",
  "document_type": "invoice",
  "vendor": {
    "name": "",
    "registration_no": "",
    "master_match": "matched | not_found | mismatch"
  },
  "rule_set": "standard | simplified",
  "checks": [
    { "item": "recipient_name", "status": "ok | missing | unreadable | ambiguous",
      "value": "", "confidence": 0, "evidence": "" }
  ],
  "verdict": "pass | needs_resend | needs_human",
  "resend_draft": ""
}

checks にはこの形の要素を6つ並べます。itemrecipient_nameissuer_and_reg_notransaction_datetransaction_detailamount_by_tax_ratetax_by_tax_rate です。

1つ目の理由は、statusverdict を別の層に置けることです。 checks はAIが埋め、verdict はワークフローが規則で決めます。不備の範囲が変わっても、直すのは規則だけです。

2つ目は、rule_set で基準を切り替えられることです。 適格簡易請求書では、宛先は省略してよく、税率又は税額のどちらか一方の記載でよいとされています。マスタの区分から standardsimplified を入れ、同じ checks を別の規則で読みます。

rule_setpass とする条件
standard6項目すべてが ok
simplified相手方の名称は missing でも可。税率ごとの対価と税率、税率ごとの消費税額等はどちらか一方が ok なら可
共通unreadable または ambiguous が1つでもあれば needs_human

要は、status を基準で書き換えないことです。 簡易インボイスの取引先でも、宛先が無ければ checks には missing と記録し、判断は verdict の側だけで行います。 区分を付け間違えていても、checks を読み直すだけで判定をやり直せます。

3つ目は、evidenceconfidence で確認が速くなることです。 画像を開く前に、何を見てどれくらいの信頼度で判定したかを一覧で読めます。

Step8

システムへ連携する

つなぎ先方式内容
受領フォルダMake のトリガーファイルの保存を検知する
Azure AI Document IntelligenceAPI呼び出し請求書の項目・明細・信頼度を返す
取引先マスタスプレッドシートの読み取り登録番号と簡易インボイスの区分を引く
Claude APIAPI呼び出し6項目の判定と、差し戻し文の下書き
会計システム既存の入力経路pass のものだけを回す

会計システムへは書き込みません。 この構成が出すのは点検の結果までで、支払データを作るのは別の仕組みの仕事です。 書き込みを足すと、見落としが誤った支払まで一息に進みます。

取引先マスタも読み取りだけです。登録番号がマスタに無かったときも書き足しません。 書き足すかは、取引先に確認したうえで人が決めます。

Step9

人が確認する

人が開くのは needs_resendneeds_human のものだけです。 pass のものは一覧で件数と取引先を流し見ます。全件を開く設計にすると、第10章の12.5時間には収まりません。

  1. needs_human を先に見るunreadableambiguous が含まれるもの。多くはスキャンのやり直しで解決します
  2. needs_resend の根拠を確かめるevidence を読み、画像で該当箇所を見ます。missing の項目が本当に空欄かを目で確かめます
  3. 差し戻すかを決める … 下書きを直して送ります。送信そのものは人が行います
  4. 判定を覆したら記録する … どの項目を、どちらに変えたかを残します

2番目を省かないでください。 missing の判定は、取引先に再発行を頼むかどうかに直結します。 頼んで空振りだった1件は、その取引先との次の1年に残ります。

目標は、750枚をならして1枚1分です。 開くのは1割前後という想定で、それより多い月は、unreadable が増えているか、マスタの区分が足りていません。

Step10

例外に対処する

起きること対応
パスワードでロックされたPDF提出前にロックを解除する必要がある。解除できないものは取引先へ連絡
ページ数・サイズが上限を超えるPDFとTIFFは最大2,000ページ、有料(S0)レベルで500MB。分割して投入
画像の寸法が範囲外50×50から10,000×10,000ピクセルの間である必要がある。スキャンし直す
文字が小さすぎる1024×768の画像で12ピクセルが下限。下回るものは unreadable で人へ
請求書でない書類が混ざるdocument_type を見て、点検せずに担当者へ戻す
1ファイルに複数の請求書ページで分割して再投入。分割できないものは needs_human
登録番号がマスタに無いnot_found差し戻す前に、マスタ側の未整備をまず疑う
同じ請求書が二度届く取引先・金額・取引年月日で照合し、二重に判定しない
OCRが応答しない受領フォルダに残す。処理済みへ移すのは成功時だけ

上から4行目までが大半を占めます。 どれもAIの問題ではなく、紙の受け取り方とスキャンの設定の問題です。 直すほうが、判定の精度を上げるより効きます。

Step11

記録を残す

  • 元の請求書ファイルと、受け取った日時・経路(紙/PDF/メール本文)
  • OCRが返したJSONの全文(readResultspageResultsdocumentResults
  • 判定結果(checksrule_setverdict)と、そのとき参照した取引先マスタの内容
  • 人が判定を覆した記録 … どの項目を、どちらに変えたか
  • 再発行を依頼した日時と、再発行された請求書との対応
  • 取引先ごとの unreadable の発生率

3つ目で「そのときのマスタの内容」を残すのは、区分が後から変わるためです。 簡易インボイスの区分を付け直すと過去の判定の意味が変わり、当時の基準が残っていないと、やり直しの範囲が決まりません。

最後の行は、取引先との相談の材料になります。 特定の取引先だけ unreadable が続くなら、紙質か自社のスキャンのしかたに理由があります。

04実装レベルの3段階

最小構成:PDFを手でAIの画面に貼り、6項目の有無を判定させる / 1枚ごとの記載事項の点検
半自動化:上記+OCRのAPIを呼び、判定結果を一覧に書き出す / 読み取りと判定の一覧化
本格構成:上記+受領フォルダを起点に自動で動かし、取引先マスタと照合し、再発行依頼の下書きまで出す / 点検の全体と、差し戻し先の洗い出し

最小構成では枚数がさばけません。 1枚ずつ貼り付けるので、750枚には使えません。確かめるための段階です。 半自動化で、1枚4分が2分程度になります。 読み取りと判定は自動になりますが、結果の一覧から会計システムへ回す作業と、差し戻し先の書き出しが残ります。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、取引先マスタとの照合と下書きの作成が、1枚ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、unreadable の多い取引先と、マスタの区分が抜けている取引先が先に分かります。そこを直してから本格構成に進むほうが、差し戻しの空振りが減ります。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
4 名
月間件数
750 件
1件あたり現在時間
4 分
1件あたり導入後時間
1 分
現在  750件 × 4分 ÷ 60 = 50 時間/月
導入後 750件 × 1分 ÷ 60 = 12.5 時間/月
月間削減時間
37.5h
削減率
75%
年間削減時間
450h
年間金額換算(時間単価3,500円)
158万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 小規模な取引先が多く、請求書の書式が取引先ごとにばらばらな建設業・不動産業・小売業など。月に数百枚の請求書を受け取り、記載事項がそろっているかの確認が目視になっている場合。紙とPDFとメール本文が混在し、受け取り方を統一できていない場合。取引先マスタに登録番号の列を持たせる準備ができる場合。
向いていない
  1. 取引先が数社に限られ、すべて同じ書式の請求書が届く場合。請求書の受領を電子インボイスの仕組みに統一できており、記載事項の形式が機械的に保証されている場合。月の枚数が数十枚で、目視で足りる場合。なお、どこまでを不備として差し戻すかという税務上の判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月受け取った請求書から30枚を選ぶ(うち数枚は、不備があると分かっているものを入れる
  2. その30枚について、当時どの項目を見たか、不備をどこでメモしたかを聞き取る
  3. 30枚をPDFにして、手元のAIサービスの画面に1枚ずつ貼り付ける
  4. 「この請求書に、①相手方の名称 ②売手の名称と登録番号 ③取引年月日 ④取引内容 ⑤税率ごとの対価の総額と適用税率 ⑥税率ごとの消費税額等 が書かれているかを、項目ごとに判定してください。書かれていない場合と、読めない場合を分けてください。計算で埋めないでください」と指示する
  5. 出てきた判定を、当時の目視の結果と突き合わせる

30枚は必ずやってください。 ワークフローを組む前に、「読み取れれば判定できるのか」を確かめます。

出てきた内容判断
当時の目視と同じ不備が出たOCRとワークフローの連携に進む
書かれていない項目を計算で埋めた指示の書き方で直る。構成は有効
文字が読めずに判定できない枚数が多いスキャンの設定が先。 AIの問題ではない

3行目が出ることは珍しくありません。 失敗ではなく、目視の確認に時間がかかっていた理由が1つ分かったということです。 その場合は、コピー機の設定を変えた紙で同じ30枚を取り直し、判定がどこまで変わるかを見てください。

08実装時につまずきやすいポイント

問題対策
項目名があるだけで ok になるキーだけが単独で存在することがある。 値の有無で判定し、指示にも明記する
missingunreadable が混ざる信頼度で分ける。混ぜたまま運用すると、取引先へ誤って差し戻す
書かれていない税額を計算で埋める割り戻しを禁じ、埋まった値が入っていないかを後段で検知する
スキャンの文字が小さすぎる1024×768の画像で12ピクセルが下限。コピー機の既定の設定を見直す
パスワード付きのPDFで止まる提出前にロックを解除する必要がある。取引先に解除して送ってもらう
メール本文の請求が投入できない事前構築済みモデルはPDFと画像。PDF化してから入れる
1ファイルに何枚もまとまっている現場でのまとめスキャンをやめてもらうか、ページで分割する
取引先マスタの登録番号が空照合できない取引先が出る。 整備を先に終える
簡易インボイスの区分が付いていない全件が standard で見られ、差し戻しが増えすぎる
自社名の表記ゆれで相手方が missing になる旧社名、支店名、「株式会社」の前後を一覧に入れる
判定の基準を経理だけで決めてしまうどこまでを不備とするかは顧問税理士と決める
差し戻しのメールが自動で飛ぶ下書きまでにする。 送信は人が行う

上の2行が、この構成の失敗のほとんどです。 どちらも「空欄に見える」という同じ見た目から出発しています。判定の根拠を信頼度という数値に置いてあるかどうかで、運用に乗るかが決まります。

下の2行も、同じくらい早く効いてきます。 基準が決まらないまま判定だけが出ると、担当者ごとに差し戻す・差し戻さないが分かれ、機械に寄せた意味がなくなります。 差し戻しの自動送信も、最初から作らないでください。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 取引先の名称、登録番号、取引内容と金額、そして請求書に印刷されている振込先の口座情報と支払条件です。

  1. 外部へ渡す範囲を、点検に必要な項目までに限る … 記載事項の点検に口座番号は要りません。OCRは請求書全体を読みますが、その後の判定に渡すのは6項目に関係する領域だけに絞る設計にできます
  2. 差し戻しの連絡を自動で送らない … 出すのは下書きまでです。取引先との関係に直接ひびきます。 判定が誤っていた1件の差し戻しは、削減した時間よりはるかに高くつきます
  3. この構成は税務上の判断を代替しません … どこまでを不備として差し戻すか、どの取引先を簡易インボイスの対象として扱うかは、顧問税理士と自社の経理が決めることです。 この構成が出すのは、記載事項が読み取れたかどうかという事実だけです
  4. unreadable が多い取引先は、受け取り方を見直す材料にする … 判定の精度を上げようとするより、スキャンの設定を直すか、その取引先からPDFでもらうほうが確実です
  5. どのファイルを原本として残すかを先に決める … 国税庁のページでは、売手側は交付したインボイスの写しを保存しておく必要があるとされています。自社が請求書を出す側に回るときの話ですが、受け取った側の保存とあわせて、スキャン前の紙、スキャンしたPDF、OCRの結果のどれを残すかを決めておいてください
  6. 取引先マスタを外部へ出さない … 500社分の登録番号と取引の有無がまとまった一覧です。照合はワークフローの側で行い、マスタそのものをAIへ渡さないでください

誤りが起きた場合のリスクは、不備を見落として支払うことと、不備でないものを差し戻すことの2つです。 前者は unreadablepass に混ぜると起き、後者は missingunreadable を混ぜると起きます。どちらも同じ区別から出ているので、そこだけは設計で守ります。

10まず何から始めるか

1週目:取引先マスタに2つの列を足す

取引先マスタのスプレッドシートに、登録番号の列と「簡易インボイスの対象か」の列を足します。500社すべてを一度に埋める必要はありません。枚数の多い上位50社から埋めます。 この50社で月の請求書の大半が埋まります。

2週目:30枚で試す

先月の請求書から30枚を選び、手元のAIサービスに貼り付けて6項目の判定をさせます。当時の目視の結果と突き合わせ、書かれていない項目を計算で埋めていないかを最優先で見ます。

3週目:不備の基準を決める

どの項目が欠けていたら差し戻すのかを、顧問税理士と決めます。 ここが決まらないうちにワークフローを組むと、判定は出るのに誰も使えない状態になります。あわせて、自社名の表記ゆれの一覧を作ります。

4週目:受領フォルダから判定までをつなぐ

Make で受領フォルダを見張り、OCRを呼び、6項目の判定を一覧に書き出すところまで作ります。この時点では verdict を出さず、checks の一覧だけを見ます。

2か月目: 取引先マスタとの照合と rule_set の切り替えを足し、verdict を出します。needs_resendneeds_human の件数を毎週数えます。3か月目以降: 再発行依頼の下書きを足し、1枚4分が何分になったかを実測します。取引先ごとの unreadable の発生率を見て、スキャンの設定と請求書の受け取り方を見直した時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-23/最終更新:2026-09-23
確認した内容情報源確認日
適格請求書の記載事項が、相手方の名称/売手の名称及び登録番号/取引年月日/取引内容(軽減税率の対象品目である旨)/税率ごとの対価の総額及び適用税率/税率ごとの消費税額等 の6つであること。適格簡易請求書では宛先を省略でき、税率又は税額のどちらか一方の記載でよいこと。その対象が小売業、飲食店業、タクシー業などであること。登録番号が登録後に税務署から通知される番号であること。写しの保存が必要とされること国税庁: インボイス制度の概要2026-09-23
請求書モデルがOCRで主要なフィールドと品目を抽出し、現在27言語をサポートすること。事前構築済みモデルの入力がPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)に限られること。PDFとTIFFが最大2,000ページ(Freeは2ページ)、サイズがS0で500MB、F0で4MBであること。画像が50×50から10,000×10,000ピクセル、テキストの最小高さが1024×768で12ピクセルであること。パスワード付きPDFは提出前に解除が必要なこと。JSON出力が readResultspageResults(信頼度)/documentResults に分かれること。キーと値のペアの返却が既定で無効で、キーだけが単独で存在することもあることMicrosoft Learn: 請求書モデル2026-09-23

どこまでを不備として差し戻すかは、顧問税理士と自社の経理で決めてください。 本記事は国税庁のページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0184)についてのご相談はこちらから。

AI活用について相談する
目次