mcpbeat

Reading Deduction Cert

kazukinagata/reading-deduction-cert

> 控除証明書(生命保険料・地震保険料等)の画像を読み取り構造化データを返す。 他のスキルから呼び出されるほか、直接ユーザーが呼び出すことも可能。

2k tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
352
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/kazukinagata/shinkoku --skill reading-deduction-cert

The instruction itself

2 sections, as written by the author

控除証明書 画像読み取り

控除証明書(生命保険料控除証明書、地震保険料控除証明書、社会保険料控除証明書等)の画像を読み取り、構造化データとして返すスキル。

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(金額)とする

対象書類

  • 生命保険料控除証明書
  • 地震保険料控除証明書
  • 社会保険料(国民年金保険料)控除証明書
  • 小規模企業共済等掛金払込証明書(iDeCo含む)

出力フォーマット

JSON オブジェクトとして返す。金額は必ず int(円単位の整数)とする。

生命保険料控除証明書

{
  "certificate_type": "life_insurance",
  "policy_type": "新制度 or 旧制度",
  "category": "一般 or 介護医療 or 個人年金",
  "company_name": "保険会社名",
  "policy_number": "証券番号",
  "annual_premium": 120000,
  "dividend": 0
}

地震保険料控除証明書

{
  "certificate_type": "earthquake_insurance",
  "company_name": "保険会社名",
  "policy_number": "証券番号",
  "annual_premium": 50000,
  "is_old_long_term": false
}

社会保険料控除証明書

{
  "certificate_type": "social_insurance",
  "insurance_type": "national_pension",
  "annual_premium": 200000,
  "period": "対象期間"
}

小規模企業共済等掛金払込証明書

{
  "certificate_type": "small_business_mutual_aid",
  "sub_type": "ideco or small_business or disability",
  "annual_contribution": 276000
}

抽出のポイント

  • 書類の種別(生命保険料/地震保険料/社会保険料/小規模企業共済等)を最初に判定する
  • 生命保険料控除は新旧制度の区別と、3区分(一般/介護医療/個人年金)の分類を確認する
  • 地震保険料控除は旧長期損害保険かどうかの区別を確認する
  • 金額は「証明額」「申告額」が異なる場合、「申告額」を使用する
  • 保険会社名・証券番号は確認用に抽出する

How to use it

Copy the folder

Take kazukinagata/reading-deduction-cert from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.