賃貸管理会社に紙やFAXで届く退去届・解約通知を読み取り、解約日・精算の条件・立会いの希望日を台帳に転記し、入居者への受付連絡の文案を作る
紙やFAXで届く退去届・解約通知を読み取り、物件・契約者・退去の希望日・立会いの希望日・精算の連絡先を取り出します。契約の解約予告の条件と照らした解約日と並べて台帳の下書きにし、入居者への受付連絡の文案を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- 不動産
- 対象部門
- カスタマーサポート
- 対象業務
- データ入力・転記/書類作成
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 郵送の届出は開封してスキャンし、FAXとメールのものは受信フォルダから開く
- 書面から物件名・部屋番号・契約者名を読み、賃貸管理システムで契約を探す
- 契約の解約予告の条件(何日前・何か月前までの申し出か)を確かめ、受け付けた日から契約上の解約日を数える
- 書面の退去の希望日と、契約上の解約日が合っているかを見る
- 立会いの希望日、退去後の連絡先、敷金の精算の口座を台帳に写す
- 届出が契約者本人から来ているかを、署名と筆跡、法人契約なら担当部署で確かめる
- 入居者に受付の連絡を書き、解約日と立会いの候補を伝える
- 人郵送の届出をスキャンして受付フォルダに入れる。FAXとメールのPDFは自動で同じフォルダに入る
- 自動15分おきに受付フォルダを見て、届いたファイルと受け付けた日時を記録する
- 自動OCRが全ページの文字、画像の品質、欄の名前と値、チェック欄を返す
- 自動生成AIが届出の種類、物件・部屋・契約者・差出人、日付の欄、立会いの希望日を取り出す
- 自動スクリプトが賃貸管理システムで契約を引き、解約予告の条件から契約上の解約日を数え、書面の日付と比べる
- 自動差出人が契約者本人かを照合し、`ready` / `needs_human` / `needs_retake` を付ける
- 自動`ready` のものについて、入居者への受付連絡の下書きを作る
- 人担当者が台帳の下書きと連絡の下書きを確かめ、口座番号を原本と見比べて登録し、連絡を送る
各工程の詳しい説明を読む
- 郵送の届出は開封してスキャンし、FAXとメールのものは受信フォルダから開く
- 書面から物件名・部屋番号・契約者名を読み、賃貸管理システムで契約を探す
- 契約の解約予告の条件(何日前・何か月前までの申し出か)を確かめ、受け付けた日から契約上の解約日を数える
- 書面の退去の希望日と、契約上の解約日が合っているかを見る
- 立会いの希望日、退去後の連絡先、敷金の精算の口座を台帳に写す
- 届出が契約者本人から来ているかを、署名と筆跡、法人契約なら担当部署で確かめる
- 入居者に受付の連絡を書き、解約日と立会いの候補を伝える
(a)書面ごとに書き方が違う。 「◯月末で退去します」「解約日 ◯月◯日」「鍵の返却は◯日」と、同じ日付の欄に違う意味の日付が書かれます。 2番目と5番目は、書面を読み解くところから始まります。
(b)解約日の数え間違い。 予告の条件は契約の時期と物件のオーナーによって違い、「1か月前」と「30日前」が混在します。受け付けた日をFAXの受信日にするか、郵便の到着日にするかも、担当者によってぶれます。
(c)届出の差出人の確認が漏れる。 法人契約の社宅では、入居している社員本人が書いて送ってくることがあります。契約者は法人で、社員は契約の当事者ではありません。 忙しい時期ほど、この確認が抜けます。
(d)受付の連絡が遅れる。 写す作業に追われ、入居者への連絡が数日後になると、立会いの希望日が埋まってしまい、日程の調整がやり直しになります。
- 【人】 郵送の届出をスキャンして受付フォルダに入れる。FAXとメールのPDFは自動で同じフォルダに入る
- 【自動】 15分おきに受付フォルダを見て、届いたファイルと受け付けた日時を記録する
- 【自動】 OCRが全ページの文字、画像の品質、欄の名前と値、チェック欄を返す
- 【自動】 生成AIが届出の種類、物件・部屋・契約者・差出人、日付の欄、立会いの希望日を取り出す
- 【自動】 スクリプトが賃貸管理システムで契約を引き、解約予告の条件から契約上の解約日を数え、書面の日付と比べる
- 【自動】 差出人が契約者本人かを照合し、
ready/needs_human/needs_retakeを付ける - 【自動】
readyのものについて、入居者への受付連絡の下書きを作る - 【人】 担当者が台帳の下書きと連絡の下書きを確かめ、口座番号を原本と見比べて登録し、連絡を送る
8番目で人が見るのは、下書きと原本の画像を並べた画面です。 書面を一から読むのではなく、取り出された値の根拠を確かめます。 差出人と日付の食い違いがあるものは、needs_human として先に並びます。
5番目を生成AIにさせないのが、この設計の要です。 解約予告の条件は契約ごとに違い、正しい日付を出せるのは契約のデータを持つスクリプトだけです。
02今回想定するシステム構成
退去届・解約通知(郵送のスキャン/FAX/メールのPDF・写真) │【トリガー】15分おきの定時実行 ▼ Python ── 受け付けた日時の記録、HEIC → JPEG ▼ Google Document AI(Enterprise Document OCR) │ 全ページの文字、画像の品質スコアと検出された不具合 ▼ Google Document AI(Form Parser) │ 欄の名前と値、チェック欄、信頼度 ▼ Claude API ── 届出の種類、物件・契約者・差出人、日付の欄、立会いの希望日(構造化出力) ▼ Python ── 契約の照合、契約上の解約日の計算、書面の日付との比較、差出人の照合 ▼ 判定(ready / needs_human / needs_retake) ▼ 【人が下書きと原本を確認】 ├──▶ 賃貸管理システムの台帳へ登録 └──▶ 入居者への受付連絡
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Enterprise Document OCR、Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(届出の種類の判定、項目の取り出し、受付連絡の下書き) | Gemini API、OpenAI API |
| 差異計算 | Python(契約上の解約日の計算、書面の日付との比較、差出人の照合) | 賃貸管理システムの計算機能 |
| 連携 | Python(受付フォルダの監視、台帳の下書きの書き出し) | 既存の連携の仕組み |
| 保管 | 受付フォルダ(届出の原本) | 文書管理システム |
賃貸管理システムと立会いの予定表は、今のものを使います。 この構成は書面を読んで下書きを作るところまでで、台帳への登録と入居者への連絡は担当者が行います。
OCRに Google Document AI を選ぶのは、日本語で使える2つのプロセッサがそろうからです。 Enterprise Document OCR と Form Parser は、どちらも一般提供(GA)で、対応言語に日本語が含まれ、手書きの検出にも対応しています。入居者の手書きの届出や手紙も対象にできます。
Enterprise Document OCR は、画像の品質スコアを0から1で返します。 0.5を下回ると、ぼけ、ノイズ、暗さ、薄さ、文字が小さすぎる、書類の切れ、文字の切れ、反射の8種類から理由が返ります。FAXの画像は、薄さと文字の小ささで品質を落としやすいので、このスコアで撮り直し(送り直し)の候補を分けます。
Form Parser は、欄の名前と値の組と、チェック欄を取り出します。 退去届の「立会い:午前/午後」「退去理由:転勤/購入/その他」のようなチェック欄は、塗りつぶされているかどうかで返ります。 自社の様式でない書面でも、欄の名前がそのまま返るので、どの欄に何が書かれたかが分かります。
生成AIに Claude API を選ぶのは、構造化出力が一般提供になっているからです。 要求の output_config.format に type: "json_schema" とスキーマを渡すと、スキーマどおりのJSONで返ります。
03どうやって実装するのか
処理の起点を決める
15分おきの定時実行にします。 FAXは夜間にも届き、郵送のスキャンは午前にまとまって入ります。ファイルが入るたびに動かすと、複数ページのFAXが途中で処理されることがあるため、最後の更新から5分以上たったファイルだけを対象にします。
受け付けた日時は、この時点で記録します。 FAXは受信の日時、メールは受信の日時、郵送はスキャンした日ではなく開封した担当者が付けた到着日を使います。この日時が、契約上の解約日を数える起点になります。起点をどれにするかは、管理を受託しているオーナーとの取り決めに合わせて決めておきます。
処理済みの印は、台帳の下書きまで作れたときだけ付けます。途中で止まったものは、次の回にやり直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 届出のファイル | PDF、FAXの画像、写真。経路と受け付けた日時 | 受付フォルダ |
| 読み取り結果 | 全ページの文字、品質スコアと不具合、欄の名前と値、チェック欄、信頼度 | Google Document AI |
| 契約の情報 | 物件・部屋番号、契約者(個人/法人)、契約の期間、解約予告の条件、連帯保証人・保証会社、法人契約の担当部署 | 賃貸管理システム |
| 立会いの予定 | 担当地域ごとの空いている日時 | 立会いの予定表 |
| 受付の規則 | 受け付けた日の起点、予告の条件の数え方、本人以外の届出の扱い | 自社の業務の規程 |
質を決めるのは、契約の情報の「解約予告の条件」が項目になっているかです。 契約書の本文にしか書かれていなければ、スクリプトは日付を数えられません。最初の準備は、管理している契約の予告の条件を、「1か月前」「30日前」「2か月前(法人)」のような決まった値の項目にすることです。
連帯保証人と法人契約の担当部署も欠かせません。 差出人の照合は、この2つと契約者の氏名の3つで行います。
データの取得方法を決める
Enterprise Document OCR には、次の2つを指定して送ります。
| 指定 | 設定 | 理由 |
|---|---|---|
enableImageQualityScores | true | ページごとの品質スコアと不具合を受け取る |
hints.languageHints | ["ja"] | 推定させず、日本語として読ませる |
Form Parser からは、次の2つを取ります。
| 取るもの | 場所 | 使い方 |
|---|---|---|
| 欄の名前と値 | pages[].formFields の fieldName と fieldValue、confidence | 物件名、部屋番号、氏名、退去日、連絡先、口座 |
| チェック欄 | valueType の filled_checkbox / unfilled_checkbox | 立会いの時間帯、退去の理由、鍵の返却方法 |
手紙の形の届出には、欄がありません。 formFields がほとんど返らないページは、OCRの全文を生成AIに渡し、文章から項目を取り出させます。
契約の検索は、部屋番号と物件名を先に、氏名を後にします。 氏名から探すと、法人契約の社宅で入居している社員の名前が契約者の欄に無く、契約が見つかりません。
AIへ渡す前に整形する
- 形式をそろえる … Document AI が受け付ける画像は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などで、HEIC は対応形式に含まれていません。 スマートフォンの写真は JPEG に変えます
- むやみに圧縮しない … 非可逆の形式で小さくすると、読み取りの精度が落ちるとされています。変換は1回だけにします
- FAXの送付状を分ける … 1ページ目が送付状のFAXは多く、届出の本体と分けて扱います。送付状の送信元の名前と番号は、差出人の照合に使います
- 品質の足りないページを分ける …
qualityScoreが0.5を下回ったページは、不具合の種類とともにneeds_retakeの候補にします - 口座番号の領域を覆う … 「口座番号」「振込先」の欄の値は、Form Parser の結果からだけ取り、生成AIに渡す全文と画像からは塗りつぶします
- 同じ届出の重複を落とす … FAXとメールで同じ届出が2回届くことがあります。物件・部屋・日付の組で重複を見つけます
5番目は、口座の値を生成AIが書き換える経路をなくすためです。 1桁の読み違いを「それらしい番号」に直されると、原本と見比べたときに気づきにくくなります。 口座はOCRの値と信頼度をそのまま見せ、担当者が画像で確かめます。
AIに処理させる
生成AIにさせるのは、届出の種類の判定と、決まった項目の取り出しだけです。
| 取り出すもの | 取り出し方 | 取り出せないとき |
|---|---|---|
| 届出の種類 | 退去届・解約通知/解約の撤回/それ以外 | other。項目を取り出さない |
| 物件と部屋 | 物件名と部屋番号を書かれたとおり | missing |
| 契約者と差出人 | 書面上の契約者名、署名した人の氏名、差出人の立場の記載(本人・同居人・保証人・会社の担当など) | 立場の記載が無ければ not_stated |
| 日付の欄 | 書かれた日付をすべて、欄の名前か文中の言葉と組で(「退去日」「解約日」「鍵返却」など) | 欄の名前が無ければ label_unknown |
| 立会いの希望 | 候補の日付と時間帯をすべて | missing |
| 退去後の連絡先 | 住所と電話番号を書かれたとおり | missing |
4行目で、日付を欄の名前と組で取り出すのが要点です。 書面には「退去日」「解約日」「引越し日」「鍵の返却日」が混在し、生成AIはそれを1つの「退去日」にまとめたがります。 まとめずに並べさせ、どの日付を契約上の解約日と比べるかはスクリプトが規則で選びます。
| させないこと | 理由 |
|---|---|
| 契約上の解約日の計算 | 予告の条件は契約ごとに違う。スクリプトが契約のデータで数える |
| 解約が有効かの判断 | 本人以外の届出は担当者が確かめる |
| 日付の欄のまとめ | 意味の違う日付を1つにしない |
| 口座番号の読み取り | OCRの値をそのまま使う。生成AIには渡さない |
| 精算額や原状回復の負担の記載 | 立会いの後に、契約と立会いの結果で決まる |
| 受付連絡での解約日の約束 | 連絡の下書きには、スクリプトが数えた日付だけを入れる |
指示内容を固定する
あなたは賃貸管理会社の窓口で、入居者から届いた退去の届出を読む担当です。
渡された読み取り結果だけを見て、項目を取り出してください。
日付の計算や、解約が有効かの判断はしないでください。
【届出の種類】
- move_out : 退去届・解約通知
- withdraw : 前に出した解約の申し出を取り消す連絡
- other : それ以外(修繕の依頼、更新の書類など)
other の書面からは項目を取り出さないでください。
【取り出す項目】
物件名、部屋番号、書面上の契約者名、署名した人の氏名、
差出人の立場(本人/同居人/連帯保証人/会社の担当/代理人/not_stated)、
書かれた日付のすべて(欄の名前か文中の言葉と組で)、
立会いの希望日と時間帯のすべて、退去後の住所と電話番号
【厳守事項】
- 記載がなければ status を missing にしてください。推測で埋めないでください。
- 日付は、欄の名前や文中の言葉(「退去日」「解約日」「鍵返却」など)と
組にして、書かれたものをすべて並べてください。
複数の日付を1つの退去日にまとめないでください。
- 「月末」「中旬」のように日が書かれていない場合は、日を補わず、
書かれた言葉のまま text に入れ、date を空にしてください。
- 差出人の立場は、書面に書かれた言葉だけで決めてください。
筆跡や文面の印象から本人かどうかを推測しないでください。
- 契約上の解約日、日割りの賃料、敷金の精算額を書かないでください。
- 口座番号は塗りつぶされています。補ったり推測したりしないでください。
- 日付は西暦(YYYY-MM-DD)に直し、元の表記を evidence に残してください。
- evidence には、根拠にした文字列をそのまま写してください。
【読み取り結果(ページごと、品質不足のページには印)】{pages}
【FAXの送付状から読んだ送信元】{fax_sender}
【受け付けた日時】{received_at}
「月末」を補わない指示が、いちばん効きます。 何も言わないと、生成AIは「3月末」を3月31日に直します。その月の末日が土日なら引越しの都合で前の金曜を指していることもあり、直した日付は書面の事実ではなくなります。
「筆跡から推測しない」も外せません。 生成AIは、契約者名と署名が同じなら本人と書きます。同じ名前を家族が書くこともあり、本人かどうかは書面の言葉と契約のデータでしか確かめられません。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONを受け取ります。 要求の output_config.format に、type を json_schema として、スキーマを渡します。
{
"notice_id": "",
"doc_type": "move_out | withdraw | other",
"property": { "name": "", "room": "", "status": "ok | missing | unreadable" },
"parties": {
"contract_holder": "", "signer": "",
"sender_role": "tenant | cohabitant | guarantor | company | agent | not_stated",
"evidence": ""
},
"dates": [
{ "label": "", "date": "", "text": "", "label_known": true, "evidence": "" }
],
"inspection_requests": [ { "date": "", "slot": "am | pm | any", "evidence": "" } ],
"forwarding": { "address": "", "phone": "", "status": "ok | missing" }
}
スキーマでは doc_type と sender_role を enum で固定し、日付には format の date を使います。 Claude の構造化出力は、minimum のような数値の制約や文字数の制約をサポートしないため、部屋番号の桁や日付の範囲はスクリプトの側で確かめます。
受け取ったあと、スクリプトが契約と照らした結果を足します。
{
"contract_id": "",
"received_at": "",
"notice_rule": "1_month | 30_days | 2_months",
"earliest_end_date": "",
"written_end_date": "",
"date_gap_days": 0,
"sender_check": "holder | company_contact | not_holder | unknown",
"account": { "value": "", "confidence": 0 },
"verdict": "ready | needs_human | needs_retake"
}
verdict | 条件 |
|---|---|
needs_retake | 物件・部屋・日付のあるページが品質不足 |
needs_human | sender_check が not_holder か unknown、written_end_date が earliest_end_date より前、契約が見つからない、label_known が false の日付がある、doc_type が withdraw |
ready | 上のどれにも当たらない |
written_end_date が契約上の最も早い解約日より前の場合が、受付で最も揉める形です。 予告の期間が足りていないことを入居者に伝える必要があり、伝え方は担当者が決めます。 連絡の下書きは出さず、needs_human にします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ | ファイルの一覧と取得 | FAX・メール・スキャンの届出を受け取る |
| Google Document AI | API呼び出し(同期の処理) | Enterprise Document OCR、Form Parser の順に送る |
| Claude API | API呼び出し | 項目の取り出し(構造化出力)、受付連絡の下書き |
| 賃貸管理システム | 契約の読み取りと、下書きの書き出し | 契約と予告の条件を引き、台帳の下書きを作る |
| 立会いの予定表 | 読み取り | 希望日と空きの重なりを下書きに添える |
台帳には下書きとして書き出します。 契約上の解約日、立会いの希望、退去後の連絡先、口座を入れた状態にし、担当者が確かめて登録するまで、退去の予定として扱いません。
受付連絡の下書きに入れるのは、受け付けた日、契約上の解約日、立会いの候補日、鍵の返却と公共料金の手続きの案内です。 敷金の精算額と原状回復の負担には触れません。どちらも立会いの後に決まることだからです。
人が確認する
needs_humanを先に見る … 差出人が本人でないもの、予告の期間が足りないもの。本人への確認の電話か、委任状の依頼をします- 日付の並びを確かめる …
datesの一覧と原本の画像を見て、どの日付を退去の日と読んだかが正しいかを確かめます - 口座番号を原本と見比べる … OCRの値と信頼度を見て、画像の該当箇所と1桁ずつ照らします
- 台帳に登録し、受付連絡を送る … 下書きを直したところは記録します
3番目は全件で行います。 口座の誤りは敷金の誤送金に直結し、取り戻すのに入居者とオーナーの両方を巻き込みます。 信頼度が高くても省きません。
それ以外の項目は、根拠の文字列を流し見るだけにします。 書面を一から読み直す運用にすると、第10章の3分には収まりません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 品質スコアが0.5を下回るFAX | needs_retake。入居者に送り直しを頼む前に、郵送の原本の有無を確かめる |
| 手紙の形で欄が無い | OCRの全文から取り出す。label_known が false の日付は人へ |
| 契約が見つからない | 部屋番号の書き違い、物件名の旧称。needs_human |
| 法人の社員本人から届く | not_holder。法人の担当部署に確かめる |
| 連帯保証人から届く | not_holder。本人の追認か、代理人としての委任を確かめる |
| 解約の撤回が届く | withdraw。前の届出と組にして人へ |
| 同じ届出がFAXとメールで届く | 重複として1件にまとめ、両方の原本を残す |
| 立会いの希望日が予定表の空きと重ならない | 下書きに空いている近い日を3つ添える。どれを返すかは担当者 |
| Document AI や Claude API が応答しない | 処理済みの印を付けず、次の回にやり直す |
件数として多いのは、4行目です。 社宅の多い管理会社では、社員本人からの届出が日常的に届きます。法人の担当部署の連絡先を契約のデータに持たせておくと、確認が1本の電話で済みます。
記録を残す
- 届出の原本と、受け付けた日時と経路(FAX・メール・郵送)
- Document AI が返した結果の全文と、Claude API に渡した全文(口座を覆ったもの)と返ったJSON
- スクリプトが足した結果と、そのとき使った解約予告の条件と受付の規則の版
- 担当者が直した項目と、直す前と後の値
- 本人以外の届出について、確かめた方法(電話、委任状)と日時
- 受付連絡を送った日時と、その文面
受け付けた日時と規則の版は、後から解約日をめぐって入居者と行き違ったときの根拠になります。 いつ届いたものを、どの条件で数えたかが残っていれば、説明が一度で済みます。
直した項目の記録は、指示を直す材料にもなります。 同じ様式の届出で同じ日付の読み違いが続くなら、その様式の欄の名前を指示に書き足します。
04実装レベルの3段階
最小構成は、指示の書き方と日付の読み方を固める段階です。 1件ずつ貼り付けるので、月360件には使えません。 半自動化で、1件10分が5分程度になります。 契約の検索と日付の計算は自動になりますが、台帳への転記と連絡の文面が手作業で残ります。本格構成で3分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、予告の条件が項目になっていない契約と、契約が見つからない物件名の書き方が先に分かります。
05工数削減シミュレーション
導入後 360件 × 3分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 管理戸数が数千戸から数万戸あり、退去届や解約通知が毎月数百件、紙の郵送・FAX・メールのPDFで届く賃貸管理会社。届いた書面を担当者が読んで、契約上の解約日を数え、立会いの希望日と敷金の精算の連絡先を賃貸管理の台帳に手で写している場合。届出の様式が自社のもの、仲介会社のもの、入居者の手書きの手紙と混在している場合。
- 退去の申し出がほぼすべて入居者向けのアプリやWebの申込みで届き、項目がすでにデータになっている場合。管理戸数が少なく、月の退去が数件の場合。解約の効力が生じているか、原状回復の負担をどう分けるか、敷金からいくら差し引くかといった判断そのものを自動化したい場合、この構成では代替できません。
07最小構成で試す方法
- 先月受け付けた届出から30件を選ぶ(手紙の形のもの、法人契約の社員本人からのもの、予告の期間が足りなかったものを数件ずつ入れる)
- その30件について、当時の担当者がどの日付を解約日として台帳に入れたかを確かめる
- 口座番号の欄を紙で隠してからスキャンし、手元のAIサービスの画面に1件ずつ貼り付ける
- 「この届出から、物件名、部屋番号、署名した人、差出人の立場、書かれた日付のすべて(欄の名前と組で)、立会いの希望日を表にしてください。日付をまとめたり、月末を日付に直したりしないでください」と指示する
- 出てきた表と、契約の予告の条件を手で照らし、当時の台帳と同じ結論になるかを見る
| 出てきた内容 | 判断 |
|---|---|
| 日付の並びが当時の読み方と合った | OCRとスクリプトの連携に進む |
| 日付を1つにまとめた、月末を直した | 指示の書き方で直る。構成は有効 |
| 契約者名と署名が同じだから本人と書いた | 指示に「推測しない」を足す。照合は契約のデータで |
| FAXの文字が薄くて読めない件数が多い | 受信の設定が先。 AIの問題ではない |
2行目はほぼ必ず出ます。 書面の日付の意味を人がどれだけ読み解いていたかが、ここで見えます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 生成AIが解約日を数える | 計算はスクリプト。 指示で禁じ、契約のデータで数える |
| 複数の日付を1つの退去日にまとめる | 欄の名前と組で全部並べさせる |
| 「月末」を末日に直す | 日を補わず、言葉のまま残させる |
| 署名が同じだから本人とする | 推測を禁じ、契約のデータで照合する |
| 口座の1桁を書き換える | 生成AIに渡さない。OCRの値を人が原本と照らす |
| 受け付けた日の起点がぶれる | FAX・メール・郵送ごとの起点を規則にし、ログに残す |
| 予告の条件が項目に無い | 計算できない。届出が来た契約から項目にする |
| 社宅の社員本人の届出を受け付ける | 契約者は法人。担当部署に確かめる |
| 受付連絡で精算額に触れる | 立会いの後に決まる。下書きに入れない |
上の3行が、この構成の失敗のほとんどです。 どれも、生成AIが書面の日付を「分かりやすく」直そうとすることから起きます。直した日付は、入居者が書いた日付ではありません。
下の3行のうち、運用を始めてから最初に効いてくるのは予告の条件です。 条件が項目に無い契約は needs_human に積み上がり、窓口の担当者がそれを毎回契約書で確かめることになります。 条件の整備を後回しにすると、削減の時間が出ません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 入居者の氏名、退去後の住所と電話番号、法人契約の担当者、そして敷金の精算に使う口座情報です。
- 口座情報を生成AIに渡さない … OCRの値をそのまま下書きに入れ、Claude API に渡す全文と画像からは塗りつぶします
- 処理する地域を先に決める … Document AI は
us、eu、asia-southeast1などで処理できます。入居者の個人情報をどこで処理してよいかを、オーナーとの管理委託の取り決めと合わせて決めます - この構成は解約の有効性を判断しない … 本人以外からの届出は担当者が確かめます。連帯保証人からの申し入れは法律上有効とはならないとされています
- 受付の連絡を自動で送らない … 下書きまでです。解約日を誤って伝えると、賃料の請求の期間をめぐる行き違いになります
- 精算と原状回復に触れない … 標準契約書の解説では、原状回復の内容は明渡しの時に、契約時の基準に基づいて協議するものとされています。受付の段階で金額や負担を示しません
誤りが起きた場合のリスクは、解約日を誤って台帳に入れることと、本人でない届出で解約を進めることの2つです。 前者は日付の計算を生成AIにさせると起き、後者は差出人を推測させると起きます。どちらも生成AIに判断させないことで防ぎます。
10まず何から始めるか
1週目:解約予告の条件を項目にする
今月と来月に退去の届出が来そうな契約から、予告の条件を「1か月前」「30日前」のような決まった値で賃貸管理システムに入れます。受け付けた日の起点(FAX・メール・郵送)も、規則として文字にします。
2週目:30件で試す
先月の届出から30件を選び、口座の欄を隠してから手元のAIサービスで項目の表を作らせます。日付をまとめていないか、月末を直していないかを最優先で見ます。
3週目:本人以外の届出の扱いを決める
法人契約の社員本人、同居人、連帯保証人から届いたときに、誰に何で確かめるかを決めます。法人契約の担当部署の連絡先も、契約のデータに足します。
4週目:受付フォルダから台帳の下書きまでをつなぐ
FAXの受信フォルダを対象に、OCR、取り出し、契約の照合、解約日の計算を一覧に書き出すところまで作ります。この時点では受付連絡の下書きを出さず、一覧だけを担当者が見ます。
2か月目: 郵送とメールの経路を足し、台帳への下書きの書き出しを始めます。3か月目以降: 受付連絡の下書きを足し、1件10分が何分になったかを実測します。3月の繁忙期を一度この構成で越えた時点で、運用として完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Enterprise Document OCR と Form Parser が一般提供(GA)で、対応言語に日本語が含まれること。同期の処理のページの上限が15であること | Google Cloud: Processor list | 2026-10-06 |
画像の品質スコアが enableImageQualityScores で有効になり、0から1で返ること。0.5を下回ると8種類の不具合(ぼけ・ノイズ・暗さ・薄さ・文字が小さすぎる・書類の切れ・文字の切れ・反射)が検出されること。languageHints を指定できること。手書きの検出に対応すること | Google Cloud: Enterprise Document OCR | 2026-10-06 |
| Form Parser がキーと値のペア、表、選択マーク(チェック欄)を取り出すこと。事前学習済みで追加の学習ができないこと | Google Cloud: Form Parser | 2026-10-06 |
欄が formFields の fieldName と fieldValue で返り、confidence が付くこと。チェック欄が filled_checkbox / unfilled_checkbox で返ること | Google Cloud: Handle the processing response | 2026-10-06 |
| 対応する画像の形式が PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などで、HEIC が含まれないこと。非可逆の形式でファイルを小さくすると結果の精度が落ちうること | Google Cloud: Supported files | 2026-10-06 |
構造化出力が一般提供で、output_config.format に type: "json_schema" とスキーマを指定して使うこと。enum と文字列の format(date など)をサポートし、minimum などの数値の制約や文字数の制約をサポートしないこと | Claude Docs: Structured outputs | 2026-10-06 |
| 賃貸住宅標準契約書が国土交通省の作成したひな型で、第2条で期間の定めのある契約とし、第11条で賃借人からの解約権を認めていること。連帯保証人の立場での解約の申し入れは法律上有効とはならず、本人の追認か、代理人としての地位の確認が大切とされること。原状回復の内容は明渡し時に契約時の基準に基づいて協議するとされること | 国土交通省: 賃貸住宅標準契約書(平成30年3月版)について(令和6年度研修会資料) | 2026-10-06 |
解約予告の条件、受け付けた日の起点、本人以外からの届出の扱いは、個々の賃貸借契約と管理委託の取り決め、自社の規程に従ってください。 本記事は Google Cloud、Claude Docs、国土交通省の資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0451)についてのご相談はこちらから。
