請求書PDFをExcelの一覧にする

請求書のPDFを置いたフォルダから、Excel の一覧と支払予定表を作ります。読み取った金額は検算し、合わないものは「要確認」にして理由を書きます。

入力
請求書のPDF(文字を選択できるもの)
出力
Excel 1ファイル(一覧・明細・支払予定の3シート)
確かめること
消費税の計算、二重請求、登録番号など12項目

読ませた請求書

架空の請求元4社の、書式の違う請求書を7枚作りました。02 以外の6枚には、二重請求や消費税の誤りなどの問題をわざと入れてあります。

01 罫線の表 の請求書PDF
01 罫線の表
02 和暦・全角数字。税率10%と8%が混在 の請求書PDF
02 和暦・全角数字。税率10%と8%が混在
03 手紙のような体裁。和暦は R8.10.05 の請求書PDF
03 手紙のような体裁。和暦は R8.10.05
07 見出しの行の下に値の行が並ぶ表 の請求書PDF
07 見出しの行の下に値の行が並ぶ表

ほかの3枚(04、05、06)は、01 の再発行、02 と同じ書式、文字のないPDF(スキャン画像の代わり)です。画像を押すとPDFが開きます。

できあがった Excel

7枚のうち、OK は 1枚、要確認は 6枚でした。要確認には理由が付きます。

一覧シート

ファイル名請求元請求書番号合計判定要確認の理由
01_sample-shoji_SS-2026-0931.pdf株式会社サンプル商事SS-2026-0931¥99,000要確認二重請求の疑い:同じ請求元・請求書番号 SS-2026-0931 が 05_sample-shoji_SS-2026-0931_resend.pdf にもある
02_kaku-systems_KS-0457.pdf架空システムズ合同会社KS-0457¥164,960OK
03_design-kobo_DK-26-015.pdfデザイン工房サンプル(架空)DK-26-015¥53,000要確認10%の消費税 5,000円 が対象額 48,000円 × 10% = 4,800円 と合わない(端数処理の差 1円 を超える)
04_kaku-systems_KS-0471.pdf架空システムズ合同会社KS-0471¥88,000要確認支払期日 2026/09/10 が発行日 2026/10/10 より前
05_sample-shoji_SS-2026-0931_resend.pdf株式会社サンプル商事SS-2026-0931¥99,000要確認二重請求の疑い:同じ請求元・請求書番号 SS-2026-0931 が 01_sample-shoji_SS-2026-0931.pdf にもある
06_scanned_no-text.pdf要確認PDFからテキストを抽出できない(スキャン画像の可能性。OCRは対象外)
07_kaku-unyu_KU-1103.pdf架空運輸株式会社KU-1103要確認読み取れない項目:発行日、支払期日、合計

発行日・支払期日・小計・消費税・登録番号などの列は省いています。支払期日は下の支払予定シートにあります。全部の列は Excel で見られます。

支払予定シート

支払期日の順に並べ、基準日(ここでは 2026/10/15)までの残り日数を出します。期限を過ぎたものは赤、7日以内は黄色です。

支払期日残り日数(基準日 2026/10/15)状態請求元請求書番号合計判定
2026/09/10-35期限超過架空システムズ合同会社KS-0471¥88,000要確認
2026/10/2057日以内架空システムズ合同会社KS-0457¥164,960OK
2026/10/3116株式会社サンプル商事SS-2026-0931¥99,000要確認
2026/10/3116株式会社サンプル商事SS-2026-0931¥99,000要確認
2026/11/3046デザイン工房サンプル(架空)DK-26-015¥53,000要確認
支払期日不明要確認
支払期日不明架空運輸株式会社KU-1103要確認

ファイル名の列は省いています。

この Excel をダウンロード10KB

確かめていること

次のどれかが成り立たないと、要確認にして理由を書きます。

消費税は、端数処理の違い(切り捨て・切り上げ・四捨五入)として1円までの差は認めます。登録番号の検査用数字は、法人番号の算式(国税庁の資料と省令)で確かめます。

AI の使い方

ルールで読めなかった項目だけを AI(Claude)に読ませます。AI が返した値は、PDF の本文に実際に書かれている値と照合し、照合できたものだけを使います。使った値も、ルールで読んだ値と同じ検算にかけます。

07 では、発行日・支払期日・合計を AI で補い、検算も通って OK になりました。Excel の「読み取り」列に「ルール+AI(発行日、支払期日、合計)」と出るので、どの項目を AI で補ったかが分かります。

AI を使うかどうかは実行のたびに選べます。使うときは、対象のPDFのテキストが Anthropic に送られます。使わなければ、外部には何も送りません。

できないこと

使っている技術

Python 3.10 のコマンドラインツールです。PDFの読み取りに pdfplumber、Excel の書き出しに openpyxl を使っています。テストは151件で、動作は macOS で確かめています。