Media > AI活用ユースケース > 知財 > 特許事務所から届く請求書を、料金の取り決めと案件台帳に照らして支払う前に検算する

特許事務所から届く請求書を、料金の取り決めと案件台帳に照らして支払う前に検算する

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

特許事務所から届く請求書を明細の1行ずつに分け、事務所と取り決めた料金表と社内の案件台帳に照らして検算します。行ごとに「一致」「差異あり」「根拠なし」を付け、人は差異と根拠なしの行だけを確かめてから支払に回します。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Make/Power Automate/Zapier
対象業界
IT・SaaS/製造
対象部門
知財/経理
対象業務
内容確認・チェック/比較検討
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
判定
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
20h/月
AI導入後
6h/月
想定削減
70%
年間削減
168h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 事務所からメールでPDFの請求書が届き、知財部の事務担当が共有フォルダに保存する
  2. 明細を1行ずつ読み、事務所の整理番号から案件台帳で自社の管理番号を引く
  3. 「意見書作成」「補正書作成」などの記載から作業区分を読み取り、その事務所の料金表の手数料と比べる
  4. 案件台帳で、その案件にその作業が実際に発生したか(通知を受けて応答を指示したか)を確かめる
  5. 外国代理人の費用は、外貨の金額と請求書の換算レートを電卓で掛け、円の金額と合うかを見る
  6. 差異があれば事務所に問い合わせ、なければ経理部へ回す
  7. 経理部の支払担当が金額と振込先を確かめ、支払の手続きをする
導入後(After)
  1. 人届いた請求書のPDFを受領フォルダに保存する
  2. 自動保存をきっかけにワークフローが動き、OCRが請求書の項目と明細を返す
  3. 自動明細を1行ずつに分け、AIが案件番号・作業区分・手数料・実費・外国代理人費用に振り分ける
  4. 自動整理番号を案件台帳で自社の管理番号に読み替え、その作業が台帳にあるかを確かめる
  5. 自動請求日に有効な版の料金表を引き、手数料の差額と換算の差額を計算する
  6. 自動過去の判定済み明細と照らし、同じ案件・同じ作業の二重請求を探す
  7. 自動行ごとに `match` / `diff` / `no_basis` を付け、請求書単位の結果を一覧に書き出す
  8. 人知財部の事務担当が `diff` と `no_basis` の行だけを開き、事務所に問い合わせるかを決める
  9. 人すべての行が片付いた請求書を経理部へ回す
各工程の詳しい説明を読む
  1. 事務所からメールでPDFの請求書が届き、知財部の事務担当が共有フォルダに保存する
  2. 明細を1行ずつ読み、事務所の整理番号から案件台帳で自社の管理番号を引く
  3. 「意見書作成」「補正書作成」などの記載から作業区分を読み取り、その事務所の料金表の手数料と比べる
  4. 案件台帳で、その案件にその作業が実際に発生したか(通知を受けて応答を指示したか)を確かめる
  5. 外国代理人の費用は、外貨の金額と請求書の換算レートを電卓で掛け、円の金額と合うかを見る
  6. 差異があれば事務所に問い合わせ、なければ経理部へ回す
  7. 経理部の支払担当が金額と振込先を確かめ、支払の手続きをする

(a)料金表の版を取り違える。 改定の前後に届いた請求書は、どちらの表で見るかで結論が逆になります。古い表で「一致」とした請求が、実は改定前の安い料金のままだった、ということも起きます。

(b)台帳の確認が省かれる。 3番までで金額が合うと、4番を飛ばしがちです。同じ年金納付が2か月続けて請求されても、金額は料金表どおりなので目に留まりません。

(c)換算の確認が1件ごとに重い。 外貨の金額、レート、円の金額を1行ずつ電卓で追うのは時間がかかり、換算日が取り決めと違っていても気づけません。

  1. 【人】 届いた請求書のPDFを受領フォルダに保存する
  2. 【自動】 保存をきっかけにワークフローが動き、OCRが請求書の項目と明細を返す
  3. 【自動】 明細を1行ずつに分け、AIが案件番号・作業区分・手数料・実費・外国代理人費用に振り分ける
  4. 【自動】 整理番号を案件台帳で自社の管理番号に読み替え、その作業が台帳にあるかを確かめる
  5. 【自動】 請求日に有効な版の料金表を引き、手数料の差額と換算の差額を計算する
  6. 【自動】 過去の判定済み明細と照らし、同じ案件・同じ作業の二重請求を探す
  7. 【自動】 行ごとに match / diff / no_basis を付け、請求書単位の結果を一覧に書き出す
  8. 【人】 知財部の事務担当が diff と no_basis の行だけを開き、事務所に問い合わせるかを決める
  9. 【人】 すべての行が片付いた請求書を経理部へ回す

AIがするのは3番目の振り分けだけです。 差額の計算も、一致かどうかの判定も、ワークフローの計算で行います。金額の比較をAIに任せると、桁や税の扱いを「解釈」して一致にしてしまうからです。

02今回想定するシステム構成

構成図
特許事務所の請求書(PDF)
   ▼【トリガー】受領フォルダへの保存
Make
   ▼
Azure AI Document Intelligence(事前構築済み請求書モデル)
   │   請求書の項目・明細(Items)・信頼度を返す
   ▼
Make ── Iterator で明細を1行ずつに分ける
   ▼
Claude API ── 1行ずつ振り分ける
   │   事務所の整理番号/作業区分/手数料/実費/外国代理人費用と為替
   ▼
Make ── 案件台帳を引く(管理番号への読み替え、作業の記録)
     ── 料金表を引く(請求日に有効な版)
     ── 差額を計算する(手数料、換算)
     ── データストアで二重請求を探す
   ▼
Make ── Aggregator で請求書単位にまとめる
   ▼
判定一覧(match / diff / no_basis)
   ▼
【人が diff と no_basis の行だけ確認】 ──▶ 経理部へ
役割想定する製品代替候補
ワークフローMakeZapier、Power Automate
OCRAzure AI Document IntelligenceGoogle Document AI、AWS Textract
生成AIClaude APIOpenAI API、Gemini API
差異計算MakePower Automate、Zapier

案件台帳・料金表・会計システムは新しく足すものではありません。 この構成は台帳と料金表を読むだけで、書き込みません。最初の準備は、料金表に「適用開始日」の列と作業区分のコードを足すことです。

読み取りの土台は、Azure AI Document Intelligence の事前構築済み請求書モデルです。 OCRで売上請求書などから主要なフィールドと品目を抽出し、構造化されたJSONを返します。現在27言語の請求書をサポートしており、入力はPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)です。

明細は Items という配列で返ります。 公開されているスキーマでは、1行ごとに Description(明細の説明)、Amount(金額)、Quantity、UnitPrice、Date、ProductCode、Tax、TaxRate などを持ちます。請求書全体では InvoiceId、VendorName、InvoiceDate、SubTotal、TotalTax、InvoiceTotal などが取れます。事務所の整理番号や作業区分という欄はありません。 それらは Description の文字列の中にあり、そこを読み分けるのがAIの役目です。

Make では、配列を1行ずつに分けるのが Iterator です。 配列を一連のバンドルに変換し、各アイテムを個別のバンドルとして出力します。逆にまとめ直すのが Aggregator で、Source module から始まった複数のバンドルを1つにまとめます。

03どうやって実装するのか

Step1

処理の起点を決める

受領フォルダにPDFが保存されたことを起点にします。 事務所の請求は月末に集中しがちですが、1日1回にまとめると問い合わせの返事が支払日に間に合いません。届いた順に1枚ずつ処理します。

処理が終わったファイルは処理済みフォルダへ移します。移すのは判定一覧への書き出しが成功したときだけです。 受領フォルダに残っている数が、そのまま未処理の数になります。

Step2

入力データを集める

データ中身取得元
請求書PDF事務所名、請求日、明細、合計受領フォルダ
読み取り結果請求書の項目、Items の各行、信頼度Azure AI Document Intelligence
案件台帳事務所の整理番号、自社の管理番号、国、作業の記録(指示日・完了日)表計算の台帳
料金表事務所、作業区分コード、手数料、適用開始日、換算の取り決め事務所ごとの表
判定済み明細過去に判定した行(案件、作業区分、請求日、金額)Make のデータストア

質を決めるのは料金表の2つの列です。 適用開始日が無ければ改定の前後で版を選べず、作業区分コードが無ければAIが読み分けた区分を表に当てられません。料金表の作業区分を、AIに選ばせる選択肢そのものにします。

Step3

データの取得方法を決める

取るものどこから何に使うか
請求書全体の項目請求書モデルの documentResults事務所名、請求日、合計の照合
明細の各行Items の配列1行ずつの振り分けの入力
行の信頼度抽出結果の信頼度読み取りが怪しい行を人へ回す
管理番号と作業の記録案件台帳読み替えと発生の確認
有効な版の手数料料金表差額の計算

明細は documentResults の中にあります。 請求書モデルのJSONは readResults(認識した全テキスト)、pageResults(テーブルとセル、信頼度)、documentResults(請求書固有の値と品目)の3つに分かれ、明細を探すのは3つ目です。

明細の行が1つにつながって返ることがあります。 事務所の書式によっては、1つの案件の手数料と実費が1行の Description にまとめて書かれています。その場合は、AIに1行を複数の行へ分けて返させます(次の「AIに何をさせるのか」の表の1行目)。

料金表は、請求日以前で最も新しい適用開始日の版を引きます。事務所と作業区分コードで絞り、適用開始日で並べて1件目を取ります。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … 事前構築済みモデルの入力はPDFと画像です。Word や Excel で届いたものはPDFにします
  2. パスワードの解除 … パスワードでロックされたPDFは、提出前に解除する必要があります
  3. ページ数とサイズ … PDFとTIFFは最大2,000ページ、有料(S0)レベルで500MBまでです
  4. 合計の照合 … Items の Amount の合計と SubTotal を比べます。合わなければ明細の取りこぼしを疑い、人へ回します
  5. 整理番号の正規化 … 全角・半角、ハイフンの有無をそろえてから台帳を引きます

4番目を省かないでください。 明細が1行読み落とされていても、残りの行は全部「一致」になります。行ごとの判定がすべて一致でも、合計が合わない請求書は通しません。

Step5

AIに処理させる

させるのは、明細の1行を検算できる形に分けることだけです。

振り分ける項目中身判断できないとき
行の分割1行に手数料と実費が混ざっていれば、別の行に分ける分け方が決まらなければ needs_human
事務所の整理番号Description から写す見つからなければ空
自社の管理番号請求書に書かれていれば写す書かれていなければ空
作業区分コード料金表の区分から1つ選ぶ当てはまらなければ unknown
費用の種別事務所手数料/庁費用などの実費/外国代理人費用決まらなければ unknown
外国代理人費用外貨の金額、通貨、請求書に書かれたレートと換算日書かれていない項目は空
させないこと理由
手数料が正しいかの判定料金表との比較はワークフローの計算で行う
庁費用の金額の正誤料金表の外にある。 この構成では確かめない
為替レートの推測書かれていないレートを補うと、差異が消える
管理番号の推測似た番号に寄せると、台帳に無い案件が見えなくなる

2行目が、この題材でいちばん起きやすい誤りです。 「出願料」と書かれた行を見ると、AIは知っている金額と比べて意見を書こうとします。金額の正誤を言わせないことを、指示にも出力の形にも組み込みます。

Step6

指示内容を固定する

あなたは知財部で、特許事務所の請求明細を検算できる形に整える担当です。
渡された明細の1行を読み、下の項目に振り分けてください。
金額が正しいかどうかは判断しないでください。

【作業区分コード(この中から1つだけ選ぶ)】
{fee_codes}
例:APP_JP(国内出願) / OA_RESP(中間応答) / ANNUITY(年金納付手続)
    / FOREIGN_FILING(外国出願手続) / OTHER(上記以外)
当てはまらなければ unknown を選んでください。似た区分に寄せないでください。

【費用の種別】
- office_fee ....... 事務所の手数料
- official_fee ..... 庁に納める費用など、事務所が立て替えた実費
- foreign_agent .... 外国代理人の費用
- unknown .......... 決められない

【厳守事項】
- 1行に手数料と実費が混ざっていれば、lines を複数に分けてください。
  分け方が決まらなければ needs_human を true にしてください。
- 庁に納める費用の金額が正しいかは、書かないでください。
  知っている金額と比べないでください。
- 事務所の整理番号と自社の管理番号は、書かれた文字列をそのまま写してください。
  似た番号に直さないでください。書かれていなければ空にしてください。
- 外国代理人費用の為替レートと換算日は、請求書に書かれているものだけを写してください。
  書かれていなければ空にしてください。推測しないでください。
- 金額の計算をしないでください。合計から逆算して埋めないでください。
- evidence には、振り分けの根拠にした文字列をそのまま写してください。

【請求書の情報】事務所:{vendor_name} 請求日:{invoice_date}
【明細の1行】{item_json}

作業区分を選択肢で渡すのが要です。 自由に書かせると「意見書・補正書作成」「応答書類作成」のように事務所の言葉のまま返り、料金表に当たりません。料金表のコードそのものを選ばせ、当てはまらないときの逃げ道として unknown を用意します。

Step7

出力形式を固定する

Claude API の構造化出力(structured outputs)で、次の形のJSONを返させます。 output_config.format にJSONスキーマを渡すと、応答がそのスキーマに沿うよう制約されます。

{
  "lines": [
    {
      "office_ref": "",
      "company_ref": "",
      "fee_code": "APP_JP | OA_RESP | ANNUITY | FOREIGN_FILING | OTHER | unknown",
      "cost_type": "office_fee | official_fee | foreign_agent | unknown",
      "amount_jpy": 0,
      "foreign": { "currency": "", "amount": 0, "rate": 0, "rate_date": "" },
      "evidence": ""
    }
  ],
  "needs_human": false
}

構造化出力を使う理由は、後段が計算だからです。 fee_code が1文字でも違えば料金表を引けず、amount_jpy が文字列なら差額を計算できません。fee_code と cost_type は enum で縛ります。 enum は文字列などの単純な値に使え、応答はスキーマで指定した大文字・小文字と一致する必要があります。

スキーマを書くときの注意は3つです。

  • すべてのオブジェクトに additionalProperties: false が必要です
  • minimum や maximum などの数値の制約は使えません。 金額が0以上かは Make の側で確かめます
  • max_tokens に達すると、出力が途中で切れます。 スキーマに沿うことが保証されるのは完了した応答だけです。明細の多い行を分割させるときは余裕を持たせます

1行がどう分かれるかの例です。 明細に「P24-0312 米国出願 現地代理人費用 USD 1,200(レート 150.00、2026年8月29日) 180,000円/当所手数料 30,000円」と1行で書かれていたとします(金額は説明のための架空の値)。AIはこれを2行に分け、1行目を foreign_agent(外貨1,200、通貨USD、レート150.00、換算日2026-08-29、円180,000)、2行目を office_fee(FOREIGN_FILING、円30,000)として返します。

その先の計算は Make が行います。 1行目は、外貨の金額とレートの積が円の金額と合うか、換算日が取り決めの日(たとえば請求日)と同じかを見ます。2行目は、請求日に有効な版の料金表で FOREIGN_FILING の手数料を引き、差額を出します。AIは読み分けただけで、合っているかどうかには一言も触れていません。

判定は、このJSONを受け取った Make が付けます。

判定条件
match台帳に作業の記録があり、有効な版の料金表の手数料と差額0
diff台帳に記録はあるが、手数料または換算に差額がある
no_basis台帳に案件か作業の記録が無い、料金表に区分が無い、または二重請求の疑い
out_of_scopeofficial_fee の行。金額は判定しない
Step8

システムへ連携する

つなぎ先方式内容
受領フォルダMake のトリガーPDFの保存を検知する
Azure AI Document IntelligenceAPI呼び出し請求書の項目と Items を返す
Make の IteratorモジュールItems を1行ずつのバンドルに分ける
Claude APIAPI呼び出し1行ずつ振り分け、JSONで返す
案件台帳・料金表表の読み取り管理番号、作業の記録、有効な版の手数料を引く
Make のデータストアSearch records / Add/replace a record判定済み明細を探し、判定後に書き足す
Make の Aggregatorモジュール行の結果を請求書単位にまとめる
判定一覧表への書き出し請求書ごとに行の判定と差額を並べる

Aggregator には1つ落とし穴があります。 Source module から Aggregator までの間のモジュールのデータは、Aggregator の設定で明示的に含めない限り、後段から参照できません。 行ごとの判定と差額を集約する項目に入れておかないと、請求書単位の一覧で消えます。Group by を使うと、指定した値ごとに分けてまとめられます。1ファイルに複数の請求書がある場合は、請求書番号でまとめます。

会計システムへは書き込みません。 支払の手続きは、人が経理部へ回した請求書だけが対象です。

Step9

人が確認する

知財部の事務担当が開くのは diff と no_basis の行だけです。 match の行は件数と合計を一覧で見て終わりにし、out_of_scope の実費は事務所の報告書と金額を目で合わせます。

  1. no_basis を先に見る … 台帳の記録漏れか、請求の誤りかを分けます。台帳の更新忘れであることが多いので、事務所に問い合わせる前に台帳側を確かめます
  2. diff の差額を見る … どの版の料金表を引いたかを確かめ、取り決めの読み違いでなければ事務所に問い合わせます
  3. 問い合わせの結果を記録する … 事務所の説明で解消したか、訂正の請求書が来たかを残します
  4. 全行が片付いたら経理部へ回す

問い合わせのメールは人が書いて送ります。 事務所との関係は長く続くもので、誤った指摘の1通が次の案件の進め方にまで響きます。

Step10

例外に対処する

起きること対応
外国代理人費用の換算日が取り決めと違う換算の差額として diff。どちらの日のレートが正しいかは人が事務所と確かめる
同じ案件・同じ作業が二度請求されているデータストアで照合し no_basis。分納や再手続の可能性もあるので、自動で差し戻さない
台帳に無い案件番号no_basis。台帳の登録漏れを先に疑う
作業区分が unknown料金表に無い作業。人が区分を決め、必要なら料金表に区分を足す
明細の合計が SubTotal と合わない行の読み落としを疑い、請求書ごと人へ
行の信頼度が低いその行を needs_human にして人へ
パスワード付きPDF解除できなければ事務所に再送を依頼
AIの応答が途中で切れたスキーマの保証が無いため、その行を再実行。2回続けば人へ

上の2行が、この題材に固有の例外です。 どちらも「請求が誤っている」とは限りません。差異として拾い上げるところまでを機械が行い、誤りかどうかは人が事務所と決めます。

Step11

記録を残す

  • 元のPDFと、OCRが返したJSONの全文
  • 行ごとのAIの出力(lines と evidence)
  • 判定(match / diff / no_basis / out_of_scope)と差額、そのとき引いた料金表の版(適用開始日)
  • 判定済み明細(データストア)… 案件、作業区分、請求日、金額
  • 人が判定を覆した記録と、事務所への問い合わせの結果

料金表の版を残すのは、改定の前後で判定をやり直せるようにするためです。 事務所から「改定は先月からの適用」と言われたとき、どの請求書をどの版で見たかが分かれば、見直す範囲がすぐ決まります。

04実装レベルの3段階

最小構成:PDFと作業区分の一覧をAIの画面に渡し、出てきた表を料金表と手で突き合わせる / 明細の振り分け
半自動化:上記+受領フォルダを起点に Make がOCRとAIを呼び、台帳と料金表を引いて差額と判定を一覧に書く / 振り分け、突き合わせ、二重請求の検知
本格構成:上記+台帳の作業記録を事務所の報告から自動で更新し、問い合わせ文の下書きと経理部への回付まで出す / 検算の全体と支払への引き継ぎ

推すのは半自動化です。 1枚15分のうち表を行き来する時間がほぼ消え、人の手元に残るのは差異の確認だけになります。本記事の工数試算もこの段階を想定しています。 本格構成は、台帳の更新が別の仕組みで自動化されてからにします。 台帳の作業記録を請求書の側から書き足すと、請求にある作業は必ず台帳にもある状態になり、no_basis が出なくなります。 検算の物差しを、検算される側から作らないでください。 最小構成から半自動化へ進む目安は、作業区分の読み分けが20枚でほぼ揃うことです。 揃わないうちにワークフローを組むと、unknown と no_basis が一覧を埋め、確認の時間がかえって増えます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
2 名
月間件数
80 件
1件あたり現在時間
15 分
1件あたり導入後時間
4.5 分
現在  80件 × 15分 ÷ 60 = 20 時間/月
導入後 80件 × 4.5分 ÷ 60 = 6 時間/月
月間削減時間
14h
削減率
70%
年間削減時間
168h
年間金額換算(時間単価3,500円)
59万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 国内外の出願と権利維持を複数の特許事務所に依頼しており、月に数十枚の請求書が届く製造業・IT企業。事務所ごとに手数料の取り決めがあるのに、請求額が取り決めどおりかを知財部の担当者が記憶と表計算で確かめている場合。案件台帳(整理番号、自社の管理番号、作業の履歴)を表形式で持っている場合。
向いていない
  1. 依頼先が1事務所で、請求が月に数枚の場合。事務所との料金の取り決めが文書になっておらず、照らす先の料金表を作れない場合。庁に納める費用の金額そのものが正しいかを確かめたい場合は、この構成の対象外です。

07最小構成で試す方法

  1. 先月までの請求書から20枚を選ぶ(差異があったと分かっているものを数枚入れる)
  2. 事務所ごとの料金表から、作業区分の一覧をテキストにする
  3. 手元のAIサービスに請求書のPDFと作業区分の一覧を渡し、「明細の1行ずつについて、整理番号、作業区分(一覧から1つ)、費用の種別、金額を表にしてください。庁の費用の金額が正しいかは書かないでください」と指示する
  4. 出てきた表を表計算に貼り、料金表と台帳を検索関数で引いて差額を出す
  5. 当時の確認の結果と突き合わせる
出てきた内容判断
当時見つけた差異が表のうえでも出たワークフローの連携に進む
作業区分の読み分けが揃わない料金表の区分の名前が事務所の言葉とずれている。区分の説明を足す
庁の費用に意見を書いてくる指示の書き方で直る。構成は有効

2行目が出たら、それは料金表の整備の課題です。 AIの精度を上げるより、区分の説明に事務所の言い回しの例を足すほうが効きます。

08実装時につまずきやすいポイント

問題対策
作業区分が事務所の言葉のまま返る料金表のコードを enum にして選ばせる。当てはまらなければ unknown
庁の費用に「金額が違う」と書く金額の正誤を言わせない指示を置き、official_fee は判定から外す
改定前の料金表で判定する適用開始日の列を持たせ、請求日以前で最も新しい版を引く
1行に手数料と実費が混ざるAIに行を分けさせ、分けられなければ人へ
明細の読み落としに気づかないItems の合計と SubTotal を照合する
換算日の違いが見えないレートと換算日を写させ、取り決めの日と比べる
整理番号の表記ゆれで台帳を引けない全角・半角とハイフンをそろえてから引く
請求書単位の一覧で判定が消えるAggregator の集約する項目に、行の判定と差額を含める
二重請求の検知が誤検出だらけになる案件・作業区分・請求日の組で照合し、分納は人が判断する
スキーマの設定で拒否される全オブジェクトに additionalProperties: false。数値の制約は Make 側へ
請求書側から台帳を書き足してしまう台帳は読み取りだけにする。更新は別の経路で

上の2行が、この題材の失敗のほとんどです。 どちらも、AIに「選ぶ」以上のことをさせたときに起きます。区分は選ばせ、金額は比べさせないという線を守れば、残りは表の整備の問題です。

3行目と下から3行目は、運用を始めて数か月たってから効いてきます。 料金表の改定は年に一度あるかないかで、最初の月には起きません。二重請求の誤検出も、分納や再手続が出てくる時期まで見えません。適用開始日の列と照合の組は、最初から作っておきます。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 出願前の発明を含む案件の整理番号と作業の内容、外国出願の国、事務所との料金の取り決め、振込先の口座情報です。

  1. 明細の文字列に発明の中身が載ることがある … 「〇〇装置に関する出願」のように、明細に発明の名称が書かれている事務所があります。出願前の発明の名称は営業秘密です。 AIに渡すのは明細の行だけにし、外部サービスのデータの扱い(学習に使われないか、保存期間)を契約前に確かめます
  2. 料金の取り決めを外に出さない … 料金表そのものはAIに渡しません。渡すのは作業区分コードの一覧だけで、金額の比較はワークフローの中で行います
  3. 口座情報はこの構成で使わない … 検算に振込先は要りません。振込先の確認は経理部の支払の手続きで行います
  4. 問い合わせと支払の判断は人が行う … diff や no_basis は「確かめる必要がある」という印で、請求が誤っているという結論ではありません。 差し戻しや減額の連絡を自動で送らないでください
  5. 庁費用の正誤は別に確かめる … この構成は庁に納める費用の金額を確かめません。必要な場合は、庁の公表する料金を知財部が別に確認します

誤りが起きた場合のリスクは、過払いを見逃すことと、正しい請求を疑って事務所との関係を損ねることの2つです。 前者は台帳の確認の省略で、後者は no_basis をそのまま差し戻すことで起きます。

10まず何から始めるか

1週目:料金表に2つの列を足す

事務所ごとの料金表に、作業区分コードと適用開始日の列を足します。まず請求の多い2所から始めます。作業区分は10前後に絞り、当てはまらないものは OTHER にまとめます。

2週目:20枚で試す

過去の請求書20枚を手元のAIサービスに渡し、明細の振り分けをさせます。作業区分の読み分けが揃うかと、庁の費用に意見を書かないかを最優先で見ます。

3週目:Make で振り分けまでをつなぐ

受領フォルダを見張り、OCRを呼び、Iterator で明細を分けて Claude API で振り分け、一覧に書き出すところまで作ります。この時点では判定を出さず、振り分けの結果だけを見ます。

4週目:台帳と料金表の照合を足す

台帳の読み替え、有効な版の料金表、差額の計算、データストアでの二重請求の検知を足し、判定を出します。diff と no_basis の件数を毎週数えます。

2か月目以降: 残りの4所の料金表をそろえ、1枚15分が何分になったかを実測します。no_basis の多くが台帳の更新漏れだと分かったら、台帳の更新の手順を見直した時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-28/最終更新:2026-09-28
確認した内容情報源確認日
請求書モデルがOCRで主要なフィールドと品目を抽出し、構造化JSONを返すこと。27言語をサポート。入力はPDFと画像。PDFとTIFFは最大2,000ページ(Freeは最初の2ページ)、S0で500MB。パスワード付きPDFは解除が必要。JSONが readResults/pageResults(信頼度)/documentResults に分かれることMicrosoft Learn: 請求書モデル2026-09-28
InvoiceId・VendorName・InvoiceDate・SubTotal・TotalTax・InvoiceTotal と、Items の Amount・Description・Quantity・UnitPrice・Date・ProductCode・Tax・TaxRateGitHub: invoice モデルスキーマ(2024-11-30 GA)2026-09-28
Iterator が配列を一連のバンドルに変換し、各アイテムを個別のバンドルとして出力することMake Help Center: Iterator2026-09-28
Aggregator が Source module から始まるバンドルを1つにまとめること。Group by で値ごとに分けられること。間のモジュールのデータは集約の設定に含めない限り後段で参照できないことMake Help Center: Aggregator2026-09-28
データストアがシナリオをまたいでデータを保存する組み込みの仕組みで、Search records/Get a record/Add/replace a record のモジュールがあることMake Help Center: Data stores2026-09-28
output_config.format でJSONスキーマに沿った出力に制約できること(GA)。全オブジェクトに additionalProperties: false が必要。enum は単純な値のみで大文字・小文字の一致が必要。minimum・maximum などは非対応。max_tokens で途中終了した応答は保証の外Claude Docs: Structured outputs2026-09-28

庁に納める費用の金額は、本記事では扱っていません。 実費の正誤を確かめる場合は、庁の公表する料金を別に確認してください。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0264)についてのご相談はこちらから。

AI活用について相談する
目次