Media > AI活用ユースケース > 法務 > 契約書から期限・自動更新・解約条項を抽出して台帳を作る

契約書から期限・自動更新・解約条項を抽出して台帳を作る

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

締結済みの契約書PDFを入力に、契約期間、自動更新の有無と条件、解約予告期間、更新拒絶の通知期限、契約金額、支払条件、管轄を抽出し、契約管理台帳の項目として登録します。

サマリー
利用ツール
AWS Textract/Azure AI/ChatGPT/Claude/Gemini/Google Document AI/Make/n8n/Power Automate/Python
対象業界
IT・SaaS/不動産/商社/製造
対象部門
法務/総務
対象業務
データ入力・転記/台帳・マスタ管理
主な課題
入力作業が多い/情報が見つからない/期限・対応漏れが起きる
AIで行う処理
抽出
主な効果
入力漏れ削減/工数削減/機会損失防止
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
SaaS追加(小)
人間の確認
必須
現在工数
50h/月
AI導入後
16h/月
想定削減
68%
年間削減
408h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 契約が締結され、押印済みのPDFが法務に回ってくる
  2. 法務担当がPDFを開く
  3. 契約期間、自動更新の有無、解約予告期間を探して読む
  4. 更新拒絶の通知期限を手で計算する
  5. Excelの管理台帳に、20項目ほどを打ち込む
  6. PDFをSharePointの契約種別フォルダに保存する
  7. 月初に台帳を開き、期限が近い契約を目で探す
導入後(After)
  1. 押印済みPDFが、指定のSharePointフォルダに保存される
  2. 自動契約種別を判定する
  3. 自動期間・自動更新・解約予告などの条項を抽出する
  4. 自動更新拒絶の通知期限を計算する
  5. 自動抽出できなかった項目を「要確認」として明示する
  6. 法務担当が抽出結果を確認し、承認する
  7. 自動台帳へ登録する
  8. 自動通知期限の90日前・30日前に、担当部門へ通知する
各工程の詳しい説明を読む
  1. 契約が締結され、押印済みのPDFが法務に回ってくる
  2. 法務担当がPDFを開く
  3. 契約期間、自動更新の有無、解約予告期間を探して読む
  4. 更新拒絶の通知期限を手で計算する
  5. Excelの管理台帳に、20項目ほどを打ち込む
  6. PDFをSharePointの契約種別フォルダに保存する
  7. 月初に台帳を開き、期限が近い契約を目で探す

問題は4つあります。

(a)条項の場所が契約ごとに違う。 自動更新の定めが「第3条(有効期間)」にあることも、末尾の「第20条(その他)」にあることもあります。

(b)通知期限の計算を間違える。 「3か月前」が暦月なのか日数なのか、起算日は満了日なのか前日なのかで、数日ずれます。数日のずれが、通知期限を過ぎる原因になります。

(c)台帳が最新でない。 1,200件のうち、直近で更新された契約が台帳に反映されていないことがあります。台帳を信じて期限管理をしているため、これが最も危険です

(d)期限を目で探している。 月初にExcelを開いて、期限の近い契約を探しています。忙しい月は見落とします。

  1. 押印済みPDFが、指定のSharePointフォルダに保存される
  2. 【自動】 契約種別を判定する
  3. 【自動】 期間・自動更新・解約予告などの条項を抽出する
  4. 【自動】 更新拒絶の通知期限を計算する
  5. 【自動】 抽出できなかった項目を「要確認」として明示する
  6. 【人】 法務担当が抽出結果を確認し、承認する
  7. 【自動】 台帳へ登録する
  8. 【自動】 通知期限の90日前・30日前に、担当部門へ通知する

自動化されるのは「読む」「探す」「計算する」「打ち込む」「期限を監視する」の5つです。

8が、この構成でもっとも価値のある部分です。 台帳を作るだけでは、結局誰かが見に行かなければなりません。期限が近づいたときに向こうから通知が来る状態にして、初めて失念が防げます。

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

構成図
押印済み契約書PDF → SharePoint の受領フォルダ
   │
   ▼【トリガー】ファイルが作成されたとき
Power Automate(または Python)
   │
   ├──▶ OCR / テキスト抽出
   ├──▶ 契約種別の判定
   │
   ▼
LLM API ── 条項の抽出(期間 / 自動更新 / 解約予告 / 金額 / 管轄)
   │
   ▼
通知期限の計算(プログラム)
   │
   ▼
確認画面(PDFと抽出結果を並べる)──【法務が承認】
   │
   ├──▶ 契約管理台帳(SharePointリスト / Excel / 契約管理SaaS)
   └──▶ 期限監視(90日前・30日前に通知)
役割想定する製品代替候補
保管SharePointBox、Google Drive、契約管理SaaS
OCRAzure AI Document IntelligenceGoogle Document AI、AWS Textract
ワークフローPower AutomateMake、n8n、Python
生成AIClaude APIOpenAI API、Gemini API
台帳SharePointリストExcel、kintone、契約管理SaaS
通知Microsoft Teams / OutlookSlack、メール

契約管理SaaS(電子契約サービスに付随するものを含む)に、AI抽出機能が備わっている製品があります。まずそれを検討してください。 期限通知の機能も標準で備わっています。自前で組む価値があるのは、既存の台帳資産が大きく移行が難しい場合や、独自の管理項目がある場合です。

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

Step1

処理の起点を決める

SharePointの受領フォルダにファイルが作成されたことを起点にします。Power Automate の SharePoint コネクタに標準トリガーがあります。

電子契約サービスを使っている場合は、締結完了のWebhookを起点にするほうが確実です。 押印済みPDFの受け渡しが自動化されるためです。

なお、既存の1,200件については、別途一括処理が必要です。 これは初回の移行作業として、フォルダ内の全PDFを順次処理するバッチを走らせます。

Step2

入力データを集める

データ中身取得元
契約書PDF全文(別紙・覚書を含む)SharePoint
契約種別の定義種別ごとに抽出すべき項目法務が整備
既存台帳同一相手先の既存契約(更新の場合の突合用)管理台帳
相手先マスタ取引先コードと正式名称会計システム
Step3

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

テキスト抽出: 押印済み契約書は、電子契約ならテキストPDF、紙の契約書をスキャンしたものなら画像PDFです。両方が混在します。 画像PDFはOCRが必要です。

別紙・覚書の扱いが厄介です。 契約期間が本体ではなく「覚書」で変更されていることがあります。同一契約に紐づく文書をまとめて処理する仕組みが必要です。 ファイル名の規則、またはフォルダ構成で紐づけます。

契約種別の判定: 契約書のタイトル(「業務委託契約書」など)から判定します。タイトルだけで判定できない場合は、本文の内容も見ます。

Step4

AIへ渡す前に整形する

  1. テキストPDFと画像PDFの振り分け … テキストが取れるかを確認し、取れなければOCRに回します
  2. 別紙・覚書の紐づけ … 同一契約の関連文書をまとめます
  3. 条項の分割 … 「第◯条」の単位で分けます
  4. 相手先名の名寄せ … 契約書上の社名と、取引先マスタを突き合わせます
Step5

AIに処理させる

抽出のみです。日付の計算はさせません。

抽出項目内容
契約締結日
契約期間開始日と満了日
自動更新の有無あり/なし/記載なし
自動更新の条件何もしなければ更新か、双方の合意が必要か
更新期間1年ごと、など
更新拒絶の通知期限「満了の3か月前まで」などの記述
通知の方法書面/電子メール可 など
中途解約の可否可否と予告期間
契約金額月額/年額/総額
支払条件締日・支払日
管轄裁判所
反社条項の有無
秘密保持条項の有無と存続期間

日付の計算(通知期限の逆算)は、抽出した記述をもとにプログラムで行います。 「満了の3か月前」を「2026年12月31日」に変換する処理は、暦の計算です。AIに計算させると、月末の扱いや起算日の解釈でずれます。契約の期限管理でずれは許されません。

Step6

指示内容を固定する

あなたは契約管理台帳を作成する担当者です。
以下の契約書から、指定された項目を抽出してください。

【厳守事項】
- 日付の計算をしないでください。
  「満了の3か月前」のような記述は、そのまま原文の表現で返してください。
  具体的な日付に変換しないでください。
- 契約書に記載がない項目は "記載なし" としてください。
  一般的な慣行や他の契約書の内容で補わないでください。
  (例:自動更新の定めがない契約に「通常1年更新」と書かない)
- 各項目について、根拠となる条項番号と原文を必ず記載してください。
  示せない項目は "記載なし" としてください。
- 別紙・覚書で本体の条件が変更されている場合、
  変更後の内容を採用し、amendments に変更の経緯を記載してください。
- 金額は契約書の記載どおりに返してください。
  税抜・税込の別が明記されている場合はそれも記載し、
  明記がない場合は "不明" としてください。
- 条項の解釈や、有利不利の評価をしないでください。

【契約種別】{contract_type}

【契約書本文(条文単位)】
{contract_text}

【別紙・覚書】
{amendments}

「日付の計算をしない」の1行が、この構成でもっとも重要です。 期限管理の目的は、通知期限を1日も間違えないことです。LLMに暦計算をさせる理由はありません。

「記載がない項目を慣行で補わない」も同様です。 自動更新の定めがない契約に「通常1年更新」と書かれると、台帳を見た人は自動更新があると誤解します。

Step7

出力形式を固定する

{
  "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_noticeraw_textperiod_value / period_unit に分けている点が要点です。AIは原文と、そこから読み取った数値・単位までを返し、実際の日付計算はプログラムが term_end と組み合わせて行います。

Step8

システムへ連携する

台帳への登録: SharePointリストまたは契約管理SaaSへ登録します。Excelで管理している場合も、期限監視を自動化するには、SharePointリストなど機械が読める形に移すことを勧めます。

期限監視: 日次で台帳を確認し、通知期限の90日前・30日前に該当する契約について、契約の主管部門と法務へ通知します。

通知先を「法務」だけにしないでください。 更新するか否かの判断は、その契約を使っている事業部門が行います。法務だけに通知しても、事業部門への確認で時間が過ぎます。台帳に「主管部門」の項目を持たせ、そこへ通知します。

Step9

人が確認する

全件、人が承認します。

理由は、台帳の誤りが期限の失念に直結するためです。特に次の3項目は必ず確認します。

  1. term_end(満了日) … これを誤ると、通知期限が全部ずれます
  2. auto_renewal(自動更新の有無) … 「なし」を「あり」と誤ると、更新されると思って放置します。逆も同様に危険です
  3. non_renewal_notice(通知期限の記述) … 原文と照合します

確認を速くするため、PDFの該当箇所をハイライトして、抽出結果と並べて表示する画面を用意してください。これがないと、確認に15分かかり、削減効果が出ません。

Step10

例外に対処する

起きること対応
スキャンPDFの文字が読めないOCRに回す。それでも読めなければ人が入力する。読めた体で処理しない
契約期間の定めがない(期限の定めのない契約)term_end を空にし、not_found に記載する。期限監視の対象外とする
覚書で期間が変更されている変更後を採用し、amendments に経緯を記載する。本体だけを見て台帳を作らない
自動更新の記述が曖昧原文をそのまま返し、not_found ではなく「要確認」として人に回す
「3か月前」の起算日が不明確原文を返す。保守的に(早いほうに)解釈する運用ルールを決めておく
相手先名がマスタにない台帳には契約書上の名称で登録し、マスタ突合は人が行う
同じ契約が二重に取り込まれる相手先+締結日+契約種別で重複チェックする
契約書以外のファイル(見積書等)書類種別を判定し、対象外なら通知する
英文契約書抽出項目は同じだが、プロンプトを英文用に用意する。管轄が外国法の場合は注記する
Step11

記録を残す

  • 契約書PDF(原本)
  • AIの抽出結果と citations
  • 承認者と承認日時
  • 人が修正した項目
  • 期限通知の送信履歴

期限通知の送信履歴を残すことが重要です。 「通知したが事業部門が対応しなかった」のか「通知自体が飛んでいなかった」のかを、後から区別できるようにします。

04実装レベルの3段階

最小構成:PDFをチャットAIに添付して抽出させ、台帳に手入力 / 読み取り
半自動化:フォルダ監視 → 抽出 → 台帳へ自動登録 / 読み取りと登録
本格構成:上記+通知期限の自動計算+期限監視+主管部門への通知 / 期限管理まで

本格構成まで進む価値があります。 台帳を作るだけでは、期限の失念という本来の課題が解決しないためです。 なお、既存1,200件の一括取り込みを先に行うか、新規分から始めるかは判断が要ります。 既存分のほうが期限が近い契約を含むため、まず「今後6か月以内に満了する契約」だけを抽出して先に処理するのが現実的です。

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

前提値(モデル条件)
対象人数
2 名
月間件数
120 件
1件あたり現在時間
25 分
1件あたり導入後時間
8 分
現在  120件 × 25分 ÷ 60 = 50 時間/月
導入後 120件 × 8分 ÷ 60 = 16 時間/月
月間削減時間
34h
削減率
68%
年間削減時間
408h
年間金額換算(時間単価4,500円)
184万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

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

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

AI活用について相談する

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

向いている
  1. 継続契約を500件以上抱え、自動更新条項の管理が課題になっている組織。契約書がPDFで一元保管されていること。
向いていない
  1. 契約が数十件で台帳を目視管理できる場合。契約管理SaaSの標準機能で足りる場合。

07最小構成で試す方法

  1. 契約書10件(種別をばらばらに選ぶ。スキャンPDFも含める)を用意する
  2. ChatGPT、Claude、Gemini などのチャット画面に、上のプロンプトを貼る
  3. 続けて契約書のテキストを貼り、抽出させる
  4. 既存の台帳の値と照合する

評価の観点は3つです。

  • 満了日と自動更新の有無が正しいか … ここが最重要です。1件でも誤りがあれば、確認工程を厚くする必要があります
  • 日付を計算していないか … 原文のまま返しているか
  • 記載のない項目を補っていないか

多くの生成AIはPDFを直接添付できます。スキャンPDFで精度がどう落ちるかを、必ず実測してください。 契約書は紙で保管されているものが多く、ここが実用性を左右します。

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

問題対策
AIが日付を計算して数日ずれる計算をさせない。原文と数値・単位を返させ、プログラムで計算する
「3か月前」の起算日の解釈がぶれる保守的に(早いほうに)解釈する運用ルールを決める。通知は90日前・30日前の2段階にして余裕を持たせる
記載のない項目を慣行で補う「記載なし」を返させる。出力チェックで citations のない項目を検出する
覚書での条件変更を見落とす同一契約の関連文書をまとめて処理する仕組みを作る
スキャンPDFの精度が低い実測してから範囲を決める。読めないものは人が入力する分岐を作る
台帳がExcelのままで期限監視できないSharePointリストなど機械が読める形に移す
通知が法務にだけ届き、判断が進まない主管部門を台帳項目に持ち、そこへ通知する
既存1,200件の移行で手が止まる「6か月以内に満了する契約」から先に処理する
同じ契約が二重登録される相手先+締結日+種別で重複チェックする

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

この構成で扱うデータ: 取引先の社名、契約条件、契約金額、支払条件。取引先との秘密保持義務の対象になる情報を含みます。

  1. 契約書の秘密保持条項 … 契約書自体に「本契約の内容を第三者に開示しない」という条項が含まれていることがあります。外部AIサービスへの入力がこれに抵触しないかを、契約種別ごとに確認してください。 UC-0015(NDAレビュー)と同じ論点です
  2. 抵触する場合の対応 … 入力を学習に使わないことが契約で保証され、委託契約を締結できるサービスを選びます。それでも懸念がある契約種別は、対象から外します
  3. 契約金額の取り扱い … 取引先ごとの契約金額は、交渉上の重要情報です。台帳のアクセス権限を限定してください
  4. アクセス権限 … 契約書PDFと台帳の閲覧範囲を、法務・総務と各契約の主管部門に限定します。全社共有にしないでください
  5. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  6. 自動実行してよい範囲 … 台帳登録と期限通知までです。更新拒絶の通知を自動送信しないでください。 契約を終了させるかどうかは事業判断です

なお、この構成は契約内容の法的評価を行いません。抽出した条項の法的な意味については、法務担当者が判断してください。

10まず何から始めるか

1週目:期限が近い契約を洗い出す

AIを使う前に、これをやってください。 現在の台帳から「今後6か月以内に満了する契約」を抽出します。台帳が不完全なら、この作業自体が難しいはずです。その難しさが、この構成が必要な理由の裏付けになります。

2週目:10件で抽出精度を測る

契約書10件(テキストPDFとスキャンPDFを混ぜる)で、最小構成(§8)を試します。満了日と自動更新の有無の正解率を測ってください。 ここが100%でないなら、確認工程を厚くする設計が必要です。

3週目:主管部門を整理する

期限が近い契約について、「どの部門が使っているか」を埋めます。通知先が決まっていないと、期限監視を作っても意味がありません。

4〜6週目:半自動化を作る

フォルダ監視 → 抽出 → 確認画面 → 台帳登録までを作ります。新規締結分から適用します。

2か月目以降: 期限監視と通知を実装し、既存1,200件を満了日の近い順に移行します。


11関連ユースケース

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

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

技術仕様確認日:2026-09-02/最終更新:2026-09-08
確認した内容情報源確認日
Azure AI Document Intelligence による文書からの項目抽出(構造化JSONの返却、スキャン画像・デジタルPDFへの対応)MicrosoftDocs: Document Intelligence2026-09-02
Power Automate の SharePoint コネクタ「ファイルが作成されたとき」トリガーMicrosoft Learn: SharePoint コネクタ2026-09-02
Claude APIのStructured OutputsAnthropic: Structured outputs2026-09-02

契約書に特化したOCRモデルは、請求書ほど汎用モデルが整備されていません。 自社の契約書(特にスキャンPDF)での実測が必須です。契約管理SaaSの機能・連携仕様も製品によって異なります。

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

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

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

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