はじめに
業務で扱う請求書や見積書のPDFを手作業で確認・転記するのは大変です。特に複数社から届く請求書を毎月集計する場合、転記ミスや作業時間の増大につながります。
そこで本記事では、Python × pdfplumber を活用して PDF請求書から自動的にテキストを抽出し、請求額を集計する仕組みを解説します。
ExcelやCSV出力まで自動化すれば、月次の経理業務を効率化できます。
使用ライブラリ
本記事で利用するのは以下のライブラリです。
pip install pdfplumber pandas openpyxl
- pdfplumber:PDFのテキストや表を抽出
- pandas:データ集計・加工
- openpyxl:Excel出力
ステップ① PDFからテキスト抽出
まずは pdfplumber
でPDFからテキストを読み取ります。
import pdfplumber
pdf_path = "invoices/sample_invoice.pdf"
with pdfplumber.open(pdf_path) as pdf:
for page in pdf.pages:
text = page.extract_text()
print(text)
これでPDF内のテキストが取得できます。請求書によっては表形式のデータを持っていることもあるので、次のステップで表を抽出します。
ステップ② 表データの抽出
請求書に表形式(品目・数量・単価・金額など)が含まれている場合は、以下のように表データを直接取得できます。
import pandas as pd
with pdfplumber.open(pdf_path) as pdf:
first_page = pdf.pages[0]
table = first_page.extract_table()
df = pd.DataFrame(table[1:], columns=table[0]) # 1行目をヘッダに
print(df)
例:抽出結果
品目 | 数量 | 単価 | 金額 |
---|---|---|---|
サービスA | 2 | 5000 | 10000 |
サービスB | 1 | 8000 | 8000 |
ステップ③ 複数PDFの一括処理
実務では複数の請求書ファイルをまとめて処理するケースが多いため、フォルダ内のPDFを順番に読み込みます。
import glob
data_list = []
for file in glob.glob("invoices/*.pdf"):
with pdfplumber.open(file) as pdf:
first_page = pdf.pages[0]
table = first_page.extract_table()
df = pd.DataFrame(table[1:], columns=table[0])
df["ファイル名"] = file # 元請求書を記録
data_list.append(df)
all_data = pd.concat(data_list, ignore_index=True)
print(all_data)
ステップ④ 請求額の集計
次に「金額」列を数値化し、取引先ごとや月ごとに集計してみましょう。
# 金額を数値化
all_data["金額"] = all_data["金額"].astype(int)
# 請求額合計
total_amount = all_data["金額"].sum()
print(f"請求額合計: {total_amount} 円")
# 取引先別集計(例:取引先が「品目」列に含まれる場合)
grouped = all_data.groupby("品目")["金額"].sum().reset_index()
print(grouped)
ステップ⑤ Excelへ出力
最終的に経理用に Excelへ自動出力すれば、月次報告書や会計ソフトへの転記がスムーズになります。
output_path = "invoice_summary.xlsx"
all_data.to_excel(output_path, index=False)
print("Excel出力が完了しました:", output_path)
実務での活用ポイント
- 請求書フォーマットが統一されていれば精度◎
- OCRが必要な場合は
pytesseract
を併用すると良い - 取引先ごとにPDFフォーマットが異なる場合は、
「ルールごとに抽出処理を切り替える」仕組みを組み込むと実用的
まとめ
本記事では Python × pdfplumber を使って PDF請求書を自動でテキスト化&集計する方法を紹介しました。
- PDFからテキストや表を抽出
- 複数PDFをまとめて処理
- 請求額を集計し、Excelに出力
これにより、手作業での転記作業を大幅に削減でき、経理業務の効率化につながります。
👉 次のステップとして、OCR併用によるスキャンPDF対応版や、会計ソフトAPIとの連携も取り上げるとさらに実務に役立ちます。