契約書から期限・自動更新・解約条項を抽出して台帳を作る
締結済みの契約書PDFを入力に、契約期間、自動更新の有無と条件、解約予告期間、更新拒絶の通知期限、契約金額、支払条件、管轄を抽出し、契約管理台帳の項目として登録します。
- 利用ツール
- AWS Textract/Azure AI/ChatGPT/Claude/Gemini/Google Document AI/Make/n8n/Power Automate/Python
- 対象業界
- IT・SaaS/不動産/商社/製造
- 対象部門
- 法務/総務
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- SaaS追加(小)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 契約が締結され、押印済みのPDFが法務に回ってくる
- 法務担当がPDFを開く
- 契約期間、自動更新の有無、解約予告期間を探して読む
- 更新拒絶の通知期限を手で計算する
- Excelの管理台帳に、20項目ほどを打ち込む
- PDFをSharePointの契約種別フォルダに保存する
- 月初に台帳を開き、期限が近い契約を目で探す
- 押印済みPDFが、指定のSharePointフォルダに保存される
- 自動契約種別を判定する
- 自動期間・自動更新・解約予告などの条項を抽出する
- 自動更新拒絶の通知期限を計算する
- 自動抽出できなかった項目を「要確認」として明示する
- 人法務担当が抽出結果を確認し、承認する
- 自動台帳へ登録する
- 自動通知期限の90日前・30日前に、担当部門へ通知する
各工程の詳しい説明を読む
- 契約が締結され、押印済みのPDFが法務に回ってくる
- 法務担当がPDFを開く
- 契約期間、自動更新の有無、解約予告期間を探して読む
- 更新拒絶の通知期限を手で計算する
- Excelの管理台帳に、20項目ほどを打ち込む
- PDFをSharePointの契約種別フォルダに保存する
- 月初に台帳を開き、期限が近い契約を目で探す
問題は4つあります。
(a)条項の場所が契約ごとに違う。 自動更新の定めが「第3条(有効期間)」にあることも、末尾の「第20条(その他)」にあることもあります。
(b)通知期限の計算を間違える。 「3か月前」が暦月なのか日数なのか、起算日は満了日なのか前日なのかで、数日ずれます。数日のずれが、通知期限を過ぎる原因になります。
(c)台帳が最新でない。 1,200件のうち、直近で更新された契約が台帳に反映されていないことがあります。台帳を信じて期限管理をしているため、これが最も危険です
(d)期限を目で探している。 月初にExcelを開いて、期限の近い契約を探しています。忙しい月は見落とします。
- 押印済みPDFが、指定のSharePointフォルダに保存される
- 【自動】 契約種別を判定する
- 【自動】 期間・自動更新・解約予告などの条項を抽出する
- 【自動】 更新拒絶の通知期限を計算する
- 【自動】 抽出できなかった項目を「要確認」として明示する
- 【人】 法務担当が抽出結果を確認し、承認する
- 【自動】 台帳へ登録する
- 【自動】 通知期限の90日前・30日前に、担当部門へ通知する
自動化されるのは「読む」「探す」「計算する」「打ち込む」「期限を監視する」の5つです。
8が、この構成でもっとも価値のある部分です。 台帳を作るだけでは、結局誰かが見に行かなければなりません。期限が近づいたときに向こうから通知が来る状態にして、初めて失念が防げます。
02今回想定するシステム構成
押印済み契約書PDF → SharePoint の受領フォルダ │ ▼【トリガー】ファイルが作成されたとき Power Automate(または Python) │ ├──▶ OCR / テキスト抽出 ├──▶ 契約種別の判定 │ ▼ LLM API ── 条項の抽出(期間 / 自動更新 / 解約予告 / 金額 / 管轄) │ ▼ 通知期限の計算(プログラム) │ ▼ 確認画面(PDFと抽出結果を並べる)──【法務が承認】 │ ├──▶ 契約管理台帳(SharePointリスト / Excel / 契約管理SaaS) └──▶ 期限監視(90日前・30日前に通知)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 保管 | SharePoint | Box、Google Drive、契約管理SaaS |
| OCR | Azure AI Document Intelligence | Google Document AI、AWS Textract |
| ワークフロー | Power Automate | Make、n8n、Python |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 台帳 | SharePointリスト | Excel、kintone、契約管理SaaS |
| 通知 | Microsoft Teams / Outlook | Slack、メール |
契約管理SaaS(電子契約サービスに付随するものを含む)に、AI抽出機能が備わっている製品があります。まずそれを検討してください。 期限通知の機能も標準で備わっています。自前で組む価値があるのは、既存の台帳資産が大きく移行が難しい場合や、独自の管理項目がある場合です。
03どうやって実装するのか
処理の起点を決める
SharePointの受領フォルダにファイルが作成されたことを起点にします。Power Automate の SharePoint コネクタに標準トリガーがあります。
電子契約サービスを使っている場合は、締結完了のWebhookを起点にするほうが確実です。 押印済みPDFの受け渡しが自動化されるためです。
なお、既存の1,200件については、別途一括処理が必要です。 これは初回の移行作業として、フォルダ内の全PDFを順次処理するバッチを走らせます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 契約書PDF | 全文(別紙・覚書を含む) | SharePoint |
| 契約種別の定義 | 種別ごとに抽出すべき項目 | 法務が整備 |
| 既存台帳 | 同一相手先の既存契約(更新の場合の突合用) | 管理台帳 |
| 相手先マスタ | 取引先コードと正式名称 | 会計システム |
データの取得方法を決める
テキスト抽出: 押印済み契約書は、電子契約ならテキストPDF、紙の契約書をスキャンしたものなら画像PDFです。両方が混在します。 画像PDFはOCRが必要です。
別紙・覚書の扱いが厄介です。 契約期間が本体ではなく「覚書」で変更されていることがあります。同一契約に紐づく文書をまとめて処理する仕組みが必要です。 ファイル名の規則、またはフォルダ構成で紐づけます。
契約種別の判定: 契約書のタイトル(「業務委託契約書」など)から判定します。タイトルだけで判定できない場合は、本文の内容も見ます。
AIへ渡す前に整形する
- テキストPDFと画像PDFの振り分け … テキストが取れるかを確認し、取れなければOCRに回します
- 別紙・覚書の紐づけ … 同一契約の関連文書をまとめます
- 条項の分割 … 「第◯条」の単位で分けます
- 相手先名の名寄せ … 契約書上の社名と、取引先マスタを突き合わせます
AIに処理させる
抽出のみです。日付の計算はさせません。
| 抽出項目 | 内容 |
|---|---|
| 契約締結日 | |
| 契約期間 | 開始日と満了日 |
| 自動更新の有無 | あり/なし/記載なし |
| 自動更新の条件 | 何もしなければ更新か、双方の合意が必要か |
| 更新期間 | 1年ごと、など |
| 更新拒絶の通知期限 | 「満了の3か月前まで」などの記述 |
| 通知の方法 | 書面/電子メール可 など |
| 中途解約の可否 | 可否と予告期間 |
| 契約金額 | 月額/年額/総額 |
| 支払条件 | 締日・支払日 |
| 管轄裁判所 | |
| 反社条項の有無 | |
| 秘密保持条項の有無と存続期間 |
日付の計算(通知期限の逆算)は、抽出した記述をもとにプログラムで行います。 「満了の3か月前」を「2026年12月31日」に変換する処理は、暦の計算です。AIに計算させると、月末の扱いや起算日の解釈でずれます。契約の期限管理でずれは許されません。
指示内容を固定する
あなたは契約管理台帳を作成する担当者です。
以下の契約書から、指定された項目を抽出してください。
【厳守事項】
- 日付の計算をしないでください。
「満了の3か月前」のような記述は、そのまま原文の表現で返してください。
具体的な日付に変換しないでください。
- 契約書に記載がない項目は "記載なし" としてください。
一般的な慣行や他の契約書の内容で補わないでください。
(例:自動更新の定めがない契約に「通常1年更新」と書かない)
- 各項目について、根拠となる条項番号と原文を必ず記載してください。
示せない項目は "記載なし" としてください。
- 別紙・覚書で本体の条件が変更されている場合、
変更後の内容を採用し、amendments に変更の経緯を記載してください。
- 金額は契約書の記載どおりに返してください。
税抜・税込の別が明記されている場合はそれも記載し、
明記がない場合は "不明" としてください。
- 条項の解釈や、有利不利の評価をしないでください。
【契約種別】{contract_type}
【契約書本文(条文単位)】
{contract_text}
【別紙・覚書】
{amendments}
「日付の計算をしない」の1行が、この構成でもっとも重要です。 期限管理の目的は、通知期限を1日も間違えないことです。LLMに暦計算をさせる理由はありません。
「記載がない項目を慣行で補わない」も同様です。 自動更新の定めがない契約に「通常1年更新」と書かれると、台帳を見た人は自動更新があると誤解します。
出力形式を固定する
{
"contract_type": "",
"counterparty": "",
"execution_date": "",
"term_start": "",
"term_end": "",
"auto_renewal": "あり | なし | 記載なし",
"auto_renewal_condition": "",
"renewal_period": "",
"non_renewal_notice": {
"raw_text": "満了の3か月前までに書面により",
"period_value": 3,
"period_unit": "月",
"method": "書面",
"clause": "第3条第2項"
},
"termination": { "allowed": true, "notice_raw": "", "clause": "" },
"amount": { "value": 0, "unit": "月額 | 年額 | 総額", "tax": "税抜 | 税込 | 不明" },
"payment_terms": "",
"jurisdiction": "",
"has_antisocial_clause": true,
"confidentiality": { "exists": true, "survival_raw": "" },
"amendments": [],
"citations": [
{ "field": "", "clause": "", "quote": "" }
],
"not_found": []
}
non_renewal_notice を raw_text と period_value / period_unit に分けている点が要点です。AIは原文と、そこから読み取った数値・単位までを返し、実際の日付計算はプログラムが term_end と組み合わせて行います。
システムへ連携する
台帳への登録: SharePointリストまたは契約管理SaaSへ登録します。Excelで管理している場合も、期限監視を自動化するには、SharePointリストなど機械が読める形に移すことを勧めます。
期限監視: 日次で台帳を確認し、通知期限の90日前・30日前に該当する契約について、契約の主管部門と法務へ通知します。
通知先を「法務」だけにしないでください。 更新するか否かの判断は、その契約を使っている事業部門が行います。法務だけに通知しても、事業部門への確認で時間が過ぎます。台帳に「主管部門」の項目を持たせ、そこへ通知します。
人が確認する
全件、人が承認します。
理由は、台帳の誤りが期限の失念に直結するためです。特に次の3項目は必ず確認します。
term_end(満了日) … これを誤ると、通知期限が全部ずれますauto_renewal(自動更新の有無) … 「なし」を「あり」と誤ると、更新されると思って放置します。逆も同様に危険ですnon_renewal_notice(通知期限の記述) … 原文と照合します
確認を速くするため、PDFの該当箇所をハイライトして、抽出結果と並べて表示する画面を用意してください。これがないと、確認に15分かかり、削減効果が出ません。
例外に対処する
| 起きること | 対応 |
|---|---|
| スキャンPDFの文字が読めない | OCRに回す。それでも読めなければ人が入力する。読めた体で処理しない |
| 契約期間の定めがない(期限の定めのない契約) | term_end を空にし、not_found に記載する。期限監視の対象外とする |
| 覚書で期間が変更されている | 変更後を採用し、amendments に経緯を記載する。本体だけを見て台帳を作らない |
| 自動更新の記述が曖昧 | 原文をそのまま返し、not_found ではなく「要確認」として人に回す |
| 「3か月前」の起算日が不明確 | 原文を返す。保守的に(早いほうに)解釈する運用ルールを決めておく |
| 相手先名がマスタにない | 台帳には契約書上の名称で登録し、マスタ突合は人が行う |
| 同じ契約が二重に取り込まれる | 相手先+締結日+契約種別で重複チェックする |
| 契約書以外のファイル(見積書等) | 書類種別を判定し、対象外なら通知する |
| 英文契約書 | 抽出項目は同じだが、プロンプトを英文用に用意する。管轄が外国法の場合は注記する |
記録を残す
- 契約書PDF(原本)
- AIの抽出結果と
citations - 承認者と承認日時
- 人が修正した項目
- 期限通知の送信履歴
期限通知の送信履歴を残すことが重要です。 「通知したが事業部門が対応しなかった」のか「通知自体が飛んでいなかった」のかを、後から区別できるようにします。
04実装レベルの3段階
本格構成まで進む価値があります。 台帳を作るだけでは、期限の失念という本来の課題が解決しないためです。 なお、既存1,200件の一括取り込みを先に行うか、新規分から始めるかは判断が要ります。 既存分のほうが期限が近い契約を含むため、まず「今後6か月以内に満了する契約」だけを抽出して先に処理するのが現実的です。
05工数削減シミュレーション
導入後 120件 × 8分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 継続契約を500件以上抱え、自動更新条項の管理が課題になっている組織。契約書がPDFで一元保管されていること。
- 契約が数十件で台帳を目視管理できる場合。契約管理SaaSの標準機能で足りる場合。
07最小構成で試す方法
- 契約書10件(種別をばらばらに選ぶ。スキャンPDFも含める)を用意する
- ChatGPT、Claude、Gemini などのチャット画面に、上のプロンプトを貼る
- 続けて契約書のテキストを貼り、抽出させる
- 既存の台帳の値と照合する
評価の観点は3つです。
- 満了日と自動更新の有無が正しいか … ここが最重要です。1件でも誤りがあれば、確認工程を厚くする必要があります
- 日付を計算していないか … 原文のまま返しているか
- 記載のない項目を補っていないか
多くの生成AIはPDFを直接添付できます。スキャンPDFで精度がどう落ちるかを、必ず実測してください。 契約書は紙で保管されているものが多く、ここが実用性を左右します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが日付を計算して数日ずれる | 計算をさせない。原文と数値・単位を返させ、プログラムで計算する |
| 「3か月前」の起算日の解釈がぶれる | 保守的に(早いほうに)解釈する運用ルールを決める。通知は90日前・30日前の2段階にして余裕を持たせる |
| 記載のない項目を慣行で補う | 「記載なし」を返させる。出力チェックで citations のない項目を検出する |
| 覚書での条件変更を見落とす | 同一契約の関連文書をまとめて処理する仕組みを作る |
| スキャンPDFの精度が低い | 実測してから範囲を決める。読めないものは人が入力する分岐を作る |
| 台帳がExcelのままで期限監視できない | SharePointリストなど機械が読める形に移す |
| 通知が法務にだけ届き、判断が進まない | 主管部門を台帳項目に持ち、そこへ通知する |
| 既存1,200件の移行で手が止まる | 「6か月以内に満了する契約」から先に処理する |
| 同じ契約が二重登録される | 相手先+締結日+種別で重複チェックする |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 取引先の社名、契約条件、契約金額、支払条件。取引先との秘密保持義務の対象になる情報を含みます。
- 契約書の秘密保持条項 … 契約書自体に「本契約の内容を第三者に開示しない」という条項が含まれていることがあります。外部AIサービスへの入力がこれに抵触しないかを、契約種別ごとに確認してください。 UC-0015(NDAレビュー)と同じ論点です
- 抵触する場合の対応 … 入力を学習に使わないことが契約で保証され、委託契約を締結できるサービスを選びます。それでも懸念がある契約種別は、対象から外します
- 契約金額の取り扱い … 取引先ごとの契約金額は、交渉上の重要情報です。台帳のアクセス権限を限定してください
- アクセス権限 … 契約書PDFと台帳の閲覧範囲を、法務・総務と各契約の主管部門に限定します。全社共有にしないでください
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- 自動実行してよい範囲 … 台帳登録と期限通知までです。更新拒絶の通知を自動送信しないでください。 契約を終了させるかどうかは事業判断です
なお、この構成は契約内容の法的評価を行いません。抽出した条項の法的な意味については、法務担当者が判断してください。
10まず何から始めるか
1週目:期限が近い契約を洗い出す
AIを使う前に、これをやってください。 現在の台帳から「今後6か月以内に満了する契約」を抽出します。台帳が不完全なら、この作業自体が難しいはずです。その難しさが、この構成が必要な理由の裏付けになります。
2週目:10件で抽出精度を測る
契約書10件(テキストPDFとスキャンPDFを混ぜる)で、最小構成(§8)を試します。満了日と自動更新の有無の正解率を測ってください。 ここが100%でないなら、確認工程を厚くする設計が必要です。
3週目:主管部門を整理する
期限が近い契約について、「どの部門が使っているか」を埋めます。通知先が決まっていないと、期限監視を作っても意味がありません。
4〜6週目:半自動化を作る
フォルダ監視 → 抽出 → 確認画面 → 台帳登録までを作ります。新規締結分から適用します。
2か月目以降: 期限監視と通知を実装し、既存1,200件を満了日の近い順に移行します。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Azure AI Document Intelligence による文書からの項目抽出(構造化JSONの返却、スキャン画像・デジタルPDFへの対応) | MicrosoftDocs: Document Intelligence | 2026-09-02 |
| Power Automate の SharePoint コネクタ「ファイルが作成されたとき」トリガー | Microsoft Learn: SharePoint コネクタ | 2026-09-02 |
| Claude APIのStructured Outputs | Anthropic: Structured outputs | 2026-09-02 |
契約書に特化したOCRモデルは、請求書ほど汎用モデルが整備されていません。 自社の契約書(特にスキャンPDF)での実測が必須です。契約管理SaaSの機能・連携仕様も製品によって異なります。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0016)についてのご相談はこちらから。
