海外拠点が結ぶ英文の事務所・倉庫の賃貸借契約書を読み取り、賃料・改定条項・更新と解約通知の期限をリース台帳に起こして、期限の前に知らせる
海外の拠点から届く英文の賃貸借契約書を読み取り、賃料、賃料の改定、契約期間、更新と中途解約の選択権、通知の期限を原文つきでリース台帳の登録案にします。期限の計算はプログラムが行い、近づいた契約を拠点と経理に知らせます。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 不動産/商社/物流/製造
- 対象部門
- 経理/財務
- 対象業務
- データ入力・転記/台帳・マスタ管理
- 主な課題
- 入力作業が多い/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 拠点の総務が、署名済みの契約書や変更契約をPDFにして共有フォルダに入れ、経理にメールで知らせる
- 経理の担当者が全文を開き、目次から「Rent」「Term」「Renewal」「Break」「Notices」などの章を探す
- 賃料、通貨、支払の頻度、改定の方法と時期、契約期間、更新と解約の選択権を読む
- 「not less than six months prior to」のような書き方から、通知の期限を手で計算する
- 元の契約や過去の変更契約を開き、今回の書面で何が変わったかを突き合わせる
- リース台帳の行を足すか書き換え、分からない点を拠点にメールで聞く
- 期限は担当者が自分の予定表に入れ、近づいたら拠点に連絡する
- 人拠点の総務が契約書・変更契約のPDFを受付フォルダに入れる(ファイル名に拠点コードと契約番号を付ける)
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無・言語を確かめる
- 自動OCRが全文、段落と見出しの構造、表、質問への答え、署名の位置を信頼度つきで返す
- 自動生成AIが、賃料・改定・期間・選択権・通知の条項を原文のまま切り出し、値を所定の形にそろえる
- 自動プログラムが、切り出した原文が読み取り結果に本当にあるかを確かめる
- 自動プログラムが、過去の版に今回の変更を重ね、通知の期限と改定の予定日を計算する
- 自動台帳の登録案と、`needs_human` の印が付いた項目の一覧を作る
- 人経理の担当者が、印の付いた項目と期限の計算の根拠を確かめ、登録を確定する
- 自動確定した期限の120日前・60日前・30日前に、拠点の責任者と経理に知らせる
- 人拠点の責任者が、選択権を行使するか、家主と交渉するかを決める
各工程の詳しい説明を読む
- 拠点の総務が、署名済みの契約書や変更契約をPDFにして共有フォルダに入れ、経理にメールで知らせる
- 経理の担当者が全文を開き、目次から「Rent」「Term」「Renewal」「Break」「Notices」などの章を探す
- 賃料、通貨、支払の頻度、改定の方法と時期、契約期間、更新と解約の選択権を読む
- 「not less than six months prior to」のような書き方から、通知の期限を手で計算する
- 元の契約や過去の変更契約を開き、今回の書面で何が変わったかを突き合わせる
- リース台帳の行を足すか書き換え、分からない点を拠点にメールで聞く
- 期限は担当者が自分の予定表に入れ、近づいたら拠点に連絡する
(a)通知の期限が台帳に載らない。 3番で選択権を読んでも、4番の計算が「後でやる」になりやすく、期限が予定表に入らないまま満了が近づきます。 更新の選択権は、期限までに書面で通知しないと消えるものが多く、気づいたときには家主の言い値で結び直すしかありません。
(b)変更契約が元の契約に重ならない。 5番の突合は時間がかかるため、変更契約の金額だけを台帳に書き、改定の方法や面積の変更が反映されないことがあります。 翌年の改定で、どの賃料を基準に計算するのかが分からなくなります。
(c)同じ言葉が契約ごとに違う意味を持つ。 「Commencement Date」が引渡しの日のこともあれば、賃料の発生日のこともあります。どちらを台帳の「開始日」とするかは、読む人によって違いました。
(d)全文を読むのは続かない。 決算前の月は読むのが変更契約の金額欄だけになり、(a)と(b)が同時に起きます。
- 【人】 拠点の総務が契約書・変更契約のPDFを受付フォルダに入れる(ファイル名に拠点コードと契約番号を付ける)
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無・言語を確かめる
- 【自動】 OCRが全文、段落と見出しの構造、表、質問への答え、署名の位置を信頼度つきで返す
- 【自動】 生成AIが、賃料・改定・期間・選択権・通知の条項を原文のまま切り出し、値を所定の形にそろえる
- 【自動】 プログラムが、切り出した原文が読み取り結果に本当にあるかを確かめる
- 【自動】 プログラムが、過去の版に今回の変更を重ね、通知の期限と改定の予定日を計算する
- 【自動】 台帳の登録案と、
needs_humanの印が付いた項目の一覧を作る - 【人】 経理の担当者が、印の付いた項目と期限の計算の根拠を確かめ、登録を確定する
- 【自動】 確定した期限の120日前・60日前・30日前に、拠点の責任者と経理に知らせる
- 【人】 拠点の責任者が、選択権を行使するか、家主と交渉するかを決める
8番目が、この設計の分かれ目です。 人が見るのは全文ではなく、AIが切り出した原文と、そこから計算された期限の組だけです。
6番目をプログラムに置いているのも、意図してのことです。 計算を規則の側に置けば、満了日を直すだけで期限も直ります。
02今回想定するシステム構成
英文の賃貸借契約書・変更契約(拠点の総務がPDFで入れる) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・ページ数・パスワード・言語の確認 ▼ AWS Textract(StartDocumentAnalysis:LAYOUT/TABLES/FORMS/QUERIES/SIGNATURES) │ 全文、段落と見出し、賃料の表、質問への答え、署名の位置、信頼度 ▼ Claude API ── 条項を原文のまま切り出し、値を所定の形にそろえる │ ① 当事者と物件 ② 期間と開始日 ③ 賃料と支払 │ ④ 賃料の改定 ⑤ 更新の選択権 ⑥ 中途解約の選択権 ⑦ 通知の方法 ▼ Python ── 原文の照合、変更契約の重ね合わせ、通知期限と改定日の計算 ▼ 台帳の登録案 + 要確認の一覧(ok / needs_human) ▼ 【経理が印の付いた項目と期限の根拠を確認】 ├──▶ リース台帳へ確定(版を残す) └──▶ 期限の120日・60日・30日前に拠点と経理へ通知
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(条項の切り出しと値の整形) | OpenAI API、Gemini API |
| 差異計算 | Python(原文の照合、変更の重ね合わせ、期限の計算) | 固定資産・リース管理の仕組みの計算機能 |
| 連携 | AWS Lambda(保存と完了の通知を起点に処理を動かす) | Amazon EventBridge |
| 保管 | Amazon S3(契約書、読み取り結果、登録案、確定した版) | 社内のファイルサーバー |
リース台帳と会計システムは、新しく足すものではありません。 最初の準備は、台帳に「契約番号」「版(変更の回数)」「更新の通知期限」「解約の通知期限」「次の改定日」「改定の方法」「通知先の住所」の列を足すことです。列が無ければ、読み取った値の置き場がありません。
OCRに AWS Textract を選ぶのは、対象が英文の契約書だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語や中国語は読めず、縦書きにも対応していません。 現地語の契約は Azure AI Document Intelligence か Google Document AI の経路に分けます。
この題材で効くのは、段落の構造(LAYOUT)です。 LAYOUT は段落、見出し、ページ番号、表などの位置と文字を、上から下、左から右の読む順で返します。 章の見出しで区切れれば、「Rent Review」の章だけを生成AIに渡せます。同期の処理はPDFで1ページまでなので、非同期の処理を使います。
03どうやって実装するのか
処理の起点を決める
受付フォルダ(Amazon S3)にPDFが保存されたことを起点にします。 契約の締結や変更は拠点ごとに不定期に起きるため、1日1回の定時実行にはしません。
入る経路は、拠点の総務が署名済みの契約書をスキャンしたPDFと、家主や仲介会社から電子で届いたPDFの2つです。どちらも同じフォルダに入れ、ファイル名の先頭に拠点コードと契約番号を付けるところまでを人が行います。 契約番号の無いファイルは処理の前に止めます。
S3 への保存を AWS Lambda が受け、StartDocumentAnalysis を呼びます。ClientRequestToken に契約番号とファイルのハッシュから作った値を入れると、同じファイルを二度入れても同じ JobId が返り、二重に読みません。 完了は Amazon SNS に届き、SUCCEEDED を確かめてから結果を取り、すぐ S3 に保存します(JobId は7日間だけ有効です)。期限の通知は別の処理として、毎朝、確定した台帳を見て動かします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 契約書・変更契約のPDF | 全文と署名欄。受け取った日時、拠点、新規・更新・変更の区分 | 受付フォルダ(S3) |
| 読み取り結果 | 全文、段落と見出し、表、質問への答え、署名の位置、信頼度 | AWS Textract |
| これまでの版 | 同じ契約のこれまでの読み取り結果と、確定した台帳の内容 | S3 の保管領域 |
| 拠点の情報 | 拠点コード、国、現地法人名、通貨、決算月、拠点の責任者 | 拠点の一覧 |
| 現地の休日 | 国ごとの休日の一覧(営業日で数える期限に使う) | 経理が年1回用意する一覧 |
| 用語の対応表 | 「Commencement Date」「Rent Commencement Date」などの台帳の列への対応 | 経理が用意する対応表 |
質を決めるのは、これまでの版と休日の一覧です。 版が無ければ変更契約を重ねられず、休日の一覧が無ければ「20 Business Days」の期限を数えられません。
データの取得方法を決める
読み取りは StartDocumentAnalysis に FeatureTypes として LAYOUT、TABLES、FORMS、QUERIES、SIGNATURES を指定して行います。全文の行と単語は、指定した機能にかかわらず返ります。 結果は GetDocumentAnalysis で取り、1回に返るブロックは既定で最大1,000件なので、NextToken が返る限り続けて取ります。 状態が PARTIAL_SUCCESS のときは、警告の出たページを記録して人に回します。
| 取るもの | どの機能で | 何に使うか |
|---|---|---|
| 全文の行と単語 | 常に返る | 条項の原文を写す元。原文の照合にも使う |
| 段落と見出し | LAYOUT | 章ごとに区切り、該当の章だけを生成AIに渡す |
| 表 | TABLES | 段階的な賃料(年ごとの賃料の表)、面積の表 |
| 質問への答え | QUERIES | 満了日や月額賃料など、決まった項目の答えと信頼度 |
| 署名の位置 | SIGNATURES | 署名欄に署名らしきものがあるか |
質問は QueriesConfig に別名(Alias)を付けて並べます(非同期で1ページ30問まで)。公式の手引きは、文書の言葉で聞くこと、日付が複数ある文書では何の日付かを特定して聞くことを勧めています。例えば EXPIRY に「What is the expiry date of the term?」、RENT_COMM に「What is the rent commencement date?」です。
質問は既定で1ページ目しか見ません。 ページの指定が無いと ["1"] になるため、**Pages に ["*"] を入れて全ページを対象にします。 条項の文章は質問で取りません。手引きは100語未満の答えになる質問を勧めており、数文にわたる更新や解約の条項は途中で切れます。** 段落で区切った原文を生成AIに渡します。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。XFA形式のPDFは扱えないため、印刷し直してPDFにします
- パスワードの確認 … PDFはパスワードで保護されていてはいけません。保護されたものは拠点に解除したものを頼みます
- ページ数とサイズの確認 … 非同期の処理でPDFとTIFFは500MB・3,000ページが上限です
- 文字の大きさの確認 … 文字の高さが15ピクセルを下回ると検出されません。150 DPIで8ポイント相当です。脚注の細かい文字が多いので、300 DPIでスキャンします
- 言語の確認 … 英語以外の文が含まれていれば質問を外します。現地語だけの契約は別の経路へ回します
- 章の切り分け …
LAYOUTの見出しで章に分け、「Definitions」「Term」「Rent」「Rent Review」「Option to Renew」「Break」「Notices」などの見出しに当たる章を選びます - 定義の抜き出し … 「Definitions」の章から、期限の計算に関わる言葉(「Expiry Date」「Business Day」「Term Commencement Date」)の定義を先に取り出し、各章と一緒に渡します
- 版の確認 … 同じ契約番号・同じ版の結果が既にあれば止めます。変更契約なら、元の契約の確定済みの版があることを確かめます
7番目を省かないでください。 「six months prior to the Expiry Date」の期限は、Expiry Date の定義が分からなければ計算できません。
AIに処理させる
させるのは、7つの区分の条項を原文のまま切り出し、値を所定の形にそろえ、根拠の文字列を添えることだけです。
| 取り出す項目 | 中身 | 取り出せないときの扱い |
|---|---|---|
| 当事者と物件 | 家主、借主、物件の住所、面積、用途 | 見つからなければ not_found |
| 期間と開始日 | 契約開始日、賃料の発生日、満了日、フリーレントの期間 | 日付の候補が複数なら ambiguous |
| 賃料と支払 | 通貨、金額、年額か月額か、支払の頻度と時期、税の扱いの記載 | 読めなければ unreadable |
| 賃料の改定 | 改定の時期、方法(固定率/指数連動/市場賃料)、上限と下限 | 指数の名前が無ければ not_found |
| 更新の選択権 | 回数、更新後の期間、行使の期限の書き方、条件 | 書かれていなければ not_found |
| 中途解約の選択権 | 行使できる日、通知の期限の書き方、違約金の記載 | 書かれていなければ not_found |
| 通知の方法 | 書面の要否、送り先、届いたとみなす時点 | 書かれていなければ not_found |
期限は「書き方」を写させ、日付にはさせません。 「not less than six months prior to the Expiry Date」を、offset(6)、unit(month)、anchor(Expiry Date)、direction(before)の組にそろえます。日付を出すのはプログラムです。
| させないこと | 理由 |
|---|---|
| 期限の日付の計算 | 満了日が変われば期限も変わる。規則の側で計算する |
| 改定後の賃料の計算 | 指数の値は契約書に無い。補うと根拠の無い金額ができる |
| 書かれていない条件の補完 | 「通常は更新できる」で埋めると、契約に無い権利を台帳に作る |
| 会計上のリース期間の判断 | 選択権を行使することが確実かは、経理の責任者と監査人が決める |
2行目がいちばん起きやすい失敗です。 「indexed to CPI」とだけある条項を渡すと、AIはもっともらしい上昇率で翌年の賃料を書き、根拠の無い金額が台帳に入ります。 改定の方法と時期だけを写させ、金額は空けておきます。
指示内容を固定する
あなたは経理部でグループのリース台帳を管理する担当として、
海外の拠点が結んだ英文の賃貸借契約書または変更契約を読み、
台帳に登録するための項目を取り出します。
渡された読み取り結果と定義の章だけを見てください。推測で埋めないでください。
【取り出す項目】
1. 当事者と物件(家主、借主、住所、面積、用途)
2. 期間と開始日(契約開始日、賃料の発生日、満了日、フリーレント)
3. 賃料と支払(通貨、金額、年額か月額か、頻度、時期)
4. 賃料の改定(時期、方法、上限と下限、指数の名前)
5. 更新の選択権(回数、更新後の期間、行使の期限、条件)
6. 中途解約の選択権(行使できる日、通知の期限、違約金)
7. 通知の方法(書面の要否、送り先、届いたとみなす時点)
【status の選び方】
- ok ......... 値が読み取れており、その項目として解釈できる
- not_found .. その項目が書かれていない
- unreadable . 文字は検出されているが信頼度が低く、値として確定できない
- ambiguous .. 候補が複数あり、1つに決められない
迷ったときに ok を選ばないでください。
【厳守事項】
- original には、契約書の英文をそのまま写してください。
言い換え、要約、綴りの修正をしないでください。
- 日本語の説明は note_ja にだけ書いてください。
- 日付の足し引きをしないでください。期限は offset・unit・anchor・direction の
組で表し、日付を計算して書かないでください。
- anchor には、定義の章に書かれている言葉をそのまま使ってください。
定義の章に無い言葉なら、anchor_defined を false にしてください。
- 改定後の賃料を計算しないでください。指数の値や上昇率を補わないでください。
- 書かれていない条件を補わないでください。「通常は」「一般に」で埋めないでください。
- 更新や解約の選択権が書かれていなければ not_found とし、
一般的な賃貸借の慣行から作らないでください。
- これが変更契約であれば、変更された項目だけを返し、
どの条項を変えたと書かれているかを amends に写してください。
- 選択権を行使すべきか、会計上どう扱うべきかは書かないでください。
- 英語以外の文があれば language_note に書いてください。
【定義の章】{definitions}
【章ごとに区切った原文】{sections}
【表と質問への答え】{tables_and_queries}
【文書の区分】{job_tag}
「日付の足し引きをしない」は、書かないと必ず破られます。 AIは親切に「2027年3月31日」と答え、満了日を変更契約で延ばしたときに、古い期限が台帳に残ります。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に json_schema)で形を守らせます。
{
"contract_no": "",
"document_kind": "original | renewal | amendment",
"version": 0,
"amends": [""],
"fields": [
{ "item": "expiry_date", "status": "ok | not_found | unreadable | ambiguous",
"value": "", "original": "", "page": 0, "confidence": 0, "note_ja": "" }
],
"rent_review": {
"method": "fixed | index | market | not_found",
"schedule_original": "", "index_name": "", "cap_floor_original": ""
},
"deadlines": [
{ "kind": "renewal_notice | break_notice | rent_review",
"offset": 0, "unit": "day | business_day | month",
"anchor": "", "anchor_defined": true,
"direction": "before | after", "original": "" }
],
"notice_method_original": "",
"language_note": ""
}
fields には、第7章の「AIに何をさせるのか」の表の項目を1行ずつ並べます。confidence は、その値を拾った行の Textract の信頼度をプログラムが後から書き入れます。
1つ目の理由は、期限を日付ではなく組で受け取れることです。 deadlines の組からプログラムが日付を出すので、満了日が変われば計算し直すだけで済みます。 business_day のときは、拠点の国の休日の一覧を使って数えます。
2つ目は、原文を照合できることです。 プログラムが page のページにその original の文字列があるかを確かめ、見つからなければ needs_human にします。
| 判定 | 条件 |
|---|---|
ok | 必須の項目(満了日・賃料・通貨)が ok、原文の照合が通る、期限の anchor が定義済み |
needs_human | 上のどれかを満たさない。ambiguous か unreadable が1つでもある |
needs_human(優先) | 通知期限が、計算すると今日から120日以内に来る。確定を待たずに拠点へ知らせる |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(Amazon S3) | 保存の通知で AWS Lambda を起動 | PDFの保存を検知する |
| AWS Textract | API呼び出し(非同期) | 全文・段落・表・質問の答え・署名の位置を返す |
| Claude API | API呼び出し | 条項の切り出しと値の整形 |
| Python の処理 | AWS Lambda 上で実行 | 原文の照合、変更の重ね合わせ、期限の計算 |
| リース台帳 | 登録案の書き出しと、確定後の書き込み | 確定した版だけを書き込む |
| 社内のメール・チャット | 通知 | 期限の120日・60日・30日前に拠点の責任者と経理へ |
リース台帳へは、人が確定したものだけを書き込みます。 登録案は別のシートに出し、経理が確かめた行だけを本番の台帳へ移します。誤った満了日が台帳に入ると、通知の日付まで連れてずれます。 会計システムへは書き込みません。
人が確認する
人が開くのは、needs_human の印が付いた契約と、期限の計算の根拠だけです。 ok のものは、満了日・賃料・期限の3列を一覧で流し見ます。全文を開く設計にすると、第10章の15.0時間には収まりません。
- 期限が近いものを先に見る … 通知期限が120日以内の契約は、確定の前に拠点へ知らせます
- 期限の根拠を確かめる …
originalの原文と、計算された日付を並べて見ます。「prior to」が送った日か届いた日かは、Notices の章で確かめます - 変更契約の重ね方を確かめる …
amendsの原文と、置き換えられた項目が合っているかを見ます - 拠点に聞く … 開始日と賃料の発生日がずれている、通知先が家主の旧住所のままである、といった点を拠点に確かめます
- 判定を覆したら記録する … どの項目を、どの値に変えたかを残します
2番目を省かないでください。 期限の計算が1日ずれただけで、選択権を失うか、家主に交渉の材料を渡すことになります。 台帳に載った期限は、その後は誰も疑わずに使われます。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付き・XFA形式のPDF | 読めないので、拠点に解除したものか印刷し直したものを頼む |
| 現地語だけ、または現地語と英語の併記 | 英語の部分だけを読み、language_note を付けて人へ。現地語だけなら別の経路 |
| 満了日の候補が複数 | ambiguous。定義の章と表紙の日付を並べて人へ |
| 期限の anchor が定義の章に無い | anchor_defined が false。期限を計算せず needs_human |
| 指数連動の改定で指数の名前が無い | not_found。改定の時期だけを台帳に入れ、拠点に確かめる |
| 変更契約に対応する元の契約が無い | 重ねずに止め、拠点に元の契約を頼む |
| 署名欄に署名が見つからない | 署名前の版の可能性。拠点に署名済みの版を確かめる |
OCRが FAILED を返す | 受付フォルダに残す。処理済みへ移すのは成功時だけ |
4行目が、この構成でいちばん大事な止め方です。 anchor が定義されていない期限を「たぶん満了日のことだろう」と計算すると、それらしい日付が台帳に入り、誰も疑わなくなります。 計算しないで止めるほうが安全です。
記録を残す
- 元のPDFと、受け取った日時・拠点・区分(新規・更新・変更)
- Textract が返したJSONの全文と、
JobId・状態・警告 - 生成AIの出力(
fields、deadlines、amends)と、原文の照合の結果 - 計算した期限と、その計算に使った満了日・休日の一覧の版
- 人が確定した台帳の行と、判定を覆した記録
- 期限の通知を送った日時と、拠点の責任者の返答
4つ目で「計算に使った満了日と休日の版」を残すのは、後で期限が争いになったときのためです。 家主から「通知が遅い」と言われたとき、なぜその日を期限としたのかを、当時の材料で説明できます。
04実装レベルの3段階
最小構成では件数がさばけません。 1件ずつ渡すので、月30件には使えません。確かめるための段階です。 半自動化で、1件90分が50分程度になります。 探す時間は減りますが、期限の計算と変更契約の突合が手で残ります。本格構成で30分になり、この段階が本記事の想定です。 差が大きいのは、期限の計算と変更の重ね合わせが、1件ずつ別のファイルを開く作業だからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、定義の章の切り出しに失敗しやすい書式が先に分かります。
05工数削減シミュレーション
導入後 30件 × 30分 ÷ 60 = 15 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 海外に事務所・倉庫・工場の拠点を数十か所持ち、拠点ごとに現地で英文の賃貸借契約を結んでいる企業。本社の経理がグループのリース台帳を持ち、新規・更新・変更の契約書を毎月数十件受け取って、全文を読んで手で写している場合。更新の選択権の通知期限を過ぎてから気づいた、賃料の改定を見落として支払額がずれていた、という経験がある場合。契約書の読み方が一部の担当者に偏っている場合。
- 海外の契約書が英語以外(中国語・日本語・タイ語など)で結ばれている拠点が中心の場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、質問による読み取りは英語の文書だけです)。海外の拠点が数か所で、契約の更新が年に数件の場合。なお、契約をリースとして会計上どう扱うか、更新や解約の選択権を行使するかの判断、家主との交渉は、経理・財務の責任者と拠点の責任者、監査人や現地の専門家が行うもので、この構成では代替できません。
07最小構成で試す方法
- 直近1年に受け取った契約書から10件を選ぶ(更新・解約の選択権がある契約と、変更契約を必ず混ぜる)
- その10件について、いまの台帳の満了日・賃料・通知期限を書き出しておく
- 契約書のPDFを手元のAIサービスに1件ずつ渡す
- 「この契約から、満了日、賃料と通貨、賃料の改定の方法と時期、更新と中途解約の選択権、通知の方法を、英文の原文つきで抜き出してください。日付の計算はしないでください。書かれていない項目は『記載なし』としてください」と指示する
- 出てきた結果を、台帳の値と原文で突き合わせる
10件は必ずやってください。 ワークフローを組む前に、「条項は見つかるのか」「期限の書き方を組にできるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 台帳と同じ値が原文つきで出た | OCRとワークフローの連携に進む |
| 期限を日付で答えた、改定後の賃料を計算した | 指示の書き方で直る。構成は有効 |
| 台帳の値と食い違った | まず台帳のほうを疑う。 変更契約が反映されていない可能性がある |
3行目が出ることは珍しくありません。 失敗ではなく、台帳に古い条件が残っていたことが分かったということです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが期限を日付で答える | 組で受け取る形にし、指示にも明記する。日付は必ずプログラムが出す |
| 満了日の取り違え | 定義の章を一緒に渡す。定義に無い anchor は計算しない |
| 改定後の賃料を計算して埋める | 方法と時期だけを写させる。指数の値は補わせない |
| 変更契約が元の契約に重ならない | ファイル名に契約番号を付ける。元の契約が無ければ止める |
| 質問が1ページ目しか見ない | Pages に ["*"] を入れる |
| 長い条項が質問の答えで切れる | 条項は段落の原文から取る。質問は短い値だけに使う |
| 脚注や別紙の文字が読めない | 15ピクセルが下限。300 DPIでスキャンする |
| 現地語の契約が混ざる | 英語以外は読めない。拠点ごとに経路を分ける |
| 営業日で数える期限がずれる | 拠点の国の休日の一覧を年1回更新する |
| 期限の通知が拠点に届かない | 通知先を拠点の責任者と経理の2か所にし、宛先を四半期ごとに見直す |
上の2行が、この構成の失敗のほとんどです。 どちらも「AIがそれらしい日付を答える」という同じところから出ています。日付を計算する権限をAIから外してあるかどうかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 家主・保証人の名称と住所、賃料・敷金・保証の金額、署名者の氏名と署名、そして拠点の所在地と面積です。社宅の契約では、駐在員の氏名と家族の情報が含まれることがあります。
- 外部へ渡す範囲を、台帳に必要な章までに限る … 生成AIに渡すのは、章を切り分けた後の該当する章と定義の章だけです。署名欄や別紙の個人の情報は渡しません
- 社宅の契約は扱いを分ける … 駐在員の個人の情報が入るため、同じ経路に流すかを人事と決めてから入れます
- 結果は暗号化して保管する …
StartDocumentAnalysisのOutputConfigで結果を自社の S3 に出し、KMSKeyIdで自社の鍵による暗号化を指定できます。保管の期間とアクセスできる人を先に決めます - 選択権の行使を自動で決めない … 通知は「期限が近い」という事実の連絡までです。行使するか、交渉するかは拠点の責任者が決めます
- この構成は会計上の判断を代替しません … 契約をリースとしてどう扱うか、選択権の行使が確実かをどう見るかは、経理の責任者と監査人が決めることです。 賃借人を保護する現地の法令による扱いも、現地の専門家に確かめてください
誤りが起きた場合のリスクは、期限を遅く見積もって選択権を失うことと、早く見積もって不要な交渉を始めることの2つです。 前者のほうが取り返しがつきません。だからこそ期限の計算は規則に置き、anchor の定義が無いものは計算しないで止めます。
10まず何から始めるか
1週目:台帳に列を足す
リース台帳に、第6章で挙げた期限と版の列を足します。満了が2年以内に来る契約から埋めます。
2週目:10件で試す
更新・解約の選択権がある契約と変更契約を混ぜた10件を、手元のAIサービスに渡して条項を抜き出させます。期限を日付で答えていないか、改定後の賃料を計算していないかを最優先で見ます。
3週目:期限の数え方を決める
「prior to」を送った日で数えるか届いた日で数えるか、営業日をどの休日の一覧で数えるかを、経理の責任者と決めます。 あわせて、用語の対応表を作ります。
4週目:受付フォルダから登録案までをつなぐ
S3 の受付フォルダを起点に、Textract で読み、章を切り分けて、条項の抜き出しを一覧に書き出すところまで作ります。この時点では期限を計算せず、deadlines の組だけを見ます。
2か月目: 期限の計算と変更契約の重ね合わせを足し、期限の120日前の通知を始めます。needs_human の件数を毎週数えます。3か月目以降: 1件90分が何分になったかを実測し、満了が近い契約の期限がすべて台帳に載り、拠点の責任者に通知が届いていることを確かめた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 企業会計基準第34号「リースに関する会計基準」等が2024年9月13日に公表されたこと。IFRS第16号と Topic 842 が、オペレーティング・リースも含むすべてのリースについて借手が資産と負債を計上する使用権モデルをとること。当委員会が借手のすべてのリースについて資産と負債を計上する会計基準を開発したこと | 企業会計基準委員会: 企業会計基準第34号「リースに関する会計基準」等の公表 | 2026-10-08 |
| 対応する形式(JPEG、PNG、PDF、TIFF)とXFA形式のPDFの非対応。同期はPDF1ページまで、非同期は500MB・3,000ページまで。パスワード付きPDFの非対応。質問は非同期で1ページ30問まで。対応言語が英・仏・独・伊・葡・西で、質問は英語だけ、手書きは英語のみ、縦書きは非対応。文字の最小の高さが15ピクセル(150 DPIで8ポイント相当) | AWS: Set Quotas in Amazon Textract | 2026-10-08 |
FeatureTypes(TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT)。全文の行と単語は指定にかかわらず返ること。ClientRequestToken で同じ JobId が返ること、JobTag、Amazon SNS への完了通知と SUCCEEDED の確認、OutputConfig と KMSKeyId。JobId が7日間だけ有効なこと | AWS: StartDocumentAnalysis | 2026-10-08 |
JobStatus が IN_PROGRESS/SUCCEEDED/FAILED/PARTIAL_SUCCESS であること。MaxResults の既定と上限が1,000で、NextToken で続きを取ること | AWS: GetDocumentAnalysis | 2026-10-08 |
| レイアウトの解析が段落・見出し・表などの位置と文字を読む順で返すこと。署名の検出が位置と信頼度を返し、フォームや質問と併用できること | AWS: Analyzing Documents | 2026-10-08 |
質問は文書の言葉を使い「What is / Who is」で始めること、日付が複数あるときは特定して聞くこと、100語未満の答えになる質問にすること。ページの指定が無いと ["1"] になり、* で全ページを指定できること | AWS: Best Practices for Queries | 2026-10-08 |
構造化出力を output_config.format に json_schema を指定して受け取れること | Claude Docs: Structured outputs | 2026-10-08 |
契約をリースとして会計上どう扱うか、選択権を行使するかの判断は、自社の経理・財務の責任者と拠点の責任者、監査人や現地の専門家が行うものです。 本記事は企業会計基準委員会の公開情報で確認できた範囲と、契約書の読み取りと台帳の登録案までを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1065)についてのご相談はこちらから。
