見出し画像

【データラングリング入門】外国配当控除の確定申告が面倒なのでPythonで自動化したよ。NISAは未対応

外国配当控除は確定申告をすると払った税金の一部の還付を受けることが可能です。

しかし申請は割とめんどくさく、一年分の全ての銘柄の振込履歴を調べて全ての数値を足し込んで申請をしなければなりません。

そこで、PDFをダウンロードしてそのフォルダに対してプログラムを実行して配当金の一覧を出力するPythonプログラムを作りました。

色々PDFの読み取りツールを利用しましたが、pdfminer.sixが今回の用途には一番しっくりきました。

SBIの配当金振込はテーブルを含む帳票なのでCamelotいけるかな〜と考えたのですが厳しすぎたのでやめました。

あとはPDFのラングリングはやはり結構辛いですね〜

データエンジニアリングとしてPDFを分析するのはできる限り避けて、Excelにまでなるべく落とし込みたいところです。

データを操作することに興味のある方は是非Udemyのコースも受講もおすすめです!

Camelotで試した【ダメ。茨の道すぎた】

事前準備

brew install ghostscript tcl-tk
pip install "camelot-py[base]"

エラーあらわる

LinuxとかよくあるLDD的なエラーぽい

OSError: dlopen(libgs.so, 0x0006): tried: 'libgs.so' (no such file), '/usr/local/lib/libgs.so' (no such file), '/usr/lib/libgs.so' (no such file), '/usr/lib/libgs.so' (no such file), '/usr/local/lib/libgs.so' (no such file)

ディレクトリを作成してリンクをはる

ghostscriptは上のBrewでインストールしたものです。

brewでインストールすると/opt/homebrew/opt 配下にインストールされるのでそこからエラーを出力しているフォルダに対してシンボリックリンクを貼ります。

sudo mkdir /usr/local/lib/
cd /ursr/local/lib
sudo ln -s /opt/homebrew/opt/ghostscript/lib/libgs.dylib libgs.dylib

できた〜

>>> import camelot
/Users/saitouyuuki/.pyenv/versions/3.9.1/lib/python3.9/site-packages/pandas/compat/__init__.py:124: UserWarning: Could not import the lzma module. Your installed Python is incomplete. Attempting to use lzma compression will result in a RuntimeError.
 warnings.warn(msg)
>>> file_data = "/Users/saitouyuuki/Desktop/DocumentTextDisplayAction.pdf"
>>> tables = camelot.read_pdf(file_data)

パラメータなどを調整しても

この記事が気に入ったらサポートをしてみませんか?