Skip to content

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

 
 
 

Contributors

Languages