源泉徴収票の画像を読み取り構造化データを返す。 他のスキルから呼び出されるほか、直接ユーザーが呼び出すことも可能。
源泉徴収票の画像を読み取り、構造化データとして返すスキル。
ファイルが PDF(.pdf)の場合、画像 OCR の前にテキスト抽出を試みる。
shinkoku pdf extract-text --file-path <path> を実行するshinkoku pdf to-image --file-path <path> --output-dir <dir> で PNG に変換し、以下の画像読み取りフローに進む精度を高めるため、同じ画像を2つの独立したコンテキストで並列に読み取り、結果を照合する。
2つの独立した読み取りを実行する: サブエージェントが使える環境では、2つのサブエージェントを並列で起動し、それぞれ独立に画像を読み取る。 各サブエージェントには以下の「基本ルール」と「出力フォーマット」をプロンプトとして渡し、画像ファイルパスを指定する。
結果照合: 両方の読み取り結果から主要フィールド(金額等)を比較する。
一致の場合: そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告する。
不一致の場合: ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:
サブエージェントが利用できない環境では、以下の手順で読み取る:
⚠ デュアル検証が利用できないため、必ずユーザーに目視確認を依頼してください。
画像を読み取り、以下の形式で返す:
---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---
複数のファイルパスが指示された場合:
## file1.jpg
---WITHHOLDING_DATA---
...
---END---
## file2.jpg
---WITHHOLDING_DATA---
...
---END---