{"id":"36e38a25-dfe9-48ba-8ae7-a0c57c06ac50","shortId":"DARB5n","kind":"skill","title":"reading-payment-statement","tagline":"支払調書の画像を読み取り構造化データを返す。 他のスキルから呼び出されるほか、直接ユーザーが呼び出すことも可能。","description":"# 支払調書 画像読み取り\n\n支払調書（報酬、料金、契約金及び賞金の支払調書）の画像を読み取り、構造化データとして返すスキル。\n\n## PDF ファイルの場合\n\nファイルが PDF（`.pdf`）の場合、画像 OCR の前にテキスト抽出を試みる。\n\n1. `shinkoku pdf extract-text --file-path <path>` を実行する\n2. 抽出テキストに必要な情報（支払金額・源泉徴収税額等）が含まれていれば、テキストから構造化データを生成する\n3. テキストが不十分（スキャン PDF 等）の場合は `shinkoku pdf to-image --file-path <path> --output-dir <dir>` で PNG に変換し、以下の画像読み取りフローに進む\n\n## 画像読み取り方法\n\n### 推奨: デュアル検証（並列2コンテキスト）\n\n精度を高めるため、同じ画像を2つの独立したコンテキストで並列に読み取り、結果を照合する。\n\n1. **2つの独立した読み取りを実行する:**\n   サブエージェントが使える環境では、2つのサブエージェントを並列で起動し、それぞれ独立に画像を読み取る。\n   各サブエージェントには以下の「基本ルール」と「出力フォーマット」をプロンプトとして渡し、画像ファイルパスを指定する。\n\n2. **結果照合:** 両方の読み取り結果から主要フィールド（金額等）を比較する。\n\n3. **一致の場合:** そのまま採用。「2つの独立した読み取りで結果が一致しました」と報告する。\n\n4. **不一致の場合:** ユーザーに元画像パスと両方の結果を提示し、正しい方を選択してもらう:\n   - 差異のあるフィールドを明示する\n   - A を採用 / B を採用 / 手動入力 の3択を提示する\n\n### フォールバック（サブエージェント非対応の場合）\n\nサブエージェントが利用できない環境では、以下の手順で読み取る:\n\n1. 画像ファイルを直接 Read ツールで読み取る\n2. 以下の「基本ルール」と「出力フォーマット」に従ってデータを抽出する\n3. 抽出結果をユーザーに提示し、**必ず目視確認を依頼する**\n\n⚠ デュアル検証が利用できないため、必ずユーザーに目視確認を依頼してください。\n\n## 基本ルール\n\n- 画像ファイルは Read ツールで読み取る（Claude Vision が自動的に画像を認識する）\n- 金額は必ず int（円単位の整数）で返す。カンマや「円」は除去する\n- 日付は YYYY-MM-DD 形式で返す\n- 和暦は西暦に変換する（令和7年 → 2025、令和6年 → 2024、平成31年 → 2019）\n- 読み取れないフィールドは UNKNOWN（文字列）または 0（金額）とする\n- 複数ファイルを渡された場合は全て順に処理してまとめて返す\n\n## 出力フォーマット\n\n画像を読み取り、以下の形式で返す:\n\n```\n---PAYMENT_STATEMENT_DATA---\npayer_name: 支払者名\ncategory: 区分（報酬/料金/契約金/賞金）\ngross_amount: 支払金額（int）\nwithholding_tax: 源泉徴収税額（int）\n---END---\n```\n\n## 抽出のポイント\n\n- 「支払金額」欄を最優先で抽出する\n- 「源泉徴収税額」欄を正確に読み取る\n- 支払者の名称を抽出する\n- 区分（報酬、料金、契約金、賞金のいずれか）を確認する\n- 「報酬、料金、契約金及び賞金の支払調書」というタイトルを確認する\n- 支払を受ける者の情報（住所・氏名）も読み取れれば確認用に含める\n\n## 複数ファイルの処理\n\n複数のファイルパスが指示された場合:\n\n1. Glob ツールでファイル一覧を取得する（パターンが指示された場合）\n2. 各ファイルを Read ツールで順に読み取る\n3. 全ファイルの結果をまとめて返す（各結果の前にファイル名を記載する）\n\n```\n## file1.jpg\n---PAYMENT_STATEMENT_DATA---\n...\n---END---\n\n## file2.jpg\n---PAYMENT_STATEMENT_DATA---\n...\n---END---\n```","tags":["reading","payment","statement","shinkoku","kazukinagata","agent-skills","bookkeeping","claude-code-plugin","claude-code-skills","japan","python","tax-filing"],"capabilities":["skill","source-kazukinagata","skill-reading-payment-statement","topic-agent-skills","topic-bookkeeping","topic-claude-code-plugin","topic-claude-code-skills","topic-japan","topic-python","topic-tax-filing"],"categories":["shinkoku"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/kazukinagata/shinkoku/reading-payment-statement","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add kazukinagata/shinkoku","source_repo":"https://github.com/kazukinagata/shinkoku","install_from":"skills.sh"}},"qualityScore":"0.619","qualityRationale":"deterministic score 0.62 from registry signals: · indexed on github topic:agent-skills · 339 github stars · SKILL.md body (1,829 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-02T18:53:49.831Z","embedding":null,"createdAt":"2026-04-18T22:02:49.130Z","updatedAt":"2026-05-02T18:53:49.831Z","lastSeenAt":"2026-05-02T18:53:49.831Z","tsv":"'0':151 '1':25,69,105,201 '2':35,80,109,205 '2019':146 '2024':144 '2025':142 '2つのサブエージェントを並列で起動し':72 '2つの独立した読み取りで結果が一致しました':88 '2つの独立した読み取りを実行する':70 '3':41,85,115,209 '4':90 'amount':171 'b':97 'categori':164 'claud':124 'data':160,215,220 'dd':138 'dir':57 'end':178,216,221 'extract':29 'extract-text':28 'file':32,53 'file-path':31,52 'file1.jpg':212 'file2.jpg':217 'glob':202 'gross':170 'imag':51 'int':128,173,177 'mm':137 'name':162 'ocr':23 'output':56 'output-dir':55 'path':33,54 'payer':161 'payment':3,158,213,218 'pdf':16,19,20,27,44,48 'png':59 'read':2,107,122,207 'reading-payment-stat':1 'shinkoku':26,47 'skill' 'skill-reading-payment-statement' 'source-kazukinagata' 'statement':4,159,214,219 'tax':175 'text':30 'to-imag':49 'topic-agent-skills' 'topic-bookkeeping' 'topic-claude-code-plugin' 'topic-claude-code-skills' 'topic-japan' 'topic-python' 'topic-tax-filing' 'unknown':148 'vision':125 'withhold':174 'yyyi':136 'yyyy-mm-dd':135 'が含まれていれば':39 'が自動的に画像を認識する':126 'そのまま採用':87 'それぞれ独立に画像を読み取る':73 'で':58 'で返す':130 'と':76,112 'というタイトルを確認する':194 'とする':153 'と報告する':89 'に変換し':60 'に従ってデータを抽出する':114 'の3択を提示する':100 'の前にテキスト抽出を試みる':24 'の場合':21 'の場合は':46 'の画像を読み取り':14 'は除去する':133 'または':150 'も読み取れれば確認用に含める':198 'をプロンプトとして渡し':78 'を実行する':34 'を採用':96,98 'を比較する':84 'を確認する':190 'カンマや':131 'サブエージェントが使える環境では':71 'サブエージェントが利用できない環境では':103 'サブエージェント非対応の場合':102 'スキャン':43 'ツールでファイル一覧を取得する':203 'ツールで読み取る':108,123 'ツールで順に読み取る':208 'テキストから構造化データを生成する':40 'テキストが不十分':42 'デュアル検証':64 'デュアル検証が利用できないため':118 'パターンが指示された場合':204 'ファイルが':18 'ファイルの場合':17 'フォールバック':101 'ユーザーに元画像パスと両方の結果を提示し':92 '一致の場合':86 '不一致の場合':91 '両方の読み取り結果から主要フィールド':82 '並列2コンテキスト':65 '他のスキルから呼び出されるほか':6 '令和6年':143 '令和7年':141 '以下の':110 '以下の形式で返す':157 '以下の手順で読み取る':104 '以下の画像読み取りフローに進む':61 '住所':196 '全ファイルの結果をまとめて返す':210 '円':132 '円単位の整数':129 '出力フォーマット':77,113,155 '区分':165,185 '各サブエージェントには以下の':74 '各ファイルを':206 '各結果の前にファイル名を記載する':211 '同じ画像を2つの独立したコンテキストで並列に読み取り':67 '和暦は西暦に変換する':140 '基本ルール':75,111,120 '報酬':11,166,186,191 '契約金':168,188 '契約金及び賞金の支払調書':13,193 '差異のあるフィールドを明示する':94 '平成31年':145 '形式で返す':139 '必ずユーザーに目視確認を依頼してください':119 '必ず目視確認を依頼する':117 '手動入力':99 '抽出のポイント':179 '抽出テキストに必要な情報':36 '抽出結果をユーザーに提示し':116 '推奨':63 '支払を受ける者の情報':195 '支払者の名称を抽出する':184 '支払者名':163 '支払調書':8,10 '支払調書の画像を読み取り構造化データを返す':5 '支払金額':37,172,180 '文字列':149 '料金':12,167,187,192 '日付は':134 '構造化データとして返すスキル':15 '欄を最優先で抽出する':181 '欄を正確に読み取る':183 '正しい方を選択してもらう':93 '氏名':197 '源泉徴収税額':176,182 '源泉徴収税額等':38 '画像':22 '画像を読み取り':156 '画像ファイルは':121 '画像ファイルを直接':106 '画像ファイルパスを指定する':79 '画像読み取り':9 '画像読み取り方法':62 '直接ユーザーが呼び出すことも可能':7 '等':45 '精度を高めるため':66 '結果を照合する':68 '結果照合':81 '複数のファイルパスが指示された場合':200 '複数ファイルの処理':199 '複数ファイルを渡された場合は全て順に処理してまとめて返す':154 '読み取れないフィールドは':147 '賞金':169 '賞金のいずれか':189 '金額':152 '金額は必ず':127 '金額等':83","prices":[{"id":"71bc5ee2-49ea-4e38-96d8-b05ae235be3d","listingId":"36e38a25-dfe9-48ba-8ae7-a0c57c06ac50","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"kazukinagata","category":"shinkoku","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:49.130Z"}],"sources":[{"listingId":"36e38a25-dfe9-48ba-8ae7-a0c57c06ac50","source":"github","sourceId":"kazukinagata/shinkoku/reading-payment-statement","sourceUrl":"https://github.com/kazukinagata/shinkoku/tree/main/skills/reading-payment-statement","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:49.130Z","lastSeenAt":"2026-05-02T18:53:49.831Z"}],"details":{"listingId":"36e38a25-dfe9-48ba-8ae7-a0c57c06ac50","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"kazukinagata","slug":"reading-payment-statement","github":{"repo":"kazukinagata/shinkoku","stars":339,"topics":["agent-skills","bookkeeping","claude-code-plugin","claude-code-skills","japan","python","tax-filing"],"license":"mit","html_url":"https://github.com/kazukinagata/shinkoku","pushed_at":"2026-03-21T04:08:44Z","description":"確定申告自動化 AI エージェントプラグイン — 帳簿管理から e-Tax 入力代行まで","skill_md_sha":"2ca982ce7ea2a309294e8fb919c76f79eecbc761","skill_md_path":"skills/reading-payment-statement/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/kazukinagata/shinkoku/tree/main/skills/reading-payment-statement"},"layout":"multi","source":"github","category":"shinkoku","frontmatter":{"name":"reading-payment-statement","description":"支払調書の画像を読み取り構造化データを返す。 他のスキルから呼び出されるほか、直接ユーザーが呼び出すことも可能。"},"skills_sh_url":"https://skills.sh/kazukinagata/shinkoku/reading-payment-statement"},"updatedAt":"2026-05-02T18:53:49.831Z"}}