PDFから契約条件・期限・金額を抜き出す方法

契約PDFをAIで確認するなら、抽出項目と原文位置を固定した表にします。契約期間、更新、解約期限、料金、支払条件を値だけでなくPage / Clauseと一緒に記録し、矛盾や不明点を推測で埋めません。

AIものさし編集部

契約PDFをAIで確認するときは、「要約して」ではなく、先に抽出項目を固定し、各値と原文位置をセットで出させるのが基本です。契約期間、更新条件、解約期限、料金、支払条件、違約金などは、値だけ抜き出すと適用条件や例外が落ちます。重要なのは、AIの答えを契約解釈として受け取ることではなく、確認すべき条項を素早く見つけ、原文へ戻れる一覧を作ることです。

この記事では、架空の契約書を例に、抽出項目の決め方、AIへの依頼文、Page / Clause付きの出力形式、矛盾・未記載の扱い、検算方法まで進めます。契約上の法的判断や交渉方針は、必要に応じて社内法務や専門家へ確認してください。

抽出前に「どの文書が契約一式か」を固定する

実務の契約は、本文PDFだけで完結しないことがあります。注文書、料金表、仕様書、SLA、特約、変更覚書などが別ファイルになっている場合、本文だけをAIへ渡すと重要条件を落とします。最初に「今回の契約条件を構成する文書」を一覧にし、文書名・版・締結日・優先関係が分かる範囲で記録します。複数ファイルがあるなら、どのファイルのPage / ClauseかまでSourceに残してください。

最初に作るのは「契約条件の抽出表」

AIへPDF全体の要約を頼む前に、業務上確認したい項目を表にします。契約書によって必要項目は変わりますが、継続契約やSaaS、業務委託などでよく確認するのは次のような項目です。

表は横にスクロールできます

項目抽出する値必ず残すもの
契約開始日日付Page / Clause / 原文
契約終了日日付または期間自動更新との関係
自動更新有無・更新期間更新を止める条件
解約期限何日前までか起算点・通知方法
料金金額・単位・税月額/年額/従量など
支払条件締日・支払日請求条件・通貨
最低利用期間期間途中解約可否
違約金金額または計算方法発生条件
変更条件料金/規約変更通知方法・効力発生日
例外特約・個別条件本文より優先するか

この表を先に決めると、AIが重要そうな箇所だけを自由に要約するのを防げます。「値がない項目は未記載と書く」「判断できない場合は推測しない」も最初からルールにします。

架空例で見る:値だけでは足りない

たとえば契約書に「契約期間は2026年11月1日から1年間とする。期間満了の30日前までに書面で解約の意思表示がない場合、同一条件で1年間更新する」と書かれているとします。ここから必要なのは「1年間」「30日前」という数字だけではありません。

抽出結果は次のようにします。

表は横にスクロールできます

FieldValueSourceNote
開始日2026-11-01p.3 第5条1項契約期間の起点
初回終了2027-10-31相当p.3 第5条1項原文が「1年間」のため日付計算は別途確認
自動更新あり・1年間p.3 第5条2項解約通知がない場合
解約期限満了30日前までp.3 第5条2項「書面」で通知
通知方法書面p.3 第5条2項メール可否はこの条文だけでは不明

ここでAIに終了日を計算させた場合、その日付は原文そのものではなく計算結果です。原文記載と計算・解釈を別列にしておくと、「契約書に書いてあるFact」と「そこから導いた値」を混同しにくくなります。

AIへの依頼文は「抽出」と「解釈」を分ける

次のように、まず抽出タスクへ限定します。

この契約PDFから、以下の項目を抽出してください。

対象項目:

  • 契約開始日

  • 契約期間 / 終了条件

  • 自動更新の有無と更新期間

  • 解約期限

  • 解約通知の方法

  • 料金

  • 支払条件

  • 最低利用期間

  • 違約金 / 解約金

  • 料金変更条件

各項目を次の列で出してください。

  1. Field

  2. Value

  3. Page

  4. Clause / Section

  5. 根拠となる原文の短い引用または要約

  6. Condition / Exception

  7. Status:CONFIRMED / AMBIGUOUS / NOT FOUND

ルール:

  • PDFに書かれていない値は推測しない

  • 日付計算や法的解釈は原文Factと分ける

  • 複数箇所に異なる記載があれば両方示す

  • 金額は通貨・税・単位を落とさない

  • Page / Clauseを必ず残す

その後、必要なら「この条件から実務上確認すべき期限を計算して」と別タスクにします。抽出と計算・解釈を一度に混ぜるより、どこで誤りが起きたか追いやすくなります。

金額は「数字+単位+条件」で取る

料金は「50,000円」とだけ抜くと危険です。月額なのか年額なのか、税別か税込か、最低利用数量があるか、初期費用と継続費用が別かで意味が変わります。

たとえば「基本料金 月額50,000円(税別)。月100件を超える処理は1件あたり200円を追加する」とあれば、少なくとも基本料金、課金周期、税、従量単価、従量課金の開始条件を別Fieldにします。AIへは「金額の近くにある単位・期間・税・条件を同時に抽出」と明示します。

支払条件も「翌月末」だけでなく、請求締日、支払方法、振込手数料、遅延時の扱いなどが別条項に分かれている場合があります。料金表や別紙がある契約では、本文だけで完結すると決めつけず、参照先の別紙まで確認します。

期限は起算点を必ずセットで確認する

「30日前」「10営業日以内」のような期限は、何を基準に数えるかで結果が変わります。契約終了日から30日前なのか、通知受領日から10日なのか、請求日から30日なのかを一緒に抽出します。

期限確認では次の3列があると扱いやすくなります。

表は横にスクロールできます

DeadlineTrigger / Base DateSource
解約通知:満了30日前まで契約期間満了日p.3 第5条2項
支払:請求書受領後30日以内請求書受領日p.5 第8条
障害通知:知った日から5営業日以内障害を認識した日p.8 第14条

具体的なカレンダー日へ変換する場合は、契約上の「日」「営業日」の定義、休日扱い、時刻、通知到達条件を確認します。AIが算出した締切日は便利ですが、原文に書かれた期限ルールと分けて保存してください。

複数箇所に違う条件があれば、AIに決着させない

契約本文と別紙、注文書、特約で金額や期間が異なることがあります。このときAIが「たぶん別紙が優先」と勝手に一つへまとめると、確認すべき矛盾が消えます。

出力Ruleとして、同一Fieldに複数の値が見つかったらCONFLICTにします。たとえば本文では月額50,000円、注文書では月額45,000円なら、両方のSourceを並べ、「優先関係は要確認」とします。どの文書が優先するかは、契約文書内の優先順位条項や締結関係を確認して判断します。

「NOT FOUND」も重要です。解約方法が見つからないとき、一般的な契約慣行からメール可と補完させず、「通知方法は確認できない」と残す方が次の調査につながります。

PDF自体を正しく読めているか先にテストする

契約PDFがスキャン画像、複数段組み、ページをまたぐ表を含む場合、AIがそもそも文字や構造を正しく取得できていないことがあります。契約条件の抽出前に、数か所だけ取得テストをします。

例として「3ページの第5条見出しを抜き出す」「料金表の列名をすべて列挙する」「最終ページの署名欄の見出しを答える」と依頼します。原本と一致するか確認してから全項目抽出へ進みます。OCRが必要なPDFでは、数字・日付・固有名詞の読み間違いを特に確認してください。

PDFが読めたことと、契約条件を正確に解釈できたことは別です。まず取得、次に抽出、最後に解釈という順に分けると安全です。

Adobe Acrobat AI Assistant can show source citations, but Adobe notes that citations and responses may still be inaccurate or incomplete. Treat a citation as a route back to the source, not as proof that extraction is complete; inspect the cited clause and surrounding conditions in the original PDF before using a value.

抽出後の検算は5点だけでも必ず行う

契約条件一覧ができたら、少なくとも次を原PDFと照合します。

  1. 金額:数字だけでなく通貨・税・月額/年額・従量条件まで一致している。

  2. 日付:開始・終了・更新・解約期限の起算点を取り違えていない。

  3. 条項:Page / Clauseから原文へ戻れる。

  4. 例外:但し書き、別紙、特約、優先条項を落としていない。

  5. 不明点:AIが空欄を推測で埋めていない。

高額契約や解約期限が近い契約なら、重要Fieldだけ二重確認します。同じAIに聞き直すだけでは独立検証にならないので、原文を人が確認する、別の抽出方法を使う、社内の契約管理データと照合するなど、確認経路を分けます。

実務では「契約レビュー表」まで作る

複数契約を管理するなら、1契約ごとの抽出結果を同じSchemaへそろえると更新期限を一覧化できます。最低限、contract_id、counterparty、start_date、term、renewal、notice_deadline、fee、payment_terms、source_page、source_clause、status、reviewed_atを持たせます。

ただし、AIから抽出した値をそのまま基幹台帳へ自動書き込みするのは避けます。まずReview Queueへ出し、重要FieldがCONFIRMEDになったものだけ反映する方が安全です。契約更新や支払に直接影響するデータほど、人の承認を挟みます。

AIものさしの判断

契約PDFから条件を抜き出すときの中心は、要約ではなく「Field → Value → Source → Condition → Status」の対応表です。値だけではなくPage / Clauseと原文条件を残せば、AIの回答をそのまま信じずに確認できます。

まず3〜5ページ程度の取得テストを行い、抽出項目を固定してから全体へ広げてください。金額・期限・自動更新・解約条件は、複数箇所の矛盾と未記載を残したままReviewします。最後に原文へ戻って重要Fieldを照合できれば、AIは契約書を読む代行ではなく、確認作業を速くする索引として使えます。

次に読む・使う

この記事の次に必要な情報へ進めます。