受け取った請求書が適格請求書の要件を満たしているかを、支払う前に点検する
仕入先から届いた請求書を読み取り、適格請求書として必要な記載事項がそろっているかを1枚ずつ点検します。足りない項目のある請求書を支払う前に洗い出し、再発行を依頼する先の一覧にします。
- 利用ツール
- AWS Textract/Azure AI/ChatGPT/Claude/Gemini/Google Document AI/Make/n8n/Power Automate/Zapier
- 対象業界
- 不動産/士業/小売/建設/自治体
- 対象部門
- 経理/財務
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 紙の請求書を受け取り、スキャンして共有フォルダに保存する。PDFで届いたものはそのまま保存する
- メール本文に金額だけが書かれているものは、担当者が印刷するかPDFにして同じフォルダへ入れる
- 1枚ずつ開き、売手の名称、登録番号、取引年月日、取引内容、税率ごとの金額、消費税額が書かれているかを目で見る
- 登録番号が書かれていれば、取引先マスタのスプレッドシートを開いて突き合わせる
- 足りない項目があれば、付箋またはスプレッドシートにメモする
- メモがたまったところで、担当者が取引先ごとに再発行の依頼メールを書く
- 記載がそろったものは会計システムへ入力し、支払の手続きに回す
- 人紙の請求書をスキャンし、PDFとメール本文のものとあわせて受領フォルダに保存する
- 自動ファイルの保存をきっかけにワークフローが動き、形式・サイズ・ページ数を確かめる
- 自動OCRが請求書の項目と明細、読み取りの信頼度を返す
- 自動取引先マスタを引き、その取引先が簡易インボイスの対象かどうかで点検の基準を選ぶ
- 自動記載事項を1項目ずつ見て、`ok` / `missing` / `unreadable` / `ambiguous` を付ける
- 自動登録番号の値の有無を確かめ、取引先マスタと突き合わせる
- 自動項目ごとの結果と基準から、`pass` / `needs_resend` / `needs_human` を機械的に決める
- 自動`needs_resend` のものについて、再発行を依頼する文面の下書きを作る
- 人担当者が `needs_resend` と `needs_human` のものだけを開き、判定を確かめる
- 人差し戻すと決めたものについて、下書きを直して取引先へ送る
- 【人/自動】 `pass` のものは会計システムへ回す
各工程の詳しい説明を読む
- 紙の請求書を受け取り、スキャンして共有フォルダに保存する。PDFで届いたものはそのまま保存する
- メール本文に金額だけが書かれているものは、担当者が印刷するかPDFにして同じフォルダへ入れる
- 1枚ずつ開き、売手の名称、登録番号、取引年月日、取引内容、税率ごとの金額、消費税額が書かれているかを目で見る
- 登録番号が書かれていれば、取引先マスタのスプレッドシートを開いて突き合わせる
- 足りない項目があれば、付箋またはスプレッドシートにメモする
- メモがたまったところで、担当者が取引先ごとに再発行の依頼メールを書く
- 記載がそろったものは会計システムへ入力し、支払の手続きに回す
(a)不備は支払った後に分かる。 締め日直後の忙しさのなかで3番と4番を省いて処理し、後になって記載の不足が見つかることがあります。そのときには支払はすでに終わっており、何か月も前の請求書の再発行を取引先に頼むことになります。 取引先にとっても当時の伝票を探し直す作業で、頼むほうも頼まれるほうも重い仕事です。
(b)書式がばらばらで、見る場所が決まらない。 小規模な取引先ほど手書きやExcelの自作の書式で、どこに何が書かれているかが決まっていません。「登録番号がどこにあるか探す」ところから始まる請求書が、毎月何十枚もあります。
(c)書いてあるように見えて値が無い。 「登録番号」という欄はあるのに空欄のまま、税率ごとの区分が1行にまとまっている、消費税額が合計だけ書かれている。欄が印刷されていると、埋まっているように見えてしまいます。 目視で見落とすのは、たいていこの型です。
(d)全件を目視するのは続かない。 750枚を4名で見ると、1枚4分でも月50時間です。丁寧にやるほど支払の期日に間に合わなくなるので、忙しい月から順に省かれます。不備のものだけを人に回す形にしないと、点検は定着しません。
- 【人】 紙の請求書をスキャンし、PDFとメール本文のものとあわせて受領フォルダに保存する
- 【自動】 ファイルの保存をきっかけにワークフローが動き、形式・サイズ・ページ数を確かめる
- 【自動】 OCRが請求書の項目と明細、読み取りの信頼度を返す
- 【自動】 取引先マスタを引き、その取引先が簡易インボイスの対象かどうかで点検の基準を選ぶ
- 【自動】 記載事項を1項目ずつ見て、
ok/missing/unreadable/ambiguousを付ける - 【自動】 登録番号の値の有無を確かめ、取引先マスタと突き合わせる
- 【自動】 項目ごとの結果と基準から、
pass/needs_resend/needs_humanを機械的に決める - 【自動】
needs_resendのものについて、再発行を依頼する文面の下書きを作る - 【人】 担当者が
needs_resendとneeds_humanのものだけを開き、判定を確かめる - 【人】 差し戻すと決めたものについて、下書きを直して取引先へ送る
- 【人/自動】
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 ── 仕入先への再発行依頼の下書き └──▶ 会計システムへ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make | Power Automate、n8n、Zapier |
| OCR | Azure 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どうやって実装するのか
処理の起点を決める
受領フォルダにファイルが保存されたことを起点にします。 締め日の直後に集中して届くため、1日1回の定時実行にはしません。 まとめて処理すると、不備が見つかるのが支払の直前になり、再発行を頼む時間が残りません。
入る経路は3つあります。紙をスキャンしたもの、PDFで届いたもの、メール本文をPDFにしたものです。いずれも同じフォルダに入れ、そこから先は区別しません。経路ごとに分けると、どれか1つだけが点検されない期間ができます。
保存のたびに1枚ずつ動かし、処理が終わったファイルは処理済みフォルダへ移します。 移すのは成功したときだけにします。受領フォルダに残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 請求書ファイル | PDFまたは画像。受け取った日時と経路 | 受領フォルダ |
| 読み取り結果 | 請求書固有の値と品目、全テキスト、テーブルとセル、読み取りの信頼度 | Azure AI Document Intelligence |
| 取引先の情報 | 取引先コード、名称、登録番号、簡易インボイスの対象か、過去の不備の履歴 | 取引先マスタ |
| 自社の情報 | 自社の名称と、請求書に書かれうる表記ゆれの一覧 | 自社で用意する一覧 |
質を決めるのは、いちばん下の2つです。 取引先マスタに登録番号が無ければ、読み取った番号を突き合わせる先がありません。自社名の表記ゆれの一覧が無ければ、「株式会社」が前か後ろか、旧社名かだけで、相手方の名称が書かれていないという判定になります。
過去の不備の履歴は、取引先ごとの傾向を見るために持ちます。 毎月同じ項目を落としている相手なら、1枚ずつ差し戻すより書式そのものを相談したほうが早く終わります。
データの取得方法を決める
読み取りは、ワークフローから請求書モデルを呼ぶだけです。このとき、キーと値のペアの返却をオプションで有効にします。 既定では無効なので、有効にしないと「項目名はあるが値が無い」という状態を見分けられません。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 請求書固有の値と品目 | documentResults | 6項目それぞれの値の候補 |
| テーブルとセル、信頼度 | pageResults | 税率ごとの区分が行として分かれているかの確認 |
| 全テキスト、選択マーク | readResults | documentResults に出なかった項目を本文から拾う |
| キーと値のペア | オプションで有効にした返却 | 項目名だけがあって値が空の検出 |
税率ごとの区分は、値ではなくテーブルの構造で見ます。 10%と8%の対価や消費税額が分かれて書かれているかは、金額の数だけでは分かりません。セルが行として分かれているかを pageResults で確かめます。
取引先マスタの照合は、スプレッドシートを読むだけで足ります。照合の順は、登録番号が先、名称が後です。 名称から先に引くと、表記ゆれで引けない取引先が出ます。
AIへ渡す前に整形する
- 形式の確認 … PDFまたは画像であることを確かめ、それ以外はPDFに変換します
- ページ数とサイズの確認 … PDFとTIFFは最大2,000ページ、有料(S0)レベルで500MBが上限です。超えるものは分割します
- 画像の寸法の確認 … 50×50ピクセルから10,000×10,000ピクセルの間である必要があります。範囲外はスキャンし直します
- 解像度の確認 … 抽出するテキストの最小高さは、1024×768の画像で12ピクセルです。150dpiで約8ポイントのテキストに相当します
- ロックの解除 … パスワードでロックされたPDFは、提出前にロックを解除する必要があります
- 複数の請求書がないかの確認 … まとめてスキャンされたものは、ページで分けます
- 重複の検知 … 同じ取引先・金額・取引年月日のものが直近にあれば、既処理として印を付けます
3番目と4番目を軽く見ないでください。 紙をコピー機の既定の設定でスキャンすると、この下限に近いところに入ります。解像度が足りないだけの請求書は、「書かれていない」と区別がつきません。
AIに処理させる
させるのは、6項目それぞれについて「値が読み取れているか」を判定し、根拠にした文字列を書き出すことだけです。 6項目は、国税庁が示す記載事項をそのまま並べたものです。
| 見るもの | 判定の仕方 | 判断できないときの扱い |
|---|---|---|
| 相手方(自社)の名称 | 記載の有無と、自社名との一致 | 読み取りの信頼度が低ければ unreadable |
| 売手の名称と登録番号 | 両方の値があるか。登録番号は取引先マスタと突き合わせる | 値が空なら missing、読めなければ unreadable |
| 取引年月日 | 日付として解釈できるか | 複数の日付があれば ambiguous |
| 取引内容 | 品目の記載があるか。軽減税率の対象品目である旨の表示 | 明細が画像でつぶれていれば unreadable |
| 税率ごとの対価の総額と適用税率 | 税率の区分ごとに金額があるか | 1行にまとまっていれば missing |
| 税率ごとの消費税額等 | 税率の区分ごとに消費税額があるか | 合計だけなら missing |
右端の列が、この構成でいちばん大事な区別です。 missing は書かれていないということ、unreadable は文字は検出されているが値として確定できないということで、前者は取引先に再発行を頼むもの、後者は自社のスキャンをやり直すものです。
分ける材料は pageResults の信頼度です。 何も検出されていなければ missing、検出はされていて信頼度が低ければ unreadable。根拠を、OCRが返した数値に置きます。
| させないこと | 理由 |
|---|---|
| 適格請求書に当たるかの結論 | どこまでを不備とするかは顧問税理士と決める取り決め |
| 差し戻すかどうかの判断 | 取引先との関係に関わる。規則で決め、人が確かめる |
| 金額の計算・割り戻し | 合計から埋めると、見つけたかった不備が消える |
| 登録番号の補完 | 桁を足す、記号を直す、それらしい番号に近づけない |
| 信頼度の付け直し | OCRが返した値をそのまま使う |
3行目がいちばん起きやすい失敗です。 税率ごとの消費税額が無い請求書を渡すと、合計と税率から計算して埋め、その瞬間、見つけようとしていた不備が消えます。
指示内容を固定する
あなたは経理部門で、受け取った請求書の記載事項を点検する立場です。
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か所に書いているのも同じ理由です。 計算を禁じるだけでは「合計から推定した」と書いて埋めます。埋めた値が正しいかではなく、書かれていないという事実が消えることが問題です。
出力形式を固定する
次の形の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つ並べます。item は recipient_name / issuer_and_reg_no / transaction_date / transaction_detail / amount_by_tax_rate / tax_by_tax_rate です。
1つ目の理由は、status と verdict を別の層に置けることです。 checks はAIが埋め、verdict はワークフローが規則で決めます。不備の範囲が変わっても、直すのは規則だけです。
2つ目は、rule_set で基準を切り替えられることです。 適格簡易請求書では、宛先は省略してよく、税率又は税額のどちらか一方の記載でよいとされています。マスタの区分から standard か simplified を入れ、同じ checks を別の規則で読みます。
rule_set | pass とする条件 |
|---|---|
standard | 6項目すべてが ok |
simplified | 相手方の名称は missing でも可。税率ごとの対価と税率、税率ごとの消費税額等はどちらか一方が ok なら可 |
| 共通 | unreadable または ambiguous が1つでもあれば needs_human |
要は、status を基準で書き換えないことです。 簡易インボイスの取引先でも、宛先が無ければ checks には missing と記録し、判断は verdict の側だけで行います。 区分を付け間違えていても、checks を読み直すだけで判定をやり直せます。
3つ目は、evidence と confidence で確認が速くなることです。 画像を開く前に、何を見てどれくらいの信頼度で判定したかを一覧で読めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受領フォルダ | Make のトリガー | ファイルの保存を検知する |
| Azure AI Document Intelligence | API呼び出し | 請求書の項目・明細・信頼度を返す |
| 取引先マスタ | スプレッドシートの読み取り | 登録番号と簡易インボイスの区分を引く |
| Claude API | API呼び出し | 6項目の判定と、差し戻し文の下書き |
| 会計システム | 既存の入力経路 | pass のものだけを回す |
会計システムへは書き込みません。 この構成が出すのは点検の結果までで、支払データを作るのは別の仕組みの仕事です。 書き込みを足すと、見落としが誤った支払まで一息に進みます。
取引先マスタも読み取りだけです。登録番号がマスタに無かったときも書き足しません。 書き足すかは、取引先に確認したうえで人が決めます。
人が確認する
人が開くのは needs_resend と needs_human のものだけです。 pass のものは一覧で件数と取引先を流し見ます。全件を開く設計にすると、第10章の12.5時間には収まりません。
needs_humanを先に見る …unreadableとambiguousが含まれるもの。多くはスキャンのやり直しで解決しますneeds_resendの根拠を確かめる …evidenceを読み、画像で該当箇所を見ます。missingの項目が本当に空欄かを目で確かめます- 差し戻すかを決める … 下書きを直して送ります。送信そのものは人が行います
- 判定を覆したら記録する … どの項目を、どちらに変えたかを残します
2番目を省かないでください。 missing の判定は、取引先に再発行を頼むかどうかに直結します。 頼んで空振りだった1件は、その取引先との次の1年に残ります。
目標は、750枚をならして1枚1分です。 開くのは1割前後という想定で、それより多い月は、unreadable が増えているか、マスタの区分が足りていません。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワードでロックされた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の問題ではなく、紙の受け取り方とスキャンの設定の問題です。 直すほうが、判定の精度を上げるより効きます。
記録を残す
- 元の請求書ファイルと、受け取った日時・経路(紙/PDF/メール本文)
- OCRが返したJSONの全文(
readResults、pageResults、documentResults) - 判定結果(
checks、rule_set、verdict)と、そのとき参照した取引先マスタの内容 - 人が判定を覆した記録 … どの項目を、どちらに変えたか
- 再発行を依頼した日時と、再発行された請求書との対応
- 取引先ごとの
unreadableの発生率
3つ目で「そのときのマスタの内容」を残すのは、区分が後から変わるためです。 簡易インボイスの区分を付け直すと過去の判定の意味が変わり、当時の基準が残っていないと、やり直しの範囲が決まりません。
最後の行は、取引先との相談の材料になります。 特定の取引先だけ unreadable が続くなら、紙質か自社のスキャンのしかたに理由があります。
04実装レベルの3段階
最小構成では枚数がさばけません。 1枚ずつ貼り付けるので、750枚には使えません。確かめるための段階です。 半自動化で、1枚4分が2分程度になります。 読み取りと判定は自動になりますが、結果の一覧から会計システムへ回す作業と、差し戻し先の書き出しが残ります。本格構成で1分になり、この段階が本記事の想定です。 差が大きいのは、取引先マスタとの照合と下書きの作成が、1枚ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、unreadable の多い取引先と、マスタの区分が抜けている取引先が先に分かります。そこを直してから本格構成に進むほうが、差し戻しの空振りが減ります。
05工数削減シミュレーション
導入後 750件 × 1分 ÷ 60 = 12.5 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 小規模な取引先が多く、請求書の書式が取引先ごとにばらばらな建設業・不動産業・小売業など。月に数百枚の請求書を受け取り、記載事項がそろっているかの確認が目視になっている場合。紙とPDFとメール本文が混在し、受け取り方を統一できていない場合。取引先マスタに登録番号の列を持たせる準備ができる場合。
- 取引先が数社に限られ、すべて同じ書式の請求書が届く場合。請求書の受領を電子インボイスの仕組みに統一できており、記載事項の形式が機械的に保証されている場合。月の枚数が数十枚で、目視で足りる場合。なお、どこまでを不備として差し戻すかという税務上の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月受け取った請求書から30枚を選ぶ(うち数枚は、不備があると分かっているものを入れる)
- その30枚について、当時どの項目を見たか、不備をどこでメモしたかを聞き取る
- 30枚をPDFにして、手元のAIサービスの画面に1枚ずつ貼り付ける
- 「この請求書に、①相手方の名称 ②売手の名称と登録番号 ③取引年月日 ④取引内容 ⑤税率ごとの対価の総額と適用税率 ⑥税率ごとの消費税額等 が書かれているかを、項目ごとに判定してください。書かれていない場合と、読めない場合を分けてください。計算で埋めないでください」と指示する
- 出てきた判定を、当時の目視の結果と突き合わせる
30枚は必ずやってください。 ワークフローを組む前に、「読み取れれば判定できるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の目視と同じ不備が出た | OCRとワークフローの連携に進む |
| 書かれていない項目を計算で埋めた | 指示の書き方で直る。構成は有効 |
| 文字が読めずに判定できない枚数が多い | スキャンの設定が先。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、目視の確認に時間がかかっていた理由が1つ分かったということです。 その場合は、コピー機の設定を変えた紙で同じ30枚を取り直し、判定がどこまで変わるかを見てください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
項目名があるだけで ok になる | キーだけが単独で存在することがある。 値の有無で判定し、指示にも明記する |
missing と unreadable が混ざる | 信頼度で分ける。混ぜたまま運用すると、取引先へ誤って差し戻す |
| 書かれていない税額を計算で埋める | 割り戻しを禁じ、埋まった値が入っていないかを後段で検知する |
| スキャンの文字が小さすぎる | 1024×768の画像で12ピクセルが下限。コピー機の既定の設定を見直す |
| パスワード付きのPDFで止まる | 提出前にロックを解除する必要がある。取引先に解除して送ってもらう |
| メール本文の請求が投入できない | 事前構築済みモデルはPDFと画像。PDF化してから入れる |
| 1ファイルに何枚もまとまっている | 現場でのまとめスキャンをやめてもらうか、ページで分割する |
| 取引先マスタの登録番号が空 | 照合できない取引先が出る。 整備を先に終える |
| 簡易インボイスの区分が付いていない | 全件が standard で見られ、差し戻しが増えすぎる |
自社名の表記ゆれで相手方が missing になる | 旧社名、支店名、「株式会社」の前後を一覧に入れる |
| 判定の基準を経理だけで決めてしまう | どこまでを不備とするかは顧問税理士と決める |
| 差し戻しのメールが自動で飛ぶ | 下書きまでにする。 送信は人が行う |
上の2行が、この構成の失敗のほとんどです。 どちらも「空欄に見える」という同じ見た目から出発しています。判定の根拠を信頼度という数値に置いてあるかどうかで、運用に乗るかが決まります。
下の2行も、同じくらい早く効いてきます。 基準が決まらないまま判定だけが出ると、担当者ごとに差し戻す・差し戻さないが分かれ、機械に寄せた意味がなくなります。 差し戻しの自動送信も、最初から作らないでください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 取引先の名称、登録番号、取引内容と金額、そして請求書に印刷されている振込先の口座情報と支払条件です。
- 外部へ渡す範囲を、点検に必要な項目までに限る … 記載事項の点検に口座番号は要りません。OCRは請求書全体を読みますが、その後の判定に渡すのは6項目に関係する領域だけに絞る設計にできます
- 差し戻しの連絡を自動で送らない … 出すのは下書きまでです。取引先との関係に直接ひびきます。 判定が誤っていた1件の差し戻しは、削減した時間よりはるかに高くつきます
- この構成は税務上の判断を代替しません … どこまでを不備として差し戻すか、どの取引先を簡易インボイスの対象として扱うかは、顧問税理士と自社の経理が決めることです。 この構成が出すのは、記載事項が読み取れたかどうかという事実だけです
unreadableが多い取引先は、受け取り方を見直す材料にする … 判定の精度を上げようとするより、スキャンの設定を直すか、その取引先からPDFでもらうほうが確実です- どのファイルを原本として残すかを先に決める … 国税庁のページでは、売手側は交付したインボイスの写しを保存しておく必要があるとされています。自社が請求書を出す側に回るときの話ですが、受け取った側の保存とあわせて、スキャン前の紙、スキャンしたPDF、OCRの結果のどれを残すかを決めておいてください
- 取引先マスタを外部へ出さない … 500社分の登録番号と取引の有無がまとまった一覧です。照合はワークフローの側で行い、マスタそのものをAIへ渡さないでください
誤りが起きた場合のリスクは、不備を見落として支払うことと、不備でないものを差し戻すことの2つです。 前者は unreadable を pass に混ぜると起き、後者は missing と unreadable を混ぜると起きます。どちらも同じ区別から出ているので、そこだけは設計で守ります。
10まず何から始めるか
1週目:取引先マスタに2つの列を足す
取引先マスタのスプレッドシートに、登録番号の列と「簡易インボイスの対象か」の列を足します。500社すべてを一度に埋める必要はありません。枚数の多い上位50社から埋めます。 この50社で月の請求書の大半が埋まります。
2週目:30枚で試す
先月の請求書から30枚を選び、手元のAIサービスに貼り付けて6項目の判定をさせます。当時の目視の結果と突き合わせ、書かれていない項目を計算で埋めていないかを最優先で見ます。
3週目:不備の基準を決める
どの項目が欠けていたら差し戻すのかを、顧問税理士と決めます。 ここが決まらないうちにワークフローを組むと、判定は出るのに誰も使えない状態になります。あわせて、自社名の表記ゆれの一覧を作ります。
4週目:受領フォルダから判定までをつなぐ
Make で受領フォルダを見張り、OCRを呼び、6項目の判定を一覧に書き出すところまで作ります。この時点では verdict を出さず、checks の一覧だけを見ます。
2か月目: 取引先マスタとの照合と rule_set の切り替えを足し、verdict を出します。needs_resend と needs_human の件数を毎週数えます。3か月目以降: 再発行依頼の下書きを足し、1枚4分が何分になったかを実測します。取引先ごとの unreadable の発生率を見て、スキャンの設定と請求書の受け取り方を見直した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 適格請求書の記載事項が、相手方の名称/売手の名称及び登録番号/取引年月日/取引内容(軽減税率の対象品目である旨)/税率ごとの対価の総額及び適用税率/税率ごとの消費税額等 の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出力が readResults/pageResults(信頼度)/documentResults に分かれること。キーと値のペアの返却が既定で無効で、キーだけが単独で存在することもあること | Microsoft Learn: 請求書モデル | 2026-09-23 |
どこまでを不備として差し戻すかは、顧問税理士と自社の経理で決めてください。 本記事は国税庁のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0184)についてのご相談はこちらから。
