賃貸の入居申込書と本人確認・収入証明の書類を読み取り、記載の食い違いを審査に回す前に洗い出す
入居申込に添付された本人確認書類と収入証明を読み取り、申込書に書かれた氏名・生年月日・住所・勤務先・年収と項目ごとに突き合わせます。書類どうしの食い違いを、家賃保証会社や貸主の審査に回す前に一覧にします。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- 不動産/金融
- 対象部門
- 営業
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 仲介会社から本人確認書類と収入証明が届く(FAX、メールのPDF、スマートフォンの写真)。申込ごとのフォルダに保存する
- 台帳の申込の行を開き、本人確認書類の画像と並べて、氏名(漢字とフリガナ)、生年月日、現住所を1項目ずつ見比べる
- 収入証明を開き、台帳の勤務先・年収を、支払者・支払金額と見比べる
- 本人確認書類の有効期限、収入証明の対象年を確かめる
- 食い違いがあれば、仲介会社に確認を頼むメールを書く
- そろったら、家賃保証会社と貸主に審査を依頼する
- 人受け取った書類を申込ごとのフォルダに保存し、台帳の状態を「書類そろい」にする
- 自動定時の処理が「書類そろい」の行を拾い、ファイルの形式と寸法を確かめる
- 自動本人確認書類は ID ドキュメントモデル、収入証明はレイアウトモデルで読み取り、値と信頼度を返す
- 自動台帳の申込書の値と、読み取った値を、決まった項目名にそろえる
- 自動生成AIが項目ごとに、`match` / `mismatch` / `explainable` / `unreadable` / `not_in_document` を付ける
- 自動本人確認書類の有効期限と、収入証明の対象年を規則で確かめる
- 自動項目ごとの結果から、`ready` / `ask_agent` / `needs_human` を機械的に決める
- 自動`ask_agent` のものについて、仲介会社への確認依頼の下書きを作る
- 人担当者が `ask_agent` と `needs_human` のものを開き、元の画像で該当箇所を確かめる
- 人確認依頼の下書きを直して仲介会社へ送る。`ready` のものは審査に回す
各工程の詳しい説明を読む
- 仲介会社から本人確認書類と収入証明が届く(FAX、メールのPDF、スマートフォンの写真)。申込ごとのフォルダに保存する
- 台帳の申込の行を開き、本人確認書類の画像と並べて、氏名(漢字とフリガナ)、生年月日、現住所を1項目ずつ見比べる
- 収入証明を開き、台帳の勤務先・年収を、支払者・支払金額と見比べる
- 本人確認書類の有効期限、収入証明の対象年を確かめる
- 食い違いがあれば、仲介会社に確認を頼むメールを書く
- そろったら、家賃保証会社と貸主に審査を依頼する
(a)不備が審査の途中で見つかる。 2番から4番を急いで済ませ、保証会社から「生年月日が本人確認書類と違う」「収入証明が前々年のもの」と戻されることがあります。戻ってきたときには、申込者は審査の結果を待っています。 そこから仲介会社に連絡し、書類を出し直してもらうので、数日が消えます。
(b)書類ごとに見る場所が違う。 年収は、源泉徴収票では「支払金額」、給与明細では月の総支給額、確定申告書では収入や所得の欄にあります。台帳の「年収」とどれを比べるかを、担当者がその場で決めています。 月収を12倍するか、賞与を足すかも人によって違います。
(c)説明のつく違いの扱いが人によって違う。 免許証の表の住所が旧住所で裏面に新住所がある、旧姓の源泉徴収票、マンション名の省略、字体の違い。確認依頼に回すか、そのまま通すかを担当者ごとに決めています。 ある担当が通したものを、別の担当は差し戻します。
(d)読み違えたまま差し戻す。 FAXでつぶれた番地や生年月日を読み違え、「食い違いあり」として仲介会社に確認を頼むと、「書いてあるとおりです」と返ってきます。
- 【人】 受け取った書類を申込ごとのフォルダに保存し、台帳の状態を「書類そろい」にする
- 【自動】 定時の処理が「書類そろい」の行を拾い、ファイルの形式と寸法を確かめる
- 【自動】 本人確認書類は ID ドキュメントモデル、収入証明はレイアウトモデルで読み取り、値と信頼度を返す
- 【自動】 台帳の申込書の値と、読み取った値を、決まった項目名にそろえる
- 【自動】 生成AIが項目ごとに、
match/mismatch/explainable/unreadable/not_in_documentを付ける - 【自動】 本人確認書類の有効期限と、収入証明の対象年を規則で確かめる
- 【自動】 項目ごとの結果から、
ready/ask_agent/needs_humanを機械的に決める - 【自動】
ask_agentのものについて、仲介会社への確認依頼の下書きを作る - 【人】 担当者が
ask_agentとneeds_humanのものを開き、元の画像で該当箇所を確かめる - 【人】 確認依頼の下書きを直して仲介会社へ送る。
readyのものは審査に回す
9番目が、この設計の分かれ目です。 人が時間を使うのは、食い違いが出たものと読み取れなかったものだけです。ready と出たものは、項目ごとの結果を台帳で流し見て審査に回します。全件を最初から見直す運用にすると、56.0時間はほとんど減りません。
7番目を規則で決めているのも意図してのことです。 どの食い違いを仲介会社に確かめるかは自社の取り決めで、保証会社の要件が変われば変わります。AIには食い違いの事実だけを記録させ、扱いは規則の側に置きます。
02今回想定するシステム構成
本人確認書類・収入証明(FAX・PDF・写真) │ 申込ごとのフォルダへ ▼【トリガー】受付台帳の状態が「書類そろい」(定時に確認) Google Apps Script ├──▶ 形式・寸法の確認、マイナンバーカード裏面の除外 ▼ Azure AI Document Intelligence │ 本人確認書類 … ID ドキュメントモデル(prebuilt-idDocument) │ 収入証明 … レイアウトモデル+キーと値のペア(keyValuePairs) ▼ Google Apps Script ── 台帳の申込書の値と、読み取った値の項目名をそろえる ▼ Claude API ── 項目ごとの突き合わせ │ ① 氏名(漢字) ② フリガナ ③ 生年月日 │ ④ 現住所 ⑤ 勤務先 ⑥ 年収 ▼ 判定(そろっている ready / 確認依頼 ask_agent / 判断不能 needs_human) ▼ 【人が食い違いのものだけ確認】 ├──▶ Claude API ── 仲介会社への確認依頼の下書き └──▶ 審査へ(人が依頼)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(ID ドキュメントモデル、レイアウトモデル) | Google Document AI |
| 生成AI | Claude API(項目ごとの突き合わせと確認依頼の下書き) | OpenAI API、Gemini API |
| 連携 | Google Apps Script(台帳の確認、読み取りの呼び出し、結果の書き戻し) | Power Automate、Make |
| 保管 | Google ドライブ(申込ごとのフォルダ) | Microsoft SharePoint、Box |
| 賃貸管理 | 既存の賃貸管理システム | 各社の製品 |
AWS Textract を外したのは、日本語を読めないためです。 公式の上限の一覧では、対応言語は英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語で、縦書きの文字には対応しないとされています。本人確認書類を読む AnalyzeID も、米国のパスポートと米国の運転免許証だけが対象です。
本人確認書類には ID ドキュメントモデルを使います。 公式には、v4.0(2024-11-30 GA)で世界中のすべてのリージョンの ID ドキュメントをサポートするとされ、全世界のパスポートのほか、「その他」の地域として運転免許証・身分証明書・居住許可証が挙げられています。ただし日本の書類が国名で明記されているわけではありません。 日本の運転免許証や在留カードで項目がどこまで取れるかは、第8章の試行で必ず確かめます。取れない書類は、レイアウトモデルの読み取りに切り替えます。
収入証明にはレイアウトモデルと keyValuePairs を使います。 以前の prebuilt-document モデルが担っていたキーと値のペアの抽出が、レイアウトモデルの機能として加わったとされ、料金の区分は無料のアドオンです。そして、キーが検出されても値が無い場合は、キーが単独で存在することがあるとされています。 源泉徴収票の「支払金額」の欄が空のまま届いた場合、項目名があることを値があることと取り違えない設計が要ります。
03どうやって実装するのか
処理の起点を決める
受付台帳の状態が「書類そろい」になった行を、10分おきの定時の処理で拾います。 Apps Script のインストール型トリガーには時間主導型があり、公式には最短で1分ごとから月1回まで設定できるとされています。ドライブへのファイル追加を直接きっかけにするトリガーは、確認した一覧にはありませんでした。
ファイルが届いたことではなく、書類がそろったことを起点にするのには理由があります。 本人確認書類が先に届き、収入証明が翌日に届くことはよくあります。ファイルが届くたびに動かすと、毎回「収入証明が無い」という結果が出て、担当者がそれを見なくなります。
処理を終えた行は「点検済み」に、失敗した行は「点検エラー」に変えます。 「書類そろい」のまま残っている行の数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 申込書の値 | 申込者の氏名・フリガナ・生年月日・現住所・勤務先・年収・勤務形態 | 受付台帳(転記済み) |
| 本人確認書類 | 運転免許証、マイナンバーカードの表面、在留カード、パスポートのいずれか。表と裏の両方 | 申込ごとのフォルダ |
| 収入証明 | 源泉徴収票、給与明細、確定申告書の控え、内定通知書のいずれか | 同上 |
| 字体の対応表 | 「髙/高」「﨑/崎」「邊/邉/辺」など、同じ字として扱う組 | 自社で用意する一覧 |
| 年収の比べ方の表 | 書類の種類ごとに、どの欄を年収として比べるか | 自社で用意する一覧 |
質を決めるのは、下の2つです。 字体の対応表が無いと、申込書の「高」と免許証の「髙」を別の字として不一致にします。 年収の比べ方の表が無いと、比べる欄をAIがその都度選ぶことになり、担当者ごとの揺れがAIに移るだけです。
本人確認書類は必ず裏面も受け取ります。 運転免許証は住所が変わると裏面に新しい住所が書かれます。表だけを読むと、引っ越した人の申込はすべて住所の食い違いになります。 マイナンバーカードは表面だけを受け取る運用にします。この点検で個人番号は使いません。
データの取得方法を決める
- 受付台帳から「書類そろい」の行を読み、申込番号でフォルダを特定する
- フォルダ内のファイル名の先頭(
本人_、収入_)で書類の種類を仮に決める - 本人確認書類は
prebuilt-idDocument、収入証明はprebuilt-layoutにfeatures=keyValuePairsを付けて送る - 返ってきたJSONをフォルダに保存し、台帳の申込書の値とあわせて次の段へ渡す
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 氏名・生年月日・住所・有効期限 | ID ドキュメントモデルの documents の fields | 本人確認書類との突き合わせ |
| キーと値のペア | レイアウトモデルの keyValuePairs | 源泉徴収票の支払者・支払金額など |
| 表 | tables の cells | 給与明細の総支給額の欄 |
| 選択マーク | selectionMarks の state | 確定申告書のチェック欄 |
| 信頼度 | 各値の confidence | unreadable の判定 |
源泉徴収票のように項目名が決まった書類では、クエリ フィールドも使えます。 公式には、抽出したいフィールド名を指定すると値を返すアドオンで、1回の要求で最大20個まで指定できるとされています。ただしプレミアムのアドオンで、料金の区分が別です。 まずは無料の keyValuePairs で組み、取りこぼしの多い書類だけに使います。
AIへ渡す前に整形する
- 形式の確認 … PDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であることを確かめます。それ以外はPDFに変換します
- 画像の寸法の確認 … 50×50ピクセルから10,000×10,000ピクセルの間である必要があります
- 文字の大きさの確認 … 抽出するテキストの最小の高さは、1024×768の画像で12ピクセルとされています。FAXの受信画像はこれに近いことが多いので、寸法を記録しておきます
- ロックの解除 … パスワードでロックされたPDFは、提出前に解除する必要があります
- マイナンバーカード裏面の除外 … ファイル名や仲介会社からの連絡で裏面と分かるものは、読み取りに回さず担当者へ戻します
- 項目名のそろえ … 台帳の列名と、読み取った値の名前を
name_kanji、birth_dateのように1つの名前にそろえます - 字体の正規化 … 対応表にある字を、比べるときだけ同じ字に置き換えます。元の値は置き換えずに残します
7番目で元の値を残すのは、確認依頼の文面に正確な表記が要るためです。 置き換えた字で「高橋様の申込で」と書くと、申込者の書いた字と違ってしまいます。
AIに処理させる
させるのは、6つの項目それぞれの突き合わせだけです。
| 見るもの | 比べる相手 | 判断できないときの扱い |
|---|---|---|
| 氏名(漢字) | 本人確認書類、収入証明 | 字体の違いだけ、旧姓の書類なら explainable |
| フリガナ | 本人確認書類(パスポートはローマ字) | 本人確認書類に読みが無ければ not_in_document |
| 生年月日 | 本人確認書類 | 和暦と西暦の違いは換算して比べる。読めなければ unreadable |
| 現住所 | 本人確認書類(裏面の記載を優先) | 建物名・部屋番号の省略だけなら explainable |
| 勤務先 | 収入証明の支払者・会社名 | 「株式会社」の前後、略称だけなら explainable |
| 年収 | 年収の比べ方の表で決めた欄 | 何と比べたかを basis に書く。比べられなければ not_in_document |
右端の列の区別が、この構成でいちばん大事です。 mismatch は書類どうしが合っていない、explainable は違うが理由の見当がつく、unreadable は値として確定できない、not_in_document はその書類にその項目が無い、ということです。仲介会社に確かめるのは mismatch だけで、unreadable は自社で画像を見直せば済みます。
分ける材料は、読み取りが返した confidence です。 値が無ければ not_in_document、値があって信頼度が低ければ unreadable。根拠をOCRが返した数値に置きます。
| させないこと | 理由 |
|---|---|
| 入居を認めるか、保証を付けるかの判断 | 審査は貸主と保証会社が決める |
| 収入の多い少ないの評価 | 家賃に対して足りるかは審査の基準 |
| 読めない文字の補完 | 台帳の値で埋めると、食い違いが消える |
| 本人確認書類が本物かの判定 | 画像から真偽は決められない。原本の確認は店頭で行う |
| 国籍や在留資格による区別 | この点検では扱わない |
3行目がいちばん起きやすい失敗です。 FAXで番地の数字がつぶれていると、台帳の値から埋めて match にしがちです。その瞬間、読めなかったという事実が消えます。
指示内容を固定する
あなたは賃貸管理会社の受付担当で、入居申込の書類どうしの記載が合っているかを点検します。
入居を認めるかどうかの判断はしません。書類に書かれていることだけを比べてください。
【比べる6項目】
1. 氏名(漢字) 2. フリガナ 3. 生年月日 4. 現住所 5. 勤務先 6. 年収
【status の選び方】
- match ............ 書類どうしで一致している
- mismatch ......... 書類どうしで違っており、下の explainable に当たらない
- explainable ...... 違うが、次のどれかに当たる
字体の対応表にある字の違い/旧姓の書類/建物名・部屋番号の省略/
「株式会社」の位置や略称の違い/和暦と西暦の違い
- unreadable ....... 値は検出されているが confidence が {threshold} 未満、または字がつぶれている
- not_in_document .. 比べる相手の書類に、その項目の値が無い
迷ったときに match を選ばないでください。
【厳守事項】
- 読めない文字を、申込書の値で補って埋めないでください。
- 項目名だけがあって値が空の場合は not_in_document です。
項目名があることを、値があることとして扱わないでください。
- 現住所は、本人確認書類の裏面に新しい住所の記載があれば、そちらと比べ、
どちらと比べたかを basis に書いてください。
- 年収は【年収の比べ方の表】に従い、比べた欄を basis に書いてください。
差を「許容範囲」と判断せず、差額をそのまま diff に入れてください。
- evidence には、各書類から読み取った文字列をそのまま写してください。
- confidence は読み取り結果の値をそのまま入れてください。
- 入居の可否、収入が足りるか、書類が本物かは書かないでください。
- 国籍、在留資格、年齢について評価を書かないでください。
- 個人番号の記載を見つけた場合は、値を写さずに contains_my_number を true にしてください。
【申込書の値(台帳)】{application}
【本人確認書類の読み取り結果(表・裏)】{identity}
【収入証明の読み取り結果】{income}
【字体の対応表】{variant_table}
【年収の比べ方の表】{income_rule}
「迷ったときに match を選ばない」を書かないと、一致が増えます。 値が似ていると一致と答えがちで、それが見落としになります。 迷ったら人に回る側へ倒します。
「差を許容範囲と判断しない」も同じ理由です。 年収の50万円の差を許すかは保証会社の要件で決まり、AIが「おおむね一致」と書くと、その判断が誰のものか分からなくなります。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力を使い、output_config.format に type: "json_schema" とスキーマを渡します。公式には、スキーマのすべてのオブジェクトに additionalProperties: false が必要とされています。
{
"application_no": "",
"contains_my_number": false,
"checks": [
{ "item": "name_kanji", "status": "match | mismatch | explainable | unreadable | not_in_document",
"application_value": "", "document_value": "", "compared_with": "",
"basis": "", "diff": "", "confidence": 0, "evidence": "" }
],
"identity_expiry": "",
"income_year": "",
"verdict": "ready | ask_agent | needs_human",
"agent_request_draft": ""
}
checks には6つの要素を並べます。item は name_kanji / name_kana / birth_date / address / employer / annual_income です。
1つ目の理由は、status と verdict を別の層に置けることです。 checks はAIが埋め、verdict は Apps Script の規則で決めます。保証会社の要件が変わっても、直すのは規則だけです。
| 条件 | verdict |
|---|---|
6項目がすべて match か explainable、有効期限内、収入証明が直近の年 | ready |
mismatch が1つでもある、有効期限切れ、古い収入証明、年収の diff が自社の幅を超える | ask_agent |
unreadable が1つでもある、個人番号を検出した | needs_human |
2つ目の理由は、数値の範囲を規則の側で持てることです。 公式には、構造化出力では minimum や maximum といった数値の制約はサポートされないとされています。年収の差の許容幅はスキーマで縛れないので、diff を受け取ってから Apps Script で比べます。
3つ目は、evidence と compared_with で確認が速くなることです。 どの書類のどの文字列と比べたかが一覧で読めるので、画像を開く前に、食い違いが本物か見当がつきます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付台帳 | Apps Script の定時実行 | 「書類そろい」の行と申込書の値を読み、結果と状態を書き戻す |
| Google ドライブ | Apps Script | 申込ごとのフォルダのファイルを読み、読み取り結果を保存する |
| Azure AI Document Intelligence | REST API | ID ドキュメントモデルとレイアウトモデルの呼び出し |
| Claude API | API呼び出し | 6項目の突き合わせと、確認依頼の下書き |
台帳には、項目ごとの結果を列で書き戻します。 6列に status を入れ、verdict を先頭の列に置きます。担当者は台帳を verdict で並べ替えるだけで、今日見るものが分かります。
台帳の申込書の値は書き換えません。 本人確認書類のほうが正しそうに見えても、直すかどうかは仲介会社に確かめてから人が決めます。 賃貸管理システムにも書き込みません。確認依頼の下書きは台帳の行にリンクを付けて置き、送信は担当者がメールから行います。
人が確認する
人が開くのは ask_agent と needs_human のものだけです。 ready のものは台帳で6列の結果を流し見て、審査に回します。
needs_humanを先に見る …unreadableを含むものは、元の画像を拡大して自分で読みます。読めなければ仲介会社に再送を頼みますmismatchを画像で確かめる …evidenceの文字列を元の画像と見比べ、本当に書類どうしが違うかを目で確かめますexplainableを認める … 旧姓の書類などは、そのまま通してよいかを担当者が決めます- 確認依頼の下書きを直して送る … どの書類のどの項目がどう違うかが書かれているかを見ます
- 判定を覆したら記録する … どの項目を、どの
statusからどれに変えたか
2番目を省かないでください。 mismatch は、申込者に書類を出し直してもらうことに直結します。空振りの差し戻しは、仲介会社との関係に残ります。
目標は、240件をならして1件4分です。 ready のものは台帳を見るだけで短く、ask_agent と needs_human のものは画像を見て下書きを直すので長くかかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 書類が1種類足りない | 読み取り前に「書類不足」として台帳に戻す |
| 1つのPDFに書類がまとまっている | ページで分け、分けられなければ needs_human |
| 日本の本人確認書類で ID モデルの項目が取れない | レイアウトモデルで読み直し、項目名は対応表でそろえる |
| 画像の寸法・文字の大きさが下限に近い | 結果に印を付け、unreadable を人が見る |
| パスワード付きのPDF | 提出前に解除が必要。仲介会社に解除して送ってもらう |
| マイナンバーカードの裏面が届いた | 読み取りを止めて担当者へ。結果にも値を残さない |
| 法人契約で本人確認書類が無い | 最初は対象から外し、個人で運用が回ってから規則を足す |
| 読み取りのAPIが応答しない | 台帳の状態を「書類そろい」のまま残し、次の定時で再実行 |
上から4行目までが、件数の大半を占めます。 どれもAIの問題ではなく、書類の受け取り方の問題です。 仲介会社に「書類ごとにファイルを分ける」「免許証は裏面も」と頼むほうが、判定を直すより効きます。
記録を残す
- 受け取った書類の元ファイルと、受け取った日時・経路(FAX/PDF/写真)
- 読み取りが返したJSONの全文(個人番号を含むページは保存しない)
- 突き合わせの結果(
checks、verdict)と、そのとき使った字体の対応表・年収の比べ方の表・規則の版 - 人が判定を覆した記録 … どの項目を、どの
statusからどれに変えたか - 仲介会社へ確認を頼んだ日時と、再提出された書類との対応
- 仲介会社ごとの
unreadableとmismatchの発生率
3つ目で規則の版を残すのは、年収の許容幅が後から変わるためです。 幅を直すと、過去に ready とした申込の意味が変わります。 当時の規則が残っていないと、どこまで見直すかが決まりません。
04実装レベルの3段階
最小構成では件数がさばけません。 黒塗りと貼り付けに時間がかかるので、確かめるための段階です。 半自動化で、1件14分が7分程度になります。 読み取りと突き合わせは自動になりますが、有効期限の確認と確認依頼の作成が手作業で残ります。本格構成で4分になり、この段階が本記事の想定です。 半自動化の1か月で、年収の比べ方の表を固めてから進みます。
05工数削減シミュレーション
導入後 240件 × 4分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 賃貸管理会社・賃貸仲介会社のうち、入居申込を月に百件単位で受け付け、申込書と本人確認書類・収入証明を担当者が並べて目で突き合わせている場合。家賃保証会社や貸主から「生年月日が本人確認書類と違う」「収入証明が古い」といった理由で差し戻しが繰り返されている場合。突き合わせの基準が担当者ごとに違う場合。
- 申込をすべて自社のWeb申込の画面で受け付け、本人確認と収入証明の確認もその仕組みの中で済んでいる場合。月の申込が数十件で、目視で足りる場合。入居を認めるかどうかの審査そのものを自動化したい場合(この構成は食い違いを洗い出すまでで、審査の判断は代替しません)。
07最小構成で試す方法
- 先月受け付けた申込から20件を選ぶ(うち数件は、保証会社から差し戻されたことが分かっているものを入れる)
- 20件の書類について、個人を特定できる部分を黒塗りしたコピーを作る
- Document Intelligence Studio で、本人確認書類を ID ドキュメントモデル、収入証明をレイアウトモデルにかけ、日本の書類で項目がどこまで取れるかを見る
- 読み取り結果と台帳の値を手元の生成AIの画面に貼り、「6項目を、一致・不一致・理由のつく違い・読めない・書類に無い の5つに分けてください。読めない文字を申込書の値で補わないでください」と指示する
- 出てきた判定を、当時の担当者の点検の結果と保証会社からの差し戻しの理由と突き合わせる
| 出てきた内容 | 判断 |
|---|---|
保証会社が差し戻した食い違いが mismatch で出た | 読み取りと台帳の連携に進む |
| 日本の本人確認書類で ID モデルの項目が取れない | その書類はレイアウトモデルに切り替える |
| 読めない文字を申込書の値で埋めて一致にした | 指示の書き方で直る。構成は有効 |
| 字体や旧姓の違いを不一致にした | 字体の対応表と旧姓の扱いを先に作る |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
読めない文字を申込書の値で埋めて match になる | 補完を禁じ、unreadable を必ず人に回す |
| 項目名だけがあって値が空の欄を一致にする | キーが単独で存在することがある。 値の有無で判定する |
字体の違いで mismatch が大量に出る | 字体の対応表を作り、比べるときだけ置き換える |
| 引っ越した人の住所がすべて食い違いになる | 免許証は裏面も受け取り、裏面の記載を優先して比べる |
| 年収の比べ方が申込ごとに揺れる | 書類の種類ごとの比べ方の表を作り、basis を必ず書かせる |
| 年収の差をAIが「おおむね一致」と書く | 差額を diff に入れさせ、許容幅は規則で持つ |
| 日本の本人確認書類で ID モデルの項目が取れない | 公式の一覧に国名での明記が無い。 試行で確かめ、取れなければレイアウトモデルへ |
| AWS Textract で組もうとして日本語が読めない | 対応言語に日本語が無い。 選定の段階で確かめる |
| 確認依頼が自動で送られる | 下書きまでにする。 送信は人が行う |
上の2行が、運用に乗るかどうかを決めます。 どちらも「書類に書かれていないことを、書かれているように扱う」という同じ失敗です。値の有無と信頼度で判定しているかどうかで、見落としの数が決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 申込者の氏名、生年月日、現住所、勤務先、年収、本人確認書類の画像。個人情報のなかでも、収入と本人確認書類の画像は特に重い情報です。
- 個人番号を扱わない … この点検に個人番号は要りません。マイナンバーカードは表面だけを受け取る運用にし、裏面が届いたら読み取りに回さず、結果にも値を残さないでください
- 外部へ渡す範囲を絞る … 生成AIに渡すのは6項目に関係する値と根拠の文字列だけにし、本人確認書類の画像そのものは渡さない設計にできます
- 審査の判断をさせない … 入居の可否、保証の可否はこの構成では扱いません。AIに可否を書かせると、その判断の責任の所在が分からなくなります
- 国籍・在留資格・年齢で区別しない … 在留カードは本人確認書類の1つとして読むだけです。点検の結果に国籍や在留資格の評価を持ち込まないでください
- 確認依頼を自動で送らない … 出すのは下書きまでです。仲介会社の先には申込者がいます
- 入居に至らなかった申込の書類を残しすぎない … 保存の期間を先に決め、期限が来たらフォルダごと消します
誤りが起きた場合のリスクは、食い違いを見落として審査に回すことと、食い違いでないものを差し戻すことの2つです。 前者は unreadable を match に混ぜると起き、後者は explainable を mismatch に混ぜると起きます。どちらも区別の置き方で防ぎます。
10まず何から始めるか
1週目:過去の差し戻しを数える
先月と先々月に保証会社や貸主から戻ってきた申込を集め、どの項目の食い違いだったかを数えます。生年月日なのか、住所なのか、年収なのか。多い項目から、突き合わせの規則を作ります。
2週目:20件で試す
黒塗りした20件の書類を Studio にかけ、日本の本人確認書類で ID ドキュメントモデルの項目がどこまで取れるかを確かめます。そのうえで生成AIに6項目の突き合わせをさせ、読めない文字を埋めていないかを最優先で見ます。
3週目:2つの表と許容幅を決める
字体の対応表と、書類の種類ごとの年収の比べ方の表を作ります。あわせて、年収の差をどこまで許すかを、保証会社の要件に合わせて決めます。 個人情報を外部のサービスに渡すことについての社内の取り決めも、ここで済ませます。
4週目:台帳から突き合わせまでをつなぐ
Apps Script で台帳の「書類そろい」を拾い、読み取りを呼び、6項目の結果を台帳に書き戻すところまで作ります。この時点では verdict を出さず、checks の6列だけを見ます。
2か月目: 有効期限と対象年の規則、verdict の決め方を足し、ask_agent と needs_human の件数を毎週数えます。3か月目以降: 確認依頼の下書きを足し、1件14分が何分になったかを実測します。仲介会社ごとの unreadable の発生率を見て、書類の受け取り方を仲介会社と相談した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
ID ドキュメントモデル(prebuilt-idDocument)が v4.0(2024-11-30 GA)で世界中のリージョンの ID ドキュメントをサポートし、全世界のパスポートと「その他」の地域の運転免許証・身分証明書・居住許可証を対象とすること(日本の書類の国名での明記は無い)。入力がPDFと画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であること。画像が50×50から10,000×10,000ピクセル、テキストの最小高さが1024×768で12ピクセルであること。パスワード付きPDFは提出前に解除が必要なこと | Microsoft Learn: ID ドキュメント モデル | 2026-09-29 |
レイアウトモデルに keyValuePairs の機能が加わり、以前の prebuilt-document と同じ結果を返すこと。キーと値のペアが無料の区分であること。キーが検出されても値が無い場合、キーが単独で存在することがあること。クエリ フィールドがプレミアムのアドオンで、1回の要求で最大20個のフィールドをサポートすること | Microsoft Learn: アドオン機能 | 2026-09-29 |
Amazon Textract の対応言語が英語・フランス語・ドイツ語・イタリア語・ポルトガル語・スペイン語であること。縦書きの文字に対応しないこと。AnalyzeID が米国のパスポートと米国の運転免許証だけに対応すること | AWS: Set Quotas in Amazon Textract | 2026-09-29 |
構造化出力が output_config.format に type: "json_schema" とスキーマを渡して使うこと。すべてのオブジェクトに additionalProperties: false が必要なこと。minimum や maximum などの数値の制約がサポートされないこと | Claude Docs: Structured outputs | 2026-09-29 |
| Apps Script のインストール型トリガーに時間主導型があり、最短で1分ごとから月1回まで設定できること。確認した一覧に、ドライブへのファイル追加をきっかけにするトリガーが無いこと | Google Apps Script: Installable Triggers | 2026-09-29 |
入居の可否と保証の可否は、貸主・保証会社と自社の審査の担当者で決めてください。 本記事は Microsoft、AWS、Claude、Google Apps Script の公式ドキュメントで確認できた範囲だけを扱っています。日本の本人確認書類に特化した読み取りのモデルは、確認した範囲では見当たりませんでした。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0374)についてのご相談はこちらから。
