{"id":"989f183b-20f3-48d4-91bc-d316c4539fed","shortId":"KeuJg6","kind":"skill","title":"reading-invoice","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---INVOICE_DATA---\nvendor: 請求元名\ninvoice_number: 請求書番号\ninvoice_registration_number: 適格請求書発行事業者番号（T+13桁）\ndate: YYYY-MM-DD\ntotal_amount: 請求金額合計（int）\ntax_amount: 消費税額（int）\nitems:\n  - description: 品目・サービス名\n    amount: 金額（int）\n    quantity: 数量（int）\n    tax_rate: 税率（10 or 8）\n---END---\n```\n\n## 抽出のポイント\n\n- 請求金額の合計（税込）を最優先で抽出する\n- 消費税額を確認する（10% と 8% 軽減税率の区分があれば区別する）\n- インボイス番号（T+13桁の適格請求書発行事業者登録番号）の有無を確認する\n- 請求書番号がある場合は抽出する\n- 請求元（vendor）の名称を抽出する\n- 日付は請求日を使用する（発行日と請求日が異なる場合は請求日を優先）\n- 明細行は読み取れる範囲で抽出する（不明な場合は items を空にする）\n\n## 複数ファイルの処理\n\n複数のファイルパスが指示された場合:\n\n1. Glob ツールでファイル一覧を取得する（パターンが指示された場合）\n2. 各ファイルを Read ツールで順に読み取る\n3. 全ファイルの結果をまとめて返す（各結果の前にファイル名を記載する）\n\n```\n## file1.jpg\n---INVOICE_DATA---\n...\n---END---\n\n## file2.jpg\n---INVOICE_DATA---\n...\n---END---\n```","tags":["reading","invoice","shinkoku","kazukinagata","agent-skills","bookkeeping","claude-code-plugin","claude-code-skills","japan","python","tax-filing"],"capabilities":["skill","source-kazukinagata","skill-reading-invoice","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-invoice","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,993 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.755Z","embedding":null,"createdAt":"2026-04-18T22:02:48.352Z","updatedAt":"2026-05-02T18:53:49.755Z","lastSeenAt":"2026-05-02T18:53:49.755Z","tsv":"'+13':166,209 '0':147 '1':20,65,101,224 '10':194,203 '2':30,76,105,228 '2019':142 '2024':140 '2025':138 '2つのサブエージェントを並列で起動し':68 '2つの独立した読み取りで結果が一致しました':84 '2つの独立した読み取りを実行する':66 '3':37,81,111,232 '4':86 '8':196,205 'amount':174,178,185 'b':93 'claud':120 'data':155,237,241 'date':168 'dd':134,172 'descript':182 'dir':53 'end':197,238,242 'extract':24 'extract-text':23 'file':27,49 'file-path':26,48 'file1.jpg':235 'file2.jpg':239 'glob':225 'imag':47 'int':124,176,180,187,190 'invoic':3,154,158,161,236,240 'item':181,220 'mm':133,171 'number':159,163 'ocr':18 'output':52 'output-dir':51 'path':28,50 'pdf':11,14,15,22,40,44 'png':55 'quantiti':188 'rate':192 'read':2,103,118,230 'reading-invoic':1 'registr':162 'shinkoku':21,43 'skill' 'skill-reading-invoice' 'source-kazukinagata' 'tax':177,191 'text':25 'to-imag':45 'topic-agent-skills' 'topic-bookkeeping' 'topic-claude-code-plugin' 'topic-claude-code-skills' 'topic-japan' 'topic-python' 'topic-tax-filing' 'total':173 'unknown':144 'vendor':156,214 'vision':121 'yyyi':132,170 'yyyy-mm-dd':131,169 'が含まれていれば':35 'が自動的に画像を認識する':122 'そのまま採用':83 'それぞれ独立に画像を読み取る':69 'で':54 'で返す':126 'と':72,108,204 'とする':149 'と報告する':85 'に変換し':56 'に従ってデータを抽出する':110 'の3択を提示する':96 'の前にテキスト抽出を試みる':19 'の名称を抽出する':215 'の場合':16 'の場合は':42 'の有無を確認する':211 'は除去する':129 'または':146 'をプロンプトとして渡し':74 'を実行する':29 'を採用':92,94 'を最優先で抽出する':201 'を比較する':80 'を空にする':221 'インボイス番号':207 'カンマや':127 'サブエージェントが使える環境では':67 'サブエージェントが利用できない環境では':99 'サブエージェント非対応の場合':98 'サービス名':184 'スキャン':39 'ツールでファイル一覧を取得する':226 'ツールで読み取る':104,119 'ツールで順に読み取る':231 'テキストから構造化データを生成する':36 'テキストが不十分':38 'デュアル検証':60 'デュアル検証が利用できないため':114 'パターンが指示された場合':227 'ファイルが':13 'ファイルの場合':12 'フォールバック':97 'ユーザーに元画像パスと両方の結果を提示し':88 '一致の場合':82 '不一致の場合':87 '不明な場合は':219 '両方の読み取り結果から主要フィールド':78 '並列2コンテキスト':61 '他のスキルから呼び出されるほか':5 '令和6年':139 '令和7年':137 '以下の':106 '以下の形式で返す':153 '以下の手順で読み取る':100 '以下の画像読み取りフローに進む':57 '全ファイルの結果をまとめて返す':233 '円':128 '円単位の整数':125 '出力フォーマット':73,109,151 '各サブエージェントには以下の':70 '各ファイルを':229 '各結果の前にファイル名を記載する':234 '同じ画像を2つの独立したコンテキストで並列に読み取り':63 '和暦は西暦に変換する':136 '品目':183 '基本ルール':71,107,116 '差異のあるフィールドを明示する':90 '平成31年':141 '形式で返す':135 '必ずユーザーに目視確認を依頼してください':115 '必ず目視確認を依頼する':113 '手動入力':95 '抽出のポイント':198 '抽出テキストに必要な情報':31 '抽出結果をユーザーに提示し':112 '推奨':59 '数量':189 '文字列':145 '日付':33 '日付は':130 '日付は請求日を使用する':216 '明細行は読み取れる範囲で抽出する':218 '桁':167 '桁の適格請求書発行事業者登録番号':210 '構造化データとして返すスキル':10 '正しい方を選択してもらう':89 '消費税額':179 '消費税額を確認する':202 '画像':17 '画像を読み取り':152 '画像ファイルは':117 '画像ファイルを直接':102 '画像ファイルパスを指定する':75 '画像読み取り':8 '画像読み取り方法':58 '発行日と請求日が異なる場合は請求日を優先':217 '直接ユーザーが呼び出すことも可能':6 '税率':193 '税込':200 '等':41 '精度を高めるため':62 '結果を照合する':64 '結果照合':77 '複数のファイルパスが指示された場合':223 '複数ファイルの処理':222 '複数ファイルを渡された場合は全て順に処理してまとめて返す':150 '読み取れないフィールドは':143 '請求元':213 '請求元名':157 '請求元等':34 '請求書':7 '請求書の画像を読み取り':9 '請求書の画像を読み取り構造化データを返す':4 '請求書番号':160 '請求書番号がある場合は抽出する':212 '請求金額の合計':199 '請求金額合計':175 '軽減税率の区分があれば区別する':206 '適格請求書発行事業者番号':164 '金額':32,148,186 '金額は必ず':123 '金額等':79","prices":[{"id":"04b16bc6-05d9-4b79-a1a2-7482c1a416d5","listingId":"989f183b-20f3-48d4-91bc-d316c4539fed","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:48.352Z"}],"sources":[{"listingId":"989f183b-20f3-48d4-91bc-d316c4539fed","source":"github","sourceId":"kazukinagata/shinkoku/reading-invoice","sourceUrl":"https://github.com/kazukinagata/shinkoku/tree/main/skills/reading-invoice","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:48.352Z","lastSeenAt":"2026-05-02T18:53:49.755Z"}],"details":{"listingId":"989f183b-20f3-48d4-91bc-d316c4539fed","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"kazukinagata","slug":"reading-invoice","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":"9907a08ad8027dd8976073bc0532398c6492b75f","skill_md_path":"skills/reading-invoice/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/kazukinagata/shinkoku/tree/main/skills/reading-invoice"},"layout":"multi","source":"github","category":"shinkoku","frontmatter":{"name":"reading-invoice","description":"請求書の画像を読み取り構造化データを返す。 他のスキルから呼び出されるほか、直接ユーザーが呼び出すことも可能。"},"skills_sh_url":"https://skills.sh/kazukinagata/shinkoku/reading-invoice"},"updatedAt":"2026-05-02T18:53:49.755Z"}}