元派遣プログラマの自称技術系ブログです。雑記とか自作のオープンソースプロジェクトの話とか。
Javaとか組込とかできます。お仕事ください。

クレカの電子明細PDFをCSVに変換する

確定申告時期ですね。
クレジットカードの電子明細pdfからデータを転記するのがめんどくさかったので、pdfminerを使ってCSVに変換するpythonスクリプトを作りました。

イオンカードと楽天カードの形式に対応してます。

github.com


イオンカード

$ python3 ./app/extractAeoncardPdf.py /mnt/d/tmp.wsl/meisai202009.pdf
('ご利用カード', 'イオンカード') ('今回ご請求金額', 99999) ('お支払日', '2020年9月2日(水)')
:

出力

ご利用カード	イオンカード
今回ご請求金額	99999
お支払日	2020年9月2日(水)
ご利用明細
20/06/30	本人	AMAZON.CO.JP	1回	3333
20/07/11	本人	AMAZON.CO.JP	1回	4444
:
20/07/20	本人	ALIEXPRESS.COM	1回	5555

楽天カードカード

$ python3 ./app/extractRaktenCardPdf.py /mnt/d/tmp.wsl/statement_202101.pdf
('ご利用カード', '楽天カード(VISA)') ('今回ご請求金額', 99999) ('お支払日', '2021年01月ご請求金額')
:

2枚以上の明細のあるものは、サンプルがなかったため、対応できませんでした。



ところで、どちらもウェブサイトでCSV形式を選択すればCSVをダウンロードできます。このスクリプトは、間違ってpdfをダウンロードして後から気が付いた人向けのものになります。

ほかのPDF用のパーサーを作る

レイアウトをPDFごとに手動で定義して、パーサーを作る必要があります。

以下の手順で実装します。

  1. Pdf文字列の座標一覧を取得
  2. 必要な文字を構成する座標群の選定
  3. 座標群から文字を読み出すコードの作成


座標の取得方法は、gettingstarted.pyを参考にしてください。
パーサーの実装は、parserディレクトリは以下を参考にしてください。

制作のご依頼はツイッターか何かでご連絡ください。(無償ではやりません)