給与明細 PDF から控除項目を自動抽出し、MoneyForward ME に自動登録する Python ツールです。
毎月の煩わしい給与入力作業を数秒で完了させます。
[!WARNING] > このプロジェクトについて
このツールは個人の学習・習熟を目的とした参考実装です。
- 特定の給与明細 PDF フォーマットに強く依存しています
- そのままでは他の企業・組織の給与明細には対応していません
- MoneyForward ME の UI 変更により動作しなくなる可能性があります
- 実用する場合は、ご自身の環境に合わせた大幅なカスタマイズが必要です
参考程度にとどめ、自己責任でご利用ください。
- 📄 PDF 自動解析: 給与明細 PDF から控除項目と金額を自動抽出
- 💰 自動登録: MoneyForward ME へ収入・支出を自動登録
- ⚡ 高速処理: 10 項目の登録を約 30 秒で完了
- 🔒 セキュア: 2 段階認証(TOTP)対応
- 📊 正確性チェック: 控除合計と各項目の合計が一致することを検証
会社から給与明細 PDF を受け取ったら、このツールを実行するだけ。手動で 10 分かかっていた入力作業が 30 秒で完了します。
# 2025年11月の給与を登録
python upload.py 2025 11登録される内容:
- ✅ 控除合計 → 収入として登録(給与の手取り額)
- ✅ 所得税 → 支出として登録
- ✅ 住民税 → 支出として登録
- ✅ 健康保険料、厚生年金保険料、雇用保険料 → 各種社会保険料
- ✅ その他(労働組合費、給食費など)
賞与も給与と同じ PDF 形式なので、オプションを追加するだけで対応できます。
# 2025年6月の賞与を登録
python upload.py 2025 6 --bonus過去数ヶ月分をまとめて登録したい場合、スクリプトを連続実行できます。
# 2025年9月から11月までの3ヶ月分を登録
for /L %i in (9,1,11) do python upload.py 2025 %i| 項目 | MoneyForward 上の扱い | カテゴリ |
|---|---|---|
| 控除合計 | 収入 | 給与 |
| 所得税 | 支出 | 税・社会保障 > 所得税・住民税 |
| 住民税 | 支出 | 税・社会保障 > 所得税・住民税 |
| 健康保険料 | 支出 | 税・社会保障 > 健康保険 |
| 介護保険料 | 支出 | 税・社会保障 > 介護保険料 |
| 厚生年金保険料 | 支出 | 税・社会保障 > 年金保険料 |
| 雇用保険料 | 支出 | 税・社会保障 > 雇用保険料 |
| 労働組合費 | 支出 | 税・社会保障 > 諸会費 |
| 給食費 | 支出 | 食費 > 食費 |
| 加入者掛金額 | 支出 | 税・社会保障 > 年金保険料 |
- Python 3.10 以上
- Google Chrome
- MoneyForward ME アカウント(プレミアム推奨)
- リポジトリのクローン
git clone https://github.com/yourusername/SalaryRegister.git
cd SalaryRegister- 仮想環境の作成と有効化
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux- 依存パッケージのインストール
pip install selenium pypdfium2 PyYAML pyotp- 設定ファイルの作成
userdata/config.iniを以下の内容で作成:
[DEFAULT]
PdfPassword = your_pdf_password
MfMailAddress = your_moneyforward_email
MfPassword = your_moneyforward_password
EmployeeNumber = your_employee_number
TfaId = your_totp_secret_key
UseHeadlessMode = true
DefaultDate = 25- 給与明細 PDF の配置
userdata/salaryData/ディレクトリに給与明細 PDF を配置:
202511_kyuyo_1221011.pdf # フォーマット: YYYYMM_kyuyo_社員番号.pdf
- カテゴリ設定のカスタマイズ(オプション)
userdata/items.ymlで控除項目とカテゴリのマッピングをカスタマイズ可能。
cd src
python upload.py <年> <月> [オプション]-b, --bonus: 賞与(ボーナス)として登録
# 2025年11月の給与を登録
python upload.py 2025 11
# 給料日を指定(デフォルトは25日)
# 実行時にプロンプトで入力: 27
python upload.py 2025 11
# 2025年12月の賞与を登録
python upload.py 2025 12 --bonus- Python 3.10: メイン言語
- Selenium WebDriver: ブラウザ自動操作
- pypdfium2: PDF 解析
- PyYAML: 設定ファイル管理
- pyotp: TOTP 2 段階認証
- 処理時間: 約 30 秒(10 項目登録時)
- 待機時間の最適化: 従来比 約 3 倍高速化
- 成功率: 99%以上(安定した UI 検出)
→ PDF 内の金額が正しく読み取れていない可能性があります。PDF の品質を確認してください。
→ Google Chrome がインストールされているか確認してください。
→ MoneyForward の UI が変更された可能性があります。最新版にアップデートしてください。
エラー時にuserdata/debug_page.htmlとuserdata/debug_screenshot.pngが自動生成され、問題の特定に役立ちます。
- パスワードは
userdata/config.iniで管理(.gitignoreで除外) - TOTP 秘密鍵も設定ファイルで安全に管理
- ヘッドレスモードで画面を表示せずに実行可能
このプロジェクトは MIT ライセンスの下で公開されています。
プルリクエストを歓迎します!大きな変更の場合は、まず issue を開いて変更内容を議論してください。
問題や提案がある場合は、GitHub の issue を作成してください。
注意: このツールは個人的な使用を目的としています。MoneyForward の利用規約を遵守し、自己責任で使用してください。