reading-withholding▌
kazukinagata/shinkoku · updated Apr 8, 2026
源泉徴収票の画像を読み取り、構造化データとして返すスキル。
源泉徴収票 画像読み取り
源泉徴収票の画像を読み取り、構造化データとして返すスキル。
PDF ファイルの場合
ファイルが PDF(.pdf)の場合、画像 OCR の前にテキスト抽出を試みる。
shinkoku pdf extract-text --file-path <path>を実行する- 抽出テキストに必要な情報(支払金額・源泉徴収税額等)が含まれていれば、テキストから構造化データを生成する
- テキストが不十分(スキャン PDF 等)の場合は
shinkoku pdf to-image --file-path <path> --output-dir <dir>で PNG に変換し、以下の画像読み取りフローに進む
画像読み取り方法
推奨: デュアル検証(並列2コンテキスト)
精度を高めるため、同じ画像を2つの独立したコンテキストで並列に読み取り、結果を照合する。
-
2つの独立した読み取りを実行する: サブエージェントが使える環境では、2つのサブエージェントを並列で起動し、それぞれ独立に画像を読み取る。 各サブエージェントには以下の「基本ルール」と「出力フォーマット」をプロンプトとして渡し、画像ファイルパスを指定する。
-
結果照合: 両方の読み取り結果から主要フィールド(金額等)を比較する。
-
一致の場合: そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告する。
-
不一致の場合: ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
- 差異のあるフィールドを明示する
- A を採用 / B を採用 / 手動入力 の3択を提示する
フォールバック(サブエージェント非対応の場合)
サブエージェントが利用できない環境では、以下の手順で読み取る:
- 画像ファイルを直接 Read ツールで読み取る
- 以下の「基本ルール」と「出力フォーマット」に従ってデータを抽出する
- 抽出結果をユーザーに提示し、必ず目視確認を依頼する
⚠ デュアル検証が利用できないため、必ずユーザーに目視確認を依頼してください。
基本ルール
- 画像ファイルは Read ツールで読み取る(Claude Vision が自動的に画像を認識する)
- 金額は必ず int(円単位の整数)で返す。カンマや「円」は除去する
- 日付は YYYY-MM-DD 形式で返す
- 和暦は西暦に変換する(令和7年 → 2025、令和6年 → 2024、平成31年 → 2019)
- 読み取れないフィールドは UNKNOWN(文字列)または 0(金額)とする
- 複数ファイルを渡された場合は全て順に処理してまとめて返す
出力フォーマット
画像を読み取り、以下の形式で返す:
---WITHHOLDING_DATA---
payer_name: 支払者名
payment_amount: 支払金額(int)
withheld_tax: 源泉徴収税額(int)
social_insurance: 社会保険料等の金額(int)
life_insurance_deduction: 生命保険料の控除額(int)
earthquake_insurance_deduction: 地震保険料の控除額(int)
housing_loan_deduction: 住宅借入金等特別控除の額(int)
life_insurance_detail:
general_new: 一般の新保険料(int)
general_old: 一般の旧保険料(int)
medical_care: 介護医療保険料(int)
annuity_new: 個人年金の新保険料(int)
annuity_old: 個人年金の旧保険料(int)
---END---
抽出のポイント
- 「支払金額」欄(給与収入の総額)を最優先で抽出する
- 「源泉徴収税額」欄を正確に読み取る
- 「社会保険料等の金額」欄を読み取る
- 生命保険料控除は新旧制度・3区分(一般/介護医療/個人年金)の内訳を確認する
- 地震保険料控除・住宅ローン控除は記載がある場合のみ抽出する
- 支払者の名称(会社名)を抽出する
- 記載がない項目は 0 とする
複数ファイルの処理
複数のファイルパスが指示された場合:
- Glob ツールでファイル一覧を取得する(パターンが指示された場合)
- 各ファイルを Read ツールで順に読み取る
- 全ファイルの結果をまとめて返す(各結果の前にファイル名を記載する)
## file1.jpg
---WITHHOLDING_DATA---
...
---END---
## file2.jpg
---WITHHOLDING_DATA---
...
---END---
Discussion
Product Hunt–style comments (not star reviews)- No comments yet — start the thread.
Ratings
4.6★★★★★69 reviews- ★★★★★Amelia Jain· Dec 16, 2024
reading-withholding has been reliable in day-to-day use. Documentation quality is above average for community skills.
- ★★★★★Aanya Gill· Dec 12, 2024
reading-withholding fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Hiroshi Sanchez· Dec 12, 2024
Useful defaults in reading-withholding — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
- ★★★★★Camila Perez· Dec 4, 2024
We added reading-withholding from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
- ★★★★★Ava Martinez· Nov 23, 2024
Solid pick for teams standardizing on skills: reading-withholding is focused, and the summary matches what you get after install.
- ★★★★★Sophia Thomas· Nov 19, 2024
reading-withholding reduced setup friction for our internal harness; good balance of opinion and flexibility.
- ★★★★★Henry Wang· Nov 15, 2024
Registry listing for reading-withholding matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Yash Thakker· Nov 11, 2024
Registry listing for reading-withholding matched our evaluation — installs cleanly and behaves as described in the markdown.
- ★★★★★Ava Robinson· Nov 7, 2024
reading-withholding fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
- ★★★★★Hiroshi Flores· Nov 3, 2024
reading-withholding has been reliable in day-to-day use. Documentation quality is above average for community skills.
showing 1-10 of 69