invoice-processor

star 2

請求書PDFを仕訳データに変換します

AI-LandBase By AI-LandBase schedule Updated 3/7/2026

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: truedebit_invoice にT番号を記録
  • 検出できなかった場合: has_invoice_number: falsedebit_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
    }
  }
}

処理上の注意事項

  1. 金額の扱い: PDF に記載された税込合計金額を使用する。借方金額と貸方金額は必ず一致させる
  2. 日付の扱い: 請求日を YYYY-MM-DD 形式に変換して date に設定する
  3. 複数明細行の合算: 請求書に複数の明細行がある場合、合計金額で1件の仕訳に合算する。個別明細は descriptionmemo に含める
  4. 取引先名: PDF に記載された正式名称をそのまま使用する(「株式会社」「合同会社」等を含む)
  5. インボイス番号の検証: T+13桁のパターンに一致するか確認する。類似するが形式が異なる番号は memo に「インボイス番号形式不一致:要確認」と記載する
  6. 貸方取引先: 請求元名を credit_partner にも記録する(債務の相手先を明確にするため)
  7. 支払期限の記録: 支払期限は memo に記録する
  8. 源泉徴収: 士業・個人事業主への支払いで源泉徴収がある場合、源泉徴収額は別仕訳(借方: 買掛金/未払金、貸方: 預り金)として処理する。memo に「源泉徴収あり」と記載する
  9. 非定型フォーマットへの対応: 請求書のレイアウトは発行元ごとに異なる。ラベルの位置や表現が異なっても、文脈から適切に情報を読み取る

CSV 出力(オプション)

ユーザーが CSV 形式を希望した場合、以下のヘッダーで出力する:

取引No,取引日,借方勘定科目,借方補助科目,借方部門,借方取引先,借方税区分,借方インボイス,借方金額(円),貸方勘定科目,貸方補助科目,貸方部門,貸方取引先,貸方税区分,貸方インボイス,貸方金額(円),摘要,タグ,メモ

Phase 2 向け参照情報

Phase 2 では、本ファイルのプロンプトセクション(「## プロンプト」以降)を InvoiceProcessorService から参照する想定。プロンプト部分は独立して読み込み可能な構造としている。

Install via CLI
npx skills add https://github.com/AI-LandBase/landbase_ai_suite --skill invoice-processor
Repository Details
star Stars 2
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator