Python × pdfplumberでPDF請求書を自動テキスト化&集計する方法

はじめに

業務で扱う請求書や見積書の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)

例:抽出結果

品目数量単価金額
サービスA2500010000
サービスB180008000

ステップ③ 複数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との連携も取り上げるとさらに実務に役立ちます。

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