Skip to content

Salary registration tool to extract datas from PDF files and upload to MoneyForward using Selenium

License

Notifications You must be signed in to change notification settings

KawaSwitch/SalaryRegister

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

給与登録自動化ツール (Salary Register)

給与明細 PDF から控除項目を自動抽出し、MoneyForward ME に自動登録する Python ツールです。
毎月の煩わしい給与入力作業を数秒で完了させます。

[!WARNING] > このプロジェクトについて

このツールは個人の学習・習熟を目的とした参考実装です。

  • 特定の給与明細 PDF フォーマットに強く依存しています
  • そのままでは他の企業・組織の給与明細には対応していません
  • MoneyForward ME の UI 変更により動作しなくなる可能性があります
  • 実用する場合は、ご自身の環境に合わせた大幅なカスタマイズが必要です

参考程度にとどめ、自己責任でご利用ください。

🎯 主な機能

  • 📄 PDF 自動解析: 給与明細 PDF から控除項目と金額を自動抽出
  • 💰 自動登録: MoneyForward ME へ収入・支出を自動登録
  • 高速処理: 10 項目の登録を約 30 秒で完了
  • 🔒 セキュア: 2 段階認証(TOTP)対応
  • 📊 正確性チェック: 控除合計と各項目の合計が一致することを検証

💡 ユースケース

ケース 1: 毎月の給与明細登録

会社から給与明細 PDF を受け取ったら、このツールを実行するだけ。手動で 10 分かかっていた入力作業が 30 秒で完了します。

# 2025年11月の給与を登録
python upload.py 2025 11

登録される内容:

  • ✅ 控除合計 → 収入として登録(給与の手取り額)
  • ✅ 所得税 → 支出として登録
  • ✅ 住民税 → 支出として登録
  • ✅ 健康保険料、厚生年金保険料、雇用保険料 → 各種社会保険料
  • ✅ その他(労働組合費、給食費など)

ケース 2: 賞与(ボーナス)の登録

賞与も給与と同じ PDF 形式なので、オプションを追加するだけで対応できます。

# 2025年6月の賞与を登録
python upload.py 2025 6 --bonus

ケース 3: 複数月分の一括登録

過去数ヶ月分をまとめて登録したい場合、スクリプトを連続実行できます。

# 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 アカウント(プレミアム推奨)

インストール手順

  1. リポジトリのクローン
git clone https://github.com/yourusername/SalaryRegister.git
cd SalaryRegister
  1. 仮想環境の作成と有効化
python -m venv .venv
.venv\Scripts\activate  # Windows
# source .venv/bin/activate  # macOS/Linux
  1. 依存パッケージのインストール
pip install selenium pypdfium2 PyYAML pyotp
  1. 設定ファイルの作成 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
  1. 給与明細 PDF の配置 userdata/salaryData/ディレクトリに給与明細 PDF を配置:
202511_kyuyo_1221011.pdf  # フォーマット: YYYYMM_kyuyo_社員番号.pdf
  1. カテゴリ設定のカスタマイズ(オプション) 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 の品質を確認してください。

エラー: "WebDriver の初期化に失敗しました"

→ Google Chrome がインストールされているか確認してください。

エラー: "入力ボタンが見つかりません"

→ MoneyForward の UI が変更された可能性があります。最新版にアップデートしてください。

デバッグモード

エラー時にuserdata/debug_page.htmluserdata/debug_screenshot.pngが自動生成され、問題の特定に役立ちます。

🔐 セキュリティ

  • パスワードはuserdata/config.iniで管理(.gitignoreで除外)
  • TOTP 秘密鍵も設定ファイルで安全に管理
  • ヘッドレスモードで画面を表示せずに実行可能

📝 ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。

🤝 コントリビューション

プルリクエストを歓迎します!大きな変更の場合は、まず issue を開いて変更内容を議論してください。

📮 お問い合わせ

問題や提案がある場合は、GitHub の issue を作成してください。


注意: このツールは個人的な使用を目的としています。MoneyForward の利用規約を遵守し、自己責任で使用してください。

About

Salary registration tool to extract datas from PDF files and upload to MoneyForward using Selenium

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages