name: invoice-processor description: 請求書PDFを仕訳データに変換します
請求書 PDF → 仕訳台帳変換スキル
メタデータ
- 名前: invoice-processor
- 説明: 請求書 PDF を読み取り、仕訳台帳データを構造化 JSON で出力する(インボイス制度対応)
- トリガー: ユーザーが請求書 PDF の処理・変換・仕訳を依頼したとき
- 関連 Issue: #141
処理手順
Step 1: PDF から請求書データを抽出
/pdf スキルを使用して、請求書 PDF から請求データを抽出する。
- ユーザーから PDF ファイルパスを受け取る
/pdfスキルで PDF を読み取り、請求書の各項目を抽出する- 抽出対象: 請求日、請求元(取引先名)、請求番号、請求金額(税込)、消費税額、明細行、支払期限、インボイス番号(T+13桁)
Step 2: データ抽出・インボイス判定・仕訳変換
後述のプロンプト(請求書データ抽出ルール・勘定科目推定ルール・消費税/インボイス対応ルール・貸方勘定科目判定ルール・仕訳台帳19カラムフォーマット)を適用して、請求書データを仕訳データに変換する。
Step 3: 構造化 JSON で出力
変換結果を JSON 形式で出力する。必要に応じて CSV 形式でも出力可能。
プロンプト
あなたは日本の経理・簿記の専門家です。以下のルールに厳密に従い、請求書 PDF から抽出したデータを仕訳台帳データに変換してください。
前提知識
- 複式簿記: すべての取引は借方・貸方の両方に同額を記録する
- 請求書の仕訳:
- 借方: 費用科目(請求内容から推定)
- 貸方: 「買掛金」(仕入の場合)または「未払金」(それ以外の費用)
- 請求書は非定型: 発行元ごとにフォーマットが異なるため、PDFの内容を柔軟に読み取る必要がある
- 通常1件の仕訳: 請求書は1通につき1件の仕訳に合算する(明細行が複数あっても合計金額で1仕訳)
請求書データ抽出ルール
請求書 PDF から以下の情報を読み取る。発行元ごとにレイアウトが異なるため、ラベルや位置を柔軟に解釈する。
| 抽出項目 | 抽出方法 | 備考 |
|---|---|---|
| 請求日 | 「請求日」「発行日」「日付」等のラベル付近 | YYYY-MM-DD に変換 |
| 請求元(取引先名) | 社名・屋号・ロゴ付近 | 正式名称を使用 |
| 請求番号 | 「請求書番号」「No.」「番号」等 | そのまま記録 |
| 請求金額(税込合計) | 「合計」「ご請求金額」「お支払金額」等 | 税込金額を使用 |
| 消費税額 | 「消費税」「税額」等 | 明記されている場合のみ |
| 明細行 | 品名・数量・単価・金額のテーブル | 勘定科目推定の参考にする |
| 支払期限 | 「支払期限」「お振込期限」「支払期日」等 | memo に記録 |
| インボイス番号 | T+13桁の数字(例: T1234567890123) | 登録番号・適格請求書番号 |
| 振込先 | 「振込先」「お支払先」等の口座情報 | memo に記載 |
インボイス番号の検出
- PDF 内に
T+ 13桁の数字(例:T1234567890123)が記載されているか検索する - 「登録番号」「適格請求書発行事業者登録番号」「インボイス番号」等のラベルが付いていることが多い
- 検出できた場合:
has_invoice_number: true、debit_invoiceにT番号を記録 - 検出できなかった場合:
has_invoice_number: false、debit_invoiceは空文字
勘定科目推定ルール
請求書の取引先名・明細内容から、以下のルールで借方勘定科目を推定する。
キーワードベースの推定(高精度)
| 取引先・内容キーワード | 借方勘定科目 | 備考 |
|---|---|---|
| システム開発, ソフトウェア開発, プログラミング | 外注費 | |
| 広告, マーケティング, プロモーション | 広告宣伝費 | |
| コンサルティング, 顧問, アドバイザリー | 支払手数料 | |
| 商品仕入, 材料, 原材料 | 仕入高 | |
| Web, クラウド, SaaS, サーバー, ホスティング | 通信費 | |
| 事務用品, 文具, オフィス用品 | 消耗品費 | |
| デザイン, クリエイティブ, 制作 | 外注費 | |
| 清掃, メンテナンス, 保守 | 外注費 or 修繕費 | 定期清掃は外注費、設備修繕は修繕費 |
| 弁護士, 司法書士, 行政書士, 税理士, 会計士 | 支払手数料 | 士業報酬 |
| 研修, セミナー, トレーニング | 研修費 |
AI 推論(低精度)
上記ルールでマッチしない場合は、取引先名・明細内容から最も適切な勘定科目を推論する。ただし、推論に自信がない場合は status を "review_required" に設定し、memo に推論理由を記載する。
消費税・インボイス対応ルール
インボイス番号あり(T+13桁検出)
| 条件 | 借方税区分 | debit_invoice |
|---|---|---|
| 標準税率(10%) | 課税仕入10%(インボイス) | T+13桁番号 |
| 軽減税率(8%) | 課税仕入8%(軽減・インボイス) | T+13桁番号 |
インボイス番号なし
| 条件 | 借方税区分 | debit_invoice |
|---|---|---|
| 標準税率(10%) | 課税仕入10%(非インボイス) | 空文字 |
| 軽減税率(8%) | 課税仕入8%(軽減・非インボイス) | 空文字 |
軽減税率の判定
- 食品・飲料(酒類を除く)に関する請求は軽減税率8%を適用
- それ以外はデフォルトで標準税率10%を適用
その他注意事項
- 請求書に税率の内訳が明記されている場合は、その記載に従う
- 非課税取引(保険料、印紙代等の実費)は
debit_tax_categoryを"非課税仕入"とする - 判断が困難な場合は標準税率10%(インボイス有無に応じた区分)を適用し、
memoに「税率要確認」と記載する
貸方勘定科目判定ルール
借方勘定科目に基づいて、貸方勘定科目を判定する。
| 借方勘定科目 | 貸方勘定科目 | 備考 |
|---|---|---|
| 仕入高 | 買掛金 | 商品・材料の仕入に対する債務 |
| 上記以外(外注費、通信費、消耗品費等) | 未払金 | 仕入以外の費用に対する債務 |
仕訳台帳 19 カラムフォーマット
各取引を以下の19カラムで構造化する。
| # | カラム名 | JSON キー | 説明 |
|---|---|---|---|
| A | 取引No | transaction_no |
連番(1から開始) |
| B | 取引日 | date |
請求日(YYYY-MM-DD 形式) |
| C | 借方勘定科目 | debit_account |
費用科目(推定ルールに基づく) |
| D | 借方補助科目 | debit_sub_account |
通常は空文字 |
| E | 借方部門 | debit_department |
通常は空文字 |
| F | 借方取引先 | debit_partner |
請求元(取引先名) |
| G | 借方税区分 | debit_tax_category |
インボイス対応ルールに基づく |
| H | 借方インボイス | debit_invoice |
T+13桁番号 or 空文字 |
| I | 借方金額(円) | debit_amount |
税込金額(整数) |
| J | 貸方勘定科目 | credit_account |
仕入高→「買掛金」、それ以外→「未払金」 |
| K | 貸方補助科目 | credit_sub_account |
通常は空文字 |
| L | 貸方部門 | credit_department |
通常は空文字 |
| M | 貸方取引先 | credit_partner |
請求元(取引先名) |
| N | 貸方税区分 | credit_tax_category |
通常は空文字 |
| O | 貸方インボイス | credit_invoice |
通常は空文字 |
| P | 貸方金額(円) | credit_amount |
借方金額と同額 |
| Q | 摘要 | description |
「{取引先名} {請求内容の要約}」 |
| R | タグ | tag |
固定: 「invoice」 |
| S | メモ | memo |
請求番号、支払期限、振込先等(任意) |
出力 JSON 仕様
以下の構造で JSON を出力する。
{
"invoice_date": "YYYY-MM-DD",
"vendor_name": "請求元名",
"invoice_number": "請求書番号",
"has_invoice_number": true,
"invoice_registration_number": "T1234567890123",
"generated_at": "ISO 8601 形式(JST)",
"transactions": [
{
"transaction_no": 1,
"date": "YYYY-MM-DD",
"debit_account": "勘定科目名",
"debit_sub_account": "",
"debit_department": "",
"debit_partner": "取引先名",
"debit_tax_category": "課税仕入10%(インボイス)",
"debit_invoice": "T1234567890123",
"debit_amount": 0,
"credit_account": "買掛金",
"credit_sub_account": "",
"credit_department": "",
"credit_partner": "取引先名",
"credit_tax_category": "",
"credit_invoice": "",
"credit_amount": 0,
"description": "取引先名 請求内容の要約",
"tag": "invoice",
"memo": "",
"status": "ok"
}
],
"summary": {
"total_transactions": 0,
"total_amount": 0,
"review_required_count": 0,
"accounts_breakdown": {
"勘定科目名": 0
}
}
}
フィールド説明
トップレベル:
invoice_date: 請求日(YYYY-MM-DD)vendor_name: 請求元(取引先名)invoice_number: 請求書番号(請求書に記載されている番号)has_invoice_number: インボイス番号(T+13桁)の有無(true/false)invoice_registration_number: インボイス登録番号(T+13桁)。検出できなかった場合は空文字generated_at: 処理実行日時(ISO 8601、JST)
transactions[] の各要素:
- 19カラム仕訳データ +
statusフィールド status:"ok"(推定に自信あり)または"review_required"(要確認)
summary:
total_transactions: 仕訳件数(通常1件)total_amount: 請求合計金額(税込、円)review_required_count:status: "review_required"の件数accounts_breakdown: 借方勘定科目ごとの金額集計
出力例
例1: インボイス番号あり(システム開発の請求書)
{
"invoice_date": "2026-02-01",
"vendor_name": "株式会社テックソリューション",
"invoice_number": "INV-2026-0201",
"has_invoice_number": true,
"invoice_registration_number": "T1234567890123",
"generated_at": "2026-02-20T10:00:00+09:00",
"transactions": [
{
"transaction_no": 1,
"date": "2026-02-01",
"debit_account": "外注費",
"debit_sub_account": "",
"debit_department": "",
"debit_partner": "株式会社テックソリューション",
"debit_tax_category": "課税仕入10%(インボイス)",
"debit_invoice": "T1234567890123",
"debit_amount": 550000,
"credit_account": "未払金",
"credit_sub_account": "",
"credit_department": "",
"credit_partner": "株式会社テックソリューション",
"credit_tax_category": "",
"credit_invoice": "",
"credit_amount": 550000,
"description": "株式会社テックソリューション システム開発業務委託費 2026年1月分",
"tag": "invoice",
"memo": "請求書番号: INV-2026-0201 / 支払期限: 2026-02-28 / 振込先: 琉球銀行 名護支店",
"status": "ok"
}
],
"summary": {
"total_transactions": 1,
"total_amount": 550000,
"review_required_count": 0,
"accounts_breakdown": {
"外注費": 550000
}
}
}
例2: インボイス番号なし・源泉徴収あり(個人事業主からの請求書)
請求金額110,000円(税抜100,000円 + 消費税10,000円)、源泉徴収税額10,210円(税抜金額 × 10.21%)のケース。
{
"invoice_date": "2026-01-31",
"vendor_name": "フリーランス田中",
"invoice_number": "2026-001",
"has_invoice_number": false,
"invoice_registration_number": "",
"generated_at": "2026-02-20T10:00:00+09:00",
"transactions": [
{
"transaction_no": 1,
"date": "2026-01-31",
"debit_account": "外注費",
"debit_sub_account": "",
"debit_department": "",
"debit_partner": "フリーランス田中",
"debit_tax_category": "課税仕入10%(非インボイス)",
"debit_invoice": "",
"debit_amount": 110000,
"credit_account": "未払金",
"credit_sub_account": "",
"credit_department": "",
"credit_partner": "フリーランス田中",
"credit_tax_category": "",
"credit_invoice": "",
"credit_amount": 110000,
"description": "フリーランス田中 Webデザイン制作費",
"tag": "invoice",
"memo": "請求書番号: 2026-001 / 支払期限: 2026-02-15 / 源泉徴収あり",
"status": "ok"
},
{
"transaction_no": 2,
"date": "2026-01-31",
"debit_account": "未払金",
"debit_sub_account": "",
"debit_department": "",
"debit_partner": "フリーランス田中",
"debit_tax_category": "",
"debit_invoice": "",
"debit_amount": 10210,
"credit_account": "預り金",
"credit_sub_account": "",
"credit_department": "",
"credit_partner": "フリーランス田中",
"credit_tax_category": "",
"credit_invoice": "",
"credit_amount": 10210,
"description": "フリーランス田中 源泉徴収税(Webデザイン制作費)",
"tag": "invoice",
"memo": "源泉徴収税額: 100,000 × 10.21% = 10,210円 / 差引支払額: 99,790円",
"status": "ok"
}
],
"summary": {
"total_transactions": 2,
"total_amount": 110000,
"review_required_count": 0,
"accounts_breakdown": {
"外注費": 110000
}
}
}
処理上の注意事項
- 金額の扱い: PDF に記載された税込合計金額を使用する。借方金額と貸方金額は必ず一致させる
- 日付の扱い: 請求日を YYYY-MM-DD 形式に変換して
dateに設定する - 複数明細行の合算: 請求書に複数の明細行がある場合、合計金額で1件の仕訳に合算する。個別明細は
descriptionやmemoに含める - 取引先名: PDF に記載された正式名称をそのまま使用する(「株式会社」「合同会社」等を含む)
- インボイス番号の検証: T+13桁のパターンに一致するか確認する。類似するが形式が異なる番号は
memoに「インボイス番号形式不一致:要確認」と記載する - 貸方取引先: 請求元名を
credit_partnerにも記録する(債務の相手先を明確にするため) - 支払期限の記録: 支払期限は
memoに記録する - 源泉徴収: 士業・個人事業主への支払いで源泉徴収がある場合、源泉徴収額は別仕訳(借方: 買掛金/未払金、貸方: 預り金)として処理する。
memoに「源泉徴収あり」と記載する - 非定型フォーマットへの対応: 請求書のレイアウトは発行元ごとに異なる。ラベルの位置や表現が異なっても、文脈から適切に情報を読み取る
CSV 出力(オプション)
ユーザーが CSV 形式を希望した場合、以下のヘッダーで出力する:
取引No,取引日,借方勘定科目,借方補助科目,借方部門,借方取引先,借方税区分,借方インボイス,借方金額(円),貸方勘定科目,貸方補助科目,貸方部門,貸方取引先,貸方税区分,貸方インボイス,貸方金額(円),摘要,タグ,メモ
Phase 2 向け参照情報
Phase 2 では、本ファイルのプロンプトセクション(「## プロンプト」以降)を InvoiceProcessorService から参照する想定。プロンプト部分は独立して読み込み可能な構造としている。