保険会社に郵送で届く手書きの住所・氏名の変更届を読み取り、証券番号・新しい住所・届出日を事務の入力項目にそろえて、記入漏れと印の欠けを拾う
郵送で届く手書きの住所・氏名の変更届を読み取り、証券番号・変更の対象・新しい住所・届出日を契約管理の入力項目にそろえます。記入漏れ、印の欠け、郵便番号と住所の食い違いは、入力の前に印を付けて返します。
- 生成AI
- ChatGPT/Claude
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- 保険/金融
- 対象部門
- カスタマーサポート
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 郵便で届いた届を開封し、受付日の印を押して複合機でスキャンする
- 担当者が届のPDFを開き、証券番号を契約管理システムで1件ずつ検索する
- 画面の契約者名・登録住所と、届の氏名・旧住所を見比べる
- 変更の対象のチェックを見て、契約者・被保険者・受取人のどの住所を変えるかを決める
- 新しい住所と郵便番号、電話番号を入力画面に打ち込む
- 記入漏れ、印の欠け、読めない字があれば入力を止め、返送の一覧に書き出す
- 返送のものは不備の箇所を書いた案内を付けて契約者に送り、届いたものは別の担当が入力内容を確かめる
- 人届を開封し、受付日を記録して複合機でスキャンする(1枚の届を1つのPDFにする)
- 自動Python のプログラムが15分おきに共有フォルダを確かめ、新しいPDFを取り出す
- 自動Google Document AI の Form Parser が、欄のキーと値、チェック欄の状態、それぞれの信頼度と位置を返す
- 自動Claude API が、読み取り結果を「届の見出し」と「証券番号ごとの行」に、書かれたとおりに写す。印の欄の画像を見て、印があるかを答える
- 自動Python が、証券番号を契約管理システムの写しで引き当て、氏名と旧住所を照らし、郵便番号を日本郵便の郵便番号データで照らす
- 自動契約ごと・役割ごとの入力行を「入力待ち」の一覧に書き、印の付いた届は「確認待ち」の一覧に、届の画像のリンクとともに載せる
- 人担当者が、印の無い届を一覧で流し見て、契約管理システムの一括取込に回す
- 人担当者が、確認待ちの届を見て、返送するか、補って入力するか、上席に回すかを決める
各工程の詳しい説明を読む
- 郵便で届いた届を開封し、受付日の印を押して複合機でスキャンする
- 担当者が届のPDFを開き、証券番号を契約管理システムで1件ずつ検索する
- 画面の契約者名・登録住所と、届の氏名・旧住所を見比べる
- 変更の対象のチェックを見て、契約者・被保険者・受取人のどの住所を変えるかを決める
- 新しい住所と郵便番号、電話番号を入力画面に打ち込む
- 記入漏れ、印の欠け、読めない字があれば入力を止め、返送の一覧に書き出す
- 返送のものは不備の箇所を書いた案内を付けて契約者に送り、届いたものは別の担当が入力内容を確かめる
(a)打ち込みが多い。 1枚の届に証券番号が2〜3件書かれることは珍しくなく、新しい住所を契約の数だけ打ち込みます。 番地や建物名の長い住所は、1か所打つだけで1分近くかかります。
(b)役割の打ち漏れ。 変更の対象に「契約者」と「被保険者」の両方にチェックがあっても、契約者の住所だけを変えて次の届に進んでしまうことがあります。打ち漏れは画面の上では見えず、次の通知が旧住所に届いて初めて分かります。
(c)記入漏れに気づくのが入力の途中。 届出日や印の欄の空きは、入力を半分進めたところで気づくことが多く、そこまでの入力を破棄して返送の一覧に書きます。届出日の空きを返送するか、受付日で補ってよいかは、担当者によって判断が分かれています。
(d)郵便番号と住所が合わない。 転居前の郵便番号を書いた届があります。どちらを正とするかを担当者がその場で決めて打ち込んでいるので、後から理由が分かりません。
- 【人】 届を開封し、受付日を記録して複合機でスキャンする(1枚の届を1つのPDFにする)
- 【自動】 Python のプログラムが15分おきに共有フォルダを確かめ、新しいPDFを取り出す
- 【自動】 Google Document AI の Form Parser が、欄のキーと値、チェック欄の状態、それぞれの信頼度と位置を返す
- 【自動】 Claude API が、読み取り結果を「届の見出し」と「証券番号ごとの行」に、書かれたとおりに写す。印の欄の画像を見て、印があるかを答える
- 【自動】 Python が、証券番号を契約管理システムの写しで引き当て、氏名と旧住所を照らし、郵便番号を日本郵便の郵便番号データで照らす
- 【自動】 契約ごと・役割ごとの入力行を「入力待ち」の一覧に書き、印の付いた届は「確認待ち」の一覧に、届の画像のリンクとともに載せる
- 【人】 担当者が、印の無い届を一覧で流し見て、契約管理システムの一括取込に回す
- 【人】 担当者が、確認待ちの届を見て、返送するか、補って入力するか、上席に回すかを決める
6番目が、この設計の分かれ目です。 1枚の届を、証券番号×役割の数だけの行に展開してから人に見せます。 3件×2役割の届なら6行が並び、担当者は行の数で打ち漏れが無いことを確かめられます。
契約管理システムへの反映は、人が一括取込に回した行だけです。 読み取った住所がそのまま登録住所になる経路は作りません。
02今回想定するシステム構成
住所・氏名の変更届(手書き、郵送) │ 開封・受付日の記録・スキャン(1枚1PDF) ▼【トリガー】Python の定時実行(15分おき) Python ── 新しいPDFを取り出す ▼ Google Document AI(Form Parser) │ 欄のキーと値、チェック欄、信頼度、位置 ▼ Claude API ── 見出しと証券番号ごとの行に、書かれたとおりに写す │ 印の欄の切り出し画像を見て、印の有無を答える ▼ Python ── 証券番号の引き当て/氏名・旧住所の照合/郵便番号データとの照合 ▼ 「入力待ち」一覧 ──▶ 印の付いた届は「確認待ち」一覧へ(届の画像のリンク) ▼ 【担当者が流し見て一括取込に回す/確認待ちを判断する】 ▼ 契約管理システムの一括取込(人の操作)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(読み取り結果を入力項目に写す、印の欄の有無を答える) | OpenAI API |
| 連携 | Python(フォルダの確認、各APIの呼び出し、一覧への書き込み) | Google Apps Script |
| 差異計算 | Python(証券番号の引き当て、旧住所の照合、郵便番号の照合) | Google Apps Script |
| 保管 | 社内のファイルサーバー(届のPDFと読み取り結果) | 社内の文書管理システム |
新しく足すのは、日本郵便の郵便番号データと、契約管理システムから出す照合用の写しです。 照合用の写しは、証券番号、契約者・被保険者・受取人の氏名と登録住所、届出印の有無の区分だけに絞り、夜間に出して翌日の照合に使います。
土台は Document AI の Form Parser です。 公式のページでは、Form Parser はキーと値のペア、表、チェックボックスなどの選択マーク、一般的なエンティティ、テキストを取り出すとされ、プロセッサの一覧で日本語(ja)は手書きに対応する言語として示されています。「証券番号」「新しいご住所」のようなラベルの付いた空欄に書き込む様式は、Form Parser が得意とする形と書かれています。
チェック欄は、塗られているかどうかが値の種類として返ります。 公式のページでは、チェックボックスは近くの文字をキーとしたキーと値のペアとして返り、valueType が filled_checkbox か unfilled_checkbox になるとされています。変更の対象(契約者・被保険者・受取人)は、この値で決めます。
注意書きのうち効くのは3つです。 ラジオボタンは読めないこと、値が空のキーと値のペアは確実には読み取れないこと、一部の言語ではキーと値の質がラテン文字より低いことがあることです(第7章)。
処理する場所は、リージョンの一覧から選びます。 マルチリージョンの us と eu、単一リージョンのシンガポール(asia-southeast1)などがあり、日本のリージョンはありません。 届には契約者の氏名・住所・電話番号が書かれるので、国外で処理してよいかを導入前に社内の規程で確かめます(第13章)。
03どうやって実装するのか
処理の起点を決める
Python のプログラムを15分おきに動かし、複合機の保存先の共有フォルダに新しいPDFがあるかを確かめます。 動かすのは社内のサーバーの定時実行の仕組みで、事務センターの開いている時間だけにします。
15分おきにするのは、午前の郵便で届いた届の確認待ちを、その日のうちに片づけるためです。 夜間にまとめると、3月・4月の繁忙期には確認待ちが数日分たまります。
処理が終わったPDFは「処理済み」のフォルダに移します。 移すのは一覧への書き込みが終わったときだけで、保存先のフォルダに残っている数が、そのまま未処理の数になります。 スキャンは1枚の届を1つのPDFにし、2人分の届が1件にまとまらないようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 変更届のPDF | スキャンした届の画像、受付日、スキャンした日時 | 複合機の保存先の共有フォルダ |
| 読み取り結果 | 欄のキーと値、チェック欄の状態、各要素の信頼度と位置 | Google Document AI |
| 印の欄の切り出し画像 | 様式で決まった位置の印の欄だけを切り出したもの | Python が届の画像から切り出す |
| 照合用の写し | 証券番号、契約者・被保険者・受取人の氏名と登録住所、届出印の有無の区分 | 契約管理システムから夜間に出したファイル |
| 郵便番号データ | 郵便番号、都道府県、市区町村、町域 | 日本郵便の郵便番号データ(CSV) |
| 受付の決まり | 届出日の空きの扱い、返送の基準、上席に回す条件 | 自社で用意する表 |
質を決めるのは、照合用の写しです。 写しに無い証券番号は引き当てられず、前日に別の手続きで住所が変わった契約は、写しの登録住所がすでに新しくなっています。
郵便番号データは、日本郵便が公開している1レコード1行・UTF-8形式のCSVを使います。 手元に置いて照合するので、届の住所を外部の検索サービスに送らずに済みます。
データの取得方法を決める
Python は、Document AI のクライアントライブラリで Form Parser のプロセッサに届のPDFを送ります。オンラインの処理は1回の要求で最大15ページなので、1枚の届は1回で足ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 欄のキーと値 | 各ページの formFields(fieldName/fieldValue) | 証券番号、旧住所、新しい住所、郵便番号、電話番号、新しい氏名、届出日、記入者 |
| チェック欄の状態 | fieldValue の valueType(filled_checkbox/unfilled_checkbox) | 変更の対象(契約者・被保険者・受取人) |
| 全文 | 応答の text | 欄として取れなかった値を本文から拾う |
| 信頼度 | 各要素の layout の confidence | 読めた字とかすれた字の区別 |
| 位置 | layout の boundingPoly | 確認のとき届の該当箇所を示す |
印の欄は、Form Parser のキーと値に頼りません。 公式のページでは、値の入っていないキーと値の組は確実には読み取れないとされています。印の欄はもともと文字の無い欄なので、押されていないのか、読み取りから落ちたのかを区別できません。 自社の様式で印の欄の位置は決まっているので、Python が届の画像からその範囲を切り出し、Claude API に画像として渡します。
公式のページでは、Claude API の画像は JPEG、PNG、GIF、WebP に対応し、最大8000×8000ピクセル、APIを直接使うときは1枚10MB(base64エンコード後)までとされています。切り出しはPNGにして小さく保ちます。証券番号と郵便番号は文字列のまま扱い、先頭の0を落としません。
AIへ渡す前に整形する
- 形式の確認 … 公式の対応形式は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などです。複合機の保存はPDFにそろえます
- 解像度の確認 … 公式のページでは、スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよいとされています。複合機の既定の設定を300dpiにしておきます
- 様式の確認 … 1ページ目の様式番号の位置に、自社の様式番号が読めるかを見ます。読めなければ、他社の書類か古い様式として確認待ちに回します
- 印の欄の切り出し … 様式で決まった位置から、印の欄と記入者の氏名の欄を切り出します
- 重複の確認 … 同じ証券番号で、受付日の近い届がすでにあれば、再送か訂正かを確かめる印を付けます
- 同封物の確認 … 2ページ目以降の別の書類は読み取りから外し、確認待ちに添えます
3番目を先に行うのは、印の欄の切り出しが様式の位置に頼っているからです。 古い様式では位置が違い、別の欄を切り出して「印なし」と答えることになります。
AIに処理させる
させるのは、読み取り結果を契約管理の入力項目に書かれたとおりに写すことと、印の欄の画像に印があるかを答えることです。 証券番号の引き当ても、旧住所の照合も、郵便番号の照合も、Python の規則で行います。
| させること | 中身 | 判断できないときの扱い |
|---|---|---|
| 見出しの写し | 届出日、記入者の氏名、電話番号、改姓のときの新しい氏名 | 読めなければ unreadable、空欄なら blank |
| 証券番号の写し | 書かれた証券番号をすべて、書かれた順に | 桁が欠けていれば unreadable |
| 変更の対象 | 契約者・被保険者・受取人のチェックの状態 | チェックが無ければ target_blank |
| 住所の写し | 旧住所、新しい住所、郵便番号を書かれたとおりに | 読めない字があれば unreadable |
| 住所の分け方 | 新しい住所を、都道府県・市区町村・町域・番地・建物名に分ける | 分けられなければ split_failed |
| 印の欄の判定 | 切り出した画像に、印らしい朱色の跡があるか | かすれて判断できなければ unclear |
5行目が、AIを使う理由の1つです。 手書きの住所は「〇〇市△△町1-2-3 □□マンション405」と1行に続けて書かれることも、番地と建物名を2行に分けて書かれることもあります。どこまでが町域でどこからが番地かを決めるのは、決まった規則では書きにくい作業です。
6行目は、印があるかだけを答えさせます。 届出印との照合は既存の仕組みと担当者が行います。
| させないこと | 理由 |
|---|---|
| 読めない証券番号の桁を補う | 別の人の契約を引き当てると、その人の住所が書き換わる |
| 郵便番号を住所から補う、直す | 住所と郵便番号のどちらが正しいかは本人に確かめる |
| 届出日の空きを受付日で埋める | 空きを補ってよいかは受付の決まりで決める |
| 旧住所と登録住所の食い違いを判断する | 本人からの届と認めるかは担当者と上席が決める |
| 印影が届出印と同じかを答える | 照合は既存の仕組みと人が行う |
1行目が、この題材でいちばん重い失敗です。 補った番号がたまたま別の契約の番号だと、別の契約者への通知がすべて他人の住所に届きます。 読めない桁は読めないまま返させ、引き当てられなければ確認待ちにします。
指示内容を固定する
あなたは保険会社の契約サービスの事務担当で、郵送で届いた
住所・氏名の変更届の読み取り結果を、入力項目に写す立場です。
OCRが返した結果と、添付の印の欄の画像だけを見て答えてください。
【写す項目】
見出し:filing_date_text(届出日。書かれたとおり)、writer_name、
phone_text、new_name(改姓のときの新しい氏名)
証券番号:policy_numbers(書かれたものをすべて、書かれた順に)
変更の対象:target_policyholder、target_insured、target_beneficiary
(チェックの状態。checked/unchecked/unclear)
住所:old_address_text、new_address_text、new_postal_code_text
住所の分割:prefecture、city、town、block、building
印の欄:seal(present/absent/unclear)
【厳守事項】
- 証券番号と郵便番号は、書かれたとおりの文字列で写してください。
読みにくい桁を、ありそうな数字に直さないでください。
読めない桁があれば、その項目の status を unreadable にしてください。
- 郵便番号を住所から補ったり、住所に合わせて直したりしないでください。
- 届出日が空欄なら filing_date_text を空にし、status を blank に
してください。他の日付(受付日の印など)で埋めないでください。
- 新しい住所を分けるときは、書かれた文字だけを使ってください。
丁目・番地の書き方を「1-2-3」や「1丁目2番3号」にそろえないでください。
分けられなければ split_failed を true にしてください。
- 旧住所と新しい住所が同じに見えても、そのまま写してください。
- 印の欄の画像は、朱色の印の跡があれば present、何も無ければ absent、
かすれや汚れで判断できなければ unclear と答えてください。
届出印と同じ印かどうかは答えないでください。
- 変更届でない書類と判断した場合は、document_type に種類を書いてください。
【読み取り結果】{ocr_result}
【印の欄の画像】(画像として添付)
照合用の写しをAIに渡していないことが、このプロンプトのいちばんの工夫です。 登録住所や契約者名を見せると、読みにくい字を登録されている住所に寄せて写します。寄せた瞬間に、旧住所が登録と合っているかという確かめが意味を失います。 番地の書き方をそろえさせないのも、元の書き方を残して、そろえ方の誤りを後から見つけるためです。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力(リクエストの output_config.format に type: "json_schema" とスキーマを渡す方式)を使い、形を固定します。
{
"document_type": "address_change",
"header": [
{ "item": "filing_date_text | writer_name | phone_text | new_name",
"value": "", "status": "read | blank | unreadable" }
],
"policy_numbers": [
{ "value": "", "status": "read | unreadable" }
],
"targets": {
"policyholder": "checked | unchecked | unclear",
"insured": "checked | unchecked | unclear",
"beneficiary": "checked | unchecked | unclear"
},
"address": {
"old_address_text": "", "new_address_text": "", "new_postal_code_text": "",
"prefecture": "", "city": "", "town": "", "block": "", "building": "",
"split_failed": false, "status": "read | unreadable"
},
"seal": "present | absent | unclear"
}
1つ目の理由は、届を「証券番号×変更の対象」の行に機械的に展開できることです。 Python は policy_numbers と targets の checked を掛け合わせて入力行を作り、照合用の写しから役割ごとの登録住所を引いて並べます。
2つ目は、確認待ちに回す理由を規則で持てることです。
| 条件 | 印 |
|---|---|
証券番号が unreadable、または照合用の写しに無い | policy_not_found |
| 記入者の氏名が、その契約の契約者名と合わない | name_mismatch |
| 旧住所が、変更の対象の登録住所と合わない | old_address_mismatch |
| 郵便番号が郵便番号データに無い、または住所の市区町村・町域と合わない | postal_mismatch |
届出日が blank か unreadable、または受付日より後・受付の決まりより古い | date_check |
変更の対象のチェックが1つも無い、または unclear | target_check |
印の欄が absent か unclear(届出印のある契約に限る) | seal_check |
住所の分割に失敗した、または document_type が変更届でない | check_image |
policy_not_found と old_address_mismatch は、他の印より先に担当者に出します。 別の人の契約を引き当てている可能性と、本人以外からの届の可能性があるためです。
公式のページでは、minimum・maximum などの数値の制約や文字列の長さの制約は使えないとされています。証券番号の桁数は Python の照合で確かめます。 拒否は stop_reason が refusal、出力の上限で切れたときは max_tokens になり、スキーマに合わないことがあります。どちらも一覧に書かず、人に回すか呼び直します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 複合機の保存先の共有フォルダ | Python のファイル操作 | 新しいPDFを取り出し、処理済みに移す |
| Google Document AI | クライアントライブラリでの呼び出し | 欄、チェック欄、信頼度、位置を返す |
| Claude API | Messages API の呼び出し | 入力項目への写しと、印の欄の有無 |
| 照合用の写し・郵便番号データ | Python での読み込み | 証券番号の引き当て、旧住所と郵便番号の照合 |
| 入力待ち・確認待ちの一覧 | 書き込み | 入力行、印、届の画像のリンク |
| 契約管理システム | 既存の一括取込(人の操作) | 担当者が回した行だけを取り込む |
契約管理システムには、この構成から直接は書き込みません。 一括取込に回すのは担当者で、回すのは印の無い届の行と、確認が済んだ行だけです。読み取りの誤りが、そのまま登録住所になることはありません。
返送の案内も送りません。 不備の箇所を差し込んだ下書きまでにし、送るかは担当者が決めます。
人が確認する
担当者が見るのは、印の無い届の流し見と、確認待ちの届です。 印の無い届は、展開された行の数と、新しい住所・郵便番号を一覧で見て、一括取込に回します。
policy_not_foundとold_address_mismatchを先に見る … 画像で確かめ、旧住所が登録と合わない届は上席に回しますname_mismatchを見る … 改姓の届か、家族が代わりに書いたのかを確かめますpostal_mismatchを見る … どちらが正しいかは推測で決めず、本人に確かめるか返送しますdate_check・target_check・seal_checkを見る … 受付の決まりに照らして決めます- 決めた結果と理由を記録する
目標は、1,200件をならして1件2分です。
例外に対処する
| 起きること | 対応 |
|---|---|
| スキャンが薄く、読めない字が多い | unreadable が並ぶ。スキャンし直し、直らなければ確認待ちへ |
| 古い様式や他社の書類が届く | 様式番号が読めないものは check_image。印の欄を切り出さない |
| 変更の対象が「○で囲む」形で書かれている | チェック欄として返らない。target_check で人へ |
| 新しい住所が海外 | 郵便番号データで照合できない。postal_mismatch にせず、海外住所の印で人へ |
| 新しい町名で郵便番号データに無い | postal_mismatch。日本郵便の変更案内と最新のデータで確かめる |
| 本人確認書類の写しが同封されている | 届の読み取りから外し、確認待ちに添える |
| AIが拒否の応答を返す | check_image で人に回す。一覧には書かない |
| OCR・AIが応答しない | PDFを処理済みに移さずに残す。次の実行で拾い直す |
上の3行が大半を占めます。 どれもスキャンの設定と様式の問題です。公式のページでもラジオボタンには対応しないとされており、「○で囲む」欄が多ければ様式の改定の材料になります。
記録を残す
- 元の届のPDFと、受付日・スキャンした日時
- OCRが返したJSONの全文と、Claude API の応答の全文
- 印の欄の切り出し画像
- 照合に使った照合用の写しの出力日時と、郵便番号データの版
- 付いた印と、担当者が決めた結果(返送・補って入力・上席へ)と理由
- 一括取込に回した行と、回した担当者・日時
- 様式ごとの
unreadableとcheck_imageの件数
4つ目を残すのは、登録住所が日々変わるためです。 どの時点の写しで判断したかが無いと、届の誤りか写しの古さかを区別できません。
04実装レベルの3段階
半自動化で、1件6分が4分程度になります。 打ち込みは無くなりますが、証券番号で契約を開いて見比べる作業と、郵便番号の確かめは、目で行う作業として残ります。 本格構成で2分になり、この段階が本記事の想定です。 差が大きいのは、照合が規則に移り、担当者が見るのが印の無い届の流し見と確認待ちだけになるためです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、読めない字の多い欄が分かります。
05工数削減シミュレーション
導入後 1,200件 × 2分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 生命保険・損害保険・共済などで、契約者から郵送で届く手書きの住所・氏名の変更届を、契約サービスの事務担当が契約管理システムに打ち込んでいる場合。1枚の届で複数の証券番号や、契約者・被保険者・受取人の住所をまとめて変えることが多い場合。記入漏れや印の欠けに気づくのが入力の途中で、返送の判断が担当者ごとにばらついている場合。届の様式を自社で決めており、印の欄やチェック欄の位置が決まっている場合。
- 住所変更の大半をすでにWebやアプリの手続きで受けていて、紙の届が月に数十枚しか無い場合。契約者の個人情報を国外のリージョンで処理することを、社内の規程や委託先の管理の決まりで認めていない場合。代理店が書式を独自に作っていて、届の様式がそろっていない場合。なお、届を受け付けるかどうか、本人の届出と認めるかどうか、印影が届出印と一致するかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の届から30枚を選ぶ(証券番号が複数の届、変更の対象が2つ以上の届、返送になった届を必ず入れる)
- その30枚について、当時の入力内容と、返送の理由を用意する
- 届のPDFを手元のAIサービスの画面に1枚ずつ貼り付ける
- 「この住所変更届の証券番号、変更の対象、旧住所、新しい住所、郵便番号、届出日、印の有無を、書かれたとおりに写してください。数字を補ったり直したりしないでください。空欄は空欄、読めない字は『読めない』としてください」と指示する
- 写された値を、当時の入力内容と返送の理由と比べる
| 出てきた内容 | 判断 |
|---|---|
当時と同じ値が写せ、返送になった届の空欄が blank で出た | OCRと Python の連携に進む |
| 読めない証券番号をそれらしく決めた | 指示の書き方で直る。構成は有効 |
| 住所の分け方が届ごとにずれる | 分け方の例を指示に足す。直らない書き方は split_failed として人に回す |
| 読めない字が多い | スキャンの設定が先。 300dpiで取り直して比べる |
1行目の後半が、この構成の価値を確かめるところです。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 読めない証券番号の桁をAIが補う | 書かれたとおりに写させ、読めない桁は unreadable。 引き当てられなければ人へ |
| 読みにくい字が登録住所に寄せられる | 照合用の写しをAIに見せない。 照合は Python で行う |
| 1枚の届を1件として入力してしまう | 証券番号×変更の対象の行に展開してから見せる |
| 印の欄が空なのか読み落としなのか分からない | キーと値に頼らず、様式の位置で切り出して画像で判定する |
| 郵便番号を住所に合わせて直す | 補わせない。 郵便番号データとの食い違いは印にして人へ |
| 「○で囲む」欄が読めない | ラジオボタンは対象外。target_check で人へ回し、様式の改定を検討する |
| 証券番号の先頭の0が落ちる | 文字列のまま読み書きする |
| 国外での処理を確かめていない | 日本のリージョンが無い。社内の規程を先に確かめる |
上の3行が、この構成の失敗のほとんどです。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 契約者・被保険者・受取人の氏名、旧住所と新しい住所、電話番号、証券番号、改姓のときの新しい氏名、印影です。すべて個人の情報で、転居や改姓という生活の変化が読み取れる情報です。
- 国外で処理することを確かめる … Document AI のリージョンの一覧に日本はありません。社内の規程と委託先の管理の決まりで、届を国外のリージョンで処理してよいかを確かめます。認められない場合は、日本のリージョンで処理できる製品を検討します
- 生成AIに渡す範囲を絞る … 渡すのは届の読み取り結果と印の欄の切り出し画像だけです。照合用の写しや他の契約の情報は渡さず、照合は Python の側で行います
- 登録住所を自動で書き換えない … 契約管理システムへの反映は、担当者が一括取込に回した行だけです
- 本人からの届かどうかを機械に決めさせない … 旧住所の食い違いや氏名の食い違いは印にするだけで、受け付けるかどうかは担当者と上席が決めます
- 印影を照合に使わない … 生成AIに答えさせるのは印の有無だけです。届出印との照合は既存の仕組みと人が行います
- 照合用の写しの持ち方を決める … 写しは照合に要る列だけに絞り、保存先と消す時期を決めておきます
誤りが起きた場合のリスクは、別の契約者の住所を書き換えることと、本人以外からの届を受け付けてしまうことの2つです。 桁を補わせないことと、食い違いを人に回すことで防ぎます。
10まず何から始めるか
1週目:受付の決まりを表にする
届出日の空き、印の欠け、旧住所の食い違い、郵便番号の食い違いを、それぞれ返送するか、補って入力するか、上席に回すかを表にします。担当者ごとにばらついている判断を、ここで一度そろえます。
2週目:30枚で試す
先月の届30枚を、個人情報を伏せた見本にして手元のAIサービスに貼り付け、項目を写させます。読めない証券番号を補っていないか、郵便番号を直していないかを最優先で見ます。
3週目:社内の規程の確認と、照合用の写しの準備
届を外部のサービスで、国外のリージョンで処理してよいかを、社内の規程と委託先の管理の決まりで確かめます。 あわせて、契約管理システムから照合用の写しを夜間に出す手順を決めます。
4週目:フォルダから一覧までをつなぐ
Python で共有フォルダを確かめ、OCRを呼び、写した値を一覧に書き出すところまで作ります。この時点では印を出さず、担当者がこれまでどおり入力しながら、一覧の値が合っているかを見ます。
2か月目: 証券番号の引き当て、旧住所と郵便番号の照合、印の欄の判定と、契約ごと・役割ごとの展開を足し、確認待ちの振り分けを始めます。3か月目以降: 1件6分が何分になったかを実測します。役割の打ち漏れが無くなり、確認待ちが受付の決まりで判断できるものだけになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Form Parser がキーと値のペア、チェックボックス、表、一般的なエンティティを抽出すること。言語の一覧で日本語(ja)が手書きに対応する言語として示されていること。オンラインの処理が最大15ページであること | Google Cloud: Processor list | 2026-10-14 |
ラベルの付いた空欄に書き込む様式を得意とすること。チェックボックスが valueType で塗られているかを返すこと。ラジオボタンに対応しないこと。値の入っていないキーと値の組を確実には読み取れないこと。一部の言語でキーと値の質がラテン文字より低いことがあること | Google Cloud: Form Parser | 2026-10-14 |
formFields の fieldName/fieldValue、valueType の filled_checkbox/unfilled_checkbox、layout の confidence・boundingPoly | Google Cloud: Handle the processing response | 2026-10-14 |
| 対応形式が PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などであること。スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-14 |
マルチリージョンが us と eu で、単一リージョンにシンガポール(asia-southeast1)などがあり、日本のリージョンが一覧に無いこと | Google Cloud: Regional and multi-regional support | 2026-10-14 |
output_config.format に type: "json_schema" を指定して構造化出力を使えること。数値の minimum・maximum や文字列の長さの制約に対応しないこと。拒否は stop_reason: "refusal"、出力の上限は max_tokens となりスキーマに合わないことがあること | Claude Platform Docs: Structured outputs | 2026-10-14 |
| 画像の対応形式が JPEG、PNG、GIF、WebP であること。1枚の最大が8000×8000ピクセル、APIを直接使うとき1枚10MB(base64エンコード後)であること | Claude Platform Docs: Vision | 2026-10-14 |
| 住所の郵便番号のCSVと、2023年6月の更新から公表された1レコード1行・UTF-8形式のCSVがダウンロードできること | 日本郵便: 郵便番号データダウンロード | 2026-10-14 |
届を受け付けるかどうか、本人からの届と認めるかどうか、届を外部のサービスで処理してよいかは、自社の受付の決まりと社内の規程に沿って決めてください。 本記事は各製品の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1506)についてのご相談はこちらから。
