{"id":"a7ca373b-7c8c-4ef7-b2a0-bc95be513746","shortId":"v7wHaK","kind":"skill","title":"reading-receipt","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\n```\n---RECEIPT_DATA---\ndate: YYYY-MM-DD\nvendor: 店舗名\ntotal_amount: 金額（int）\ntax_included: true/false\nitems:\n  - name: 品目名\n    amount: 金額（int）\n    quantity: 数量（int）\n---END---\n```\n\n### ふるさと納税受領証明書の場合\n\n画像を読み取り、以下の形式で返す:\n\n```\n---FURUSATO_RECEIPT_DATA---\nmunicipality_name: 自治体名（市区町村名）\nprefecture: 都道府県名\namount: 寄附金額（int）\ndate: YYYY-MM-DD\nreceipt_number: 受領証明書番号（記載がなければ UNKNOWN）\n---END---\n```\n\n## 抽出のポイント\n\n### レシート・領収書\n\n- 合計金額（税込）を最優先で抽出する\n- 内税・外税の区別を確認する（「税込」「税抜」の記載）\n- 品目は読み取れる範囲で抽出する（不明な場合は items を空にする）\n- 店舗名はレシート上部のロゴや名称から抽出する\n- 日付はレシート上の取引日を使用する（発行日ではなく）\n\n### ふるさと納税受領証明書\n\n- 「寄附金受領証明書」というタイトルを確認する\n- 自治体名は「○○市」「○○町」「○○村」等の正式名称を抽出する\n- 都道府県名は自治体名の前に記載されていることが多い\n- 寄附金額は「金額」「寄附金額」欄から抽出する\n- 日付は寄附を受領した日（受領日）を使用する\n- 受領証明書番号は「第○○号」等の記載から抽出する\n\n## 複数ファイルの処理\n\n複数のファイルパスが指示された場合、または Glob パターンでファイル一覧を取得した場合:\n\n1. Glob ツールでファイル一覧を取得する（パターンが指示された場合）\n2. 各ファイルを Read ツールで順に読み取る\n3. 全ファイルの結果をまとめて返す（各結果の前にファイル名を記載する）\n\n```\n## file1.jpg\n---RECEIPT_DATA---\n...\n---END---\n\n## file2.jpg\n---RECEIPT_DATA---\n...\n---END---\n```","tags":["reading","receipt","shinkoku","kazukinagata","agent-skills","bookkeeping","claude-code-plugin","claude-code-skills","japan","python","tax-filing"],"capabilities":["skill","source-kazukinagata","skill-reading-receipt","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-receipt","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 (2,292 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.901Z","embedding":null,"createdAt":"2026-04-18T22:02:49.992Z","updatedAt":"2026-05-02T18:53:49.901Z","lastSeenAt":"2026-05-02T18:53:49.901Z","tsv":"'0':153 '1':26,71,107,257 '2':36,82,111,261 '2019':148 '2024':146 '2025':144 '2つのサブエージェントを並列で起動し':74 '2つの独立した読み取りで結果が一致しました':90 '2つの独立した読み取りを実行する':72 '3':43,87,117,265 '4':92 'amount':172,181,200 'b':99 'claud':126 'data':163,193,270,274 'date':164,203 'dd':140,168,207 'dir':59 'end':187,213,271,275 'extract':30 'extract-text':29 'file':33,55 'file-path':32,54 'file1.jpg':268 'file2.jpg':272 'furusato':191 'glob':255,258 'imag':53 'includ':176 'int':130,174,183,186,202 'item':178,227 'mm':139,167,206 'municip':194 'name':179,195 'number':209 'ocr':24 'output':58 'output-dir':57 'path':34,56 'pdf':17,20,21,28,46,50 'png':61 'prefectur':198 'quantiti':184 'read':2,109,124,263 'reading-receipt':1 'receipt':3,162,192,208,269,273 'shinkoku':27,49 'skill' 'skill-reading-receipt' 'source-kazukinagata' 'tax':175 'text':31 'to-imag':51 'topic-agent-skills' 'topic-bookkeeping' 'topic-claude-code-plugin' 'topic-claude-code-skills' 'topic-japan' 'topic-python' 'topic-tax-filing' 'total':171 'true/false':177 'unknown':150,212 'vendor':169 'vision':127 'yyyi':138,166,205 'yyyy-mm-dd':137,165,204 'が含まれていれば':41 'が自動的に画像を認識する':128 'そのまま採用':89 'それぞれ独立に画像を読み取る':75 'で':60 'で返す':132 'と':78,114 'というタイトルを確認する':234 'とする':155 'と報告する':91 'に変換し':62 'に従ってデータを抽出する':116 'の3択を提示する':102 'の前にテキスト抽出を試みる':25 'の場合':22 'の場合は':48 'の記載':224 'は除去する':135 'ふるさと納税受領証明書':11,232 'ふるさと納税受領証明書の場合':188 'ふるさと納税受領証明書の画像を読み取り':15 'ふるさと納税受領証明書の画像を読み取り構造化データを返す':6 'または':152,254 'をプロンプトとして渡し':80 'を使用する':247 'を実行する':35 'を採用':98,100 'を最優先で抽出する':219 'を比較する':86 'を空にする':228 'カンマや':133 'サブエージェントが使える環境では':73 'サブエージェントが利用できない環境では':105 'サブエージェント非対応の場合':104 'スキャン':45 'ツールでファイル一覧を取得する':259 'ツールで読み取る':110,125 'ツールで順に読み取る':264 'テキストから構造化データを生成する':42 'テキストが不十分':44 'デュアル検証':66 'デュアル検証が利用できないため':120 'パターンが指示された場合':260 'パターンでファイル一覧を取得した場合':256 'ファイルが':19 'ファイルの場合':18 'フォールバック':103 'ユーザーに元画像パスと両方の結果を提示し':94 'レシート':4,9,13,158,215 '一致の場合':88 '不一致の場合':93 '不明な場合は':226 '両方の読み取り結果から主要フィールド':84 '並列2コンテキスト':67 '他のスキルから呼び出されるほか':7 '令和6年':145 '令和7年':143 '以下の':112 '以下の形式で返す':161,190 '以下の手順で読み取る':106 '以下の画像読み取りフローに進む':63 '全ファイルの結果をまとめて返す':266 '内税':220 '円':134 '円単位の整数':131 '出力フォーマット':79,115,157 '受領日':246 '受領証明書番号':210 '受領証明書番号は':248 '号':250 '各サブエージェントには以下の':76 '各ファイルを':262 '各結果の前にファイル名を記載する':267 '合計金額':217 '同じ画像を2つの独立したコンテキストで並列に読み取り':69 '和暦は西暦に変換する':142 '品目は読み取れる範囲で抽出する':225 '品目名':180 '基本ルール':77,113,122 '外税の区別を確認する':221 '寄附金受領証明書':233 '寄附金額':201,243 '寄附金額は':241 '差異のあるフィールドを明示する':96 '市':236 '市区町村名':197 '平成31年':147 '店舗名':170 '店舗名はレシート上部のロゴや名称から抽出する':229 '店舗名等':40 '形式で返す':141 '必ずユーザーに目視確認を依頼してください':121 '必ず目視確認を依頼する':119 '手動入力':101 '抽出のポイント':214 '抽出テキストに必要な情報':37 '抽出結果をユーザーに提示し':118 '推奨':65 '数量':185 '文字列':151 '日付':39 '日付は':136 '日付はレシート上の取引日を使用する':230 '日付は寄附を受領した日':245 '村':238 '構造化データとして返すスキル':16 '欄から抽出する':244 '正しい方を選択してもらう':95 '町':237 '画像':23 '画像を読み取り':160,189 '画像ファイルは':123 '画像ファイルを直接':108 '画像ファイルパスを指定する':81 '画像読み取り':12 '画像読み取り方法':64 '発行日ではなく':231 '直接ユーザーが呼び出すことも可能':8 '税抜':223 '税込':218,222 '第':249 '等':47 '等の正式名称を抽出する':239 '等の記載から抽出する':251 '精度を高めるため':68 '結果を照合する':70 '結果照合':83 '自治体名':196 '自治体名は':235 '複数のファイルパスが指示された場合':253 '複数ファイルの処理':252 '複数ファイルを渡された場合は全て順に処理してまとめて返す':156 '記載がなければ':211 '読み取れないフィールドは':149 '都道府県名':199 '都道府県名は自治体名の前に記載されていることが多い':240 '金額':38,154,173,182,242 '金額は必ず':129 '金額等':85 '領収書':5,10,14,216 '領収書の場合':159","prices":[{"id":"2b827c0f-87f8-47ae-9809-3370a333349b","listingId":"a7ca373b-7c8c-4ef7-b2a0-bc95be513746","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.992Z"}],"sources":[{"listingId":"a7ca373b-7c8c-4ef7-b2a0-bc95be513746","source":"github","sourceId":"kazukinagata/shinkoku/reading-receipt","sourceUrl":"https://github.com/kazukinagata/shinkoku/tree/main/skills/reading-receipt","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:49.992Z","lastSeenAt":"2026-05-02T18:53:49.901Z"}],"details":{"listingId":"a7ca373b-7c8c-4ef7-b2a0-bc95be513746","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"kazukinagata","slug":"reading-receipt","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":"d48312f0f3bff79ddb7ee80594db0b0de158e958","skill_md_path":"skills/reading-receipt/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/kazukinagata/shinkoku/tree/main/skills/reading-receipt"},"layout":"multi","source":"github","category":"shinkoku","frontmatter":{"name":"reading-receipt","description":"レシート・領収書・ふるさと納税受領証明書の画像を読み取り構造化データを返す。 他のスキルから呼び出されるほか、直接ユーザーが呼び出すことも可能。"},"skills_sh_url":"https://skills.sh/kazukinagata/shinkoku/reading-receipt"},"updatedAt":"2026-05-02T18:53:49.901Z"}}