損害保険の事故受付で契約者から届く手書きの事故状況報告書を読み取り、日時・場所・相手・事故の図の説明を受付の入力項目にそろえ、記載の食い違いと不足を事故担当へ返す
契約者から届く手書きの事故状況報告書を読み取り、日時・場所・相手・自車と相手の動き・警察への届出を受付の入力項目にそろえます。電話受付の記録との食い違いと記載の不足を、事故担当が読み始める前に返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Google Apps Script/Python
- 対象業界
- その他/保険
- 対象部門
- カスタマーサポート
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 契約者から事故の連絡を電話で受け、受付の記録を入力する
- 契約者に事故状況報告書の書式を送る
- 契約者が報告書を手書きし、郵送するか画像で送る
- 受付課が報告書をスキャンし、1件ずつ開いて受付のシステムの入力項目に書き写す
- 電話受付の記録と見比べ、日時・場所・相手・動きが違えばメモに書く
- 空欄を探し、契約者に電話で聞くか、事故担当に回す
- 入力が終わったものを事故担当に回す
- 人受付課が、届いた報告書を今までどおりスキャンする(画像で届いたものはそのまま)
- 自動Python のスクリプトが取込の場所を見て、Document AI の Form Parser に渡す
- 自動Form Parser が、報告書の項目名と値の組、チェックボックス、信頼度を返す
- 自動Claude API が、報告書の値を受付の入力項目にそろえ、文と図の説明から自車と相手の動きを決まった区分に当てる
- 自動Python が、受付番号で電話受付の記録を引き、日時・場所・相手・動きを項目ごとに比べる
- 自動比べた結果と、空欄・届出の有無の印を付けて、受付のシステムの確認待ちの一覧に載せる
- 人受付課の担当が一覧を開き、読み取った値と印を画像と見比べて確定する。届出の欄が空や「なし」なら契約者に確かめる
- 人確定したものを、印の内容を添えて事故担当に回す
各工程の詳しい説明を読む
- 契約者から事故の連絡を電話で受け、受付の記録を入力する
- 契約者に事故状況報告書の書式を送る
- 契約者が報告書を手書きし、郵送するか画像で送る
- 受付課が報告書をスキャンし、1件ずつ開いて受付のシステムの入力項目に書き写す
- 電話受付の記録と見比べ、日時・場所・相手・動きが違えばメモに書く
- 空欄を探し、契約者に電話で聞くか、事故担当に回す
- 入力が終わったものを事故担当に回す
(a)書き写しに時間を取られる。 報告書の欄は20を超え、手書きの住所や車両番号は読み取りに時間がかかります。8分のうち半分近くは、読んで写す作業です。
(b)食い違いの見比べが、担当によって違う。 5番は、電話受付の記録をどこまで読み込むかで差が出ます。日時や相手の車両番号の違いは見つけても、「右折」と「直進」のような動きの違いは、文を読み比べないと見つかりません。
(c)空欄に気づくのが遅い。 届出の欄の空欄や、相手の連絡先の空欄は、事故担当が読み始めてから見つかることがあります。そこから契約者に聞き直すと、受付から1週間以上たっています。
(d)図と文が合わない。 契約者は図を描き、その下に説明を書きます。図の矢印の向きと文の内容が合わないことは珍しくありませんが、図を読み比べる時間は受付には残っていません。
- 【人】 受付課が、届いた報告書を今までどおりスキャンする(画像で届いたものはそのまま)
- 【自動】 Python のスクリプトが取込の場所を見て、Document AI の Form Parser に渡す
- 【自動】 Form Parser が、報告書の項目名と値の組、チェックボックス、信頼度を返す
- 【自動】 Claude API が、報告書の値を受付の入力項目にそろえ、文と図の説明から自車と相手の動きを決まった区分に当てる
- 【自動】 Python が、受付番号で電話受付の記録を引き、日時・場所・相手・動きを項目ごとに比べる
- 【自動】 比べた結果と、空欄・届出の有無の印を付けて、受付のシステムの確認待ちの一覧に載せる
- 【人】 受付課の担当が一覧を開き、読み取った値と印を画像と見比べて確定する。届出の欄が空や「なし」なら契約者に確かめる
- 【人】 確定したものを、印の内容を添えて事故担当に回す
7番目で、読み取った値をそのまま確定させないのがこの設計の前提です。 報告書の値は、過失の割合や支払の判断の材料になります。値の確定は人が行い、AIの出力は「下書きと印」の位置に置きます。
5番目の比較は、どちらが正しいかを決めません。 電話の記録と報告書のどちらかが違っていても、印に書くのは「違う」という事実と、両方の値だけです。
02今回想定するシステム構成
事故状況報告書(手書き、郵送のスキャンまたは契約者が撮った画像) │ ▼【トリガー】取込の場所へのファイルの到着(Python が5分ごとに確認) Python ── 形式・画質・ページの確認、受付番号の確認 ▼ Google Document AI(Form Parser) │ 項目名と値の組、チェックボックス、信頼度 ▼ Claude API ── 構造化出力で受付の入力項目にそろえる │ 日時/場所/相手/警察への届出/けが人 │ 自車と相手の動きの区分(文から・図の説明から) ▼ Python ── 電話受付の記録と項目ごとに比較 │ same/different/missing/unreadable ▼ 事故受付のシステム ── 確認待ちの一覧(下書きと印) ▼ 【受付課が画像と見比べて確定】──▶ 事故担当へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Google Document AI(Form Parser) | Azure AI Document Intelligence |
| 生成AI | Claude API(報告書の値を入力項目にそろえ、動きを区分に当てる) | OpenAI API、Gemini API |
| 連携 | Python(取込の監視、受付のシステムとの受け渡し、電話受付の記録との比較) | Google Apps Script |
| 保管 | 社内の書類の保管の仕組み | - |
新しく作るのは、動きの区分の一覧と、受付のシステムの確認待ちの一覧の2つです。 動きの区分は、「直進」「右折」「左折」「停止中」「後退」「駐車中」「進路変更」「不明」のように、事故担当が日ごろ使う言葉で決めます。確認待ちの一覧は、読み取った値と印を担当者が画像と並べて見られる画面です。
土台は Document AI の Form Parser です。 公式のプロセッサ一覧では、OCRのテキストに加えて、キーと値のペア、チェックボックス、表を抽出するとされ、言語の一覧で日本語(ja)は手書きに対応する言語として示されています。報告書は印字の欄に手書きで書き込み、天候や信号の色、届出の有無をチェックボックスで選ぶ書式なので、キーと値のペアとチェックボックスとして読めます。
図そのものは読ませません。 Form Parser が読むのは文字です。図に書き込まれた「自」「相」「止まれ」のような文字と、図の下の説明の文は読めますが、矢印の向きや車の位置関係は読みません。 図の解釈は事故担当の仕事として残します。
処理する場所は、リージョンの一覧から選びます。 マルチリージョンの us と eu、シンガポール(asia-southeast1)などの単一リージョンがあり、日本のリージョンはありません。 報告書には契約者と相手方の氏名・連絡先、けが人の有無が書かれます。この構成を採るかどうかは、国外で処理することの社内の判断が先です(第13章)。
03どうやって実装するのか
処理の起点を決める
報告書のファイルが取込の場所に届いたことを起点にします。 郵送の報告書は受付課がスキャンして入れ、契約者が撮った画像は受付のシステムが受け取った時点で同じ場所に置きます。経路が2つあっても、ここから先は区別しません。
Python のスクリプトを、社内のサーバーで5分ごとに定時実行します。 新しいファイルを順に処理し、確認待ちの一覧に載せるところまで成功したものだけを処理済みとして記録します。 失敗したものは次の実行で拾い直されます。
受付番号が分からないファイルは処理しません。 郵送の報告書は書式の右上に受付番号を印字して送り、画像はどの受付から届いたかがシステムで分かります。受付番号の無いファイルは、担当者に回して受付を特定してもらいます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 報告書のファイル | スキャンのPDFか、契約者が撮った画像。受付番号 | 取込の場所 |
| 読み取り結果 | 項目名と値の組、チェックボックス、図の中の文字、要素ごとの信頼度 | Document AI(Form Parser) |
| 電話受付の記録 | 受付番号、事故の日時・場所、相手の情報、事故の概要の文、届出の聞き取り | 事故受付のシステム |
| 動きの区分の一覧 | 区分の名前と、報告書に書かれうる表記 | 事故担当と受付課で用意する一覧 |
質を決めるのは、電話受付の記録の書き方です。 電話で聞いた事故の概要が自由な文だけだと、報告書と比べる相手がありません。 電話受付の記録にも、日時・場所・相手の車両番号・自車と相手の動きの区分の欄があることが、比較の前提です。まだ無いなら、比較の前に電話受付の入力項目を足します。
動きの区分の一覧は、言い回しをそろえるために使います。 「右に曲がろうとした」「右折待ち」「右へ」を同じ「右折」として扱えるようにします。ただし、どの区分にも当たらない文を、近い区分に寄せることはしません。
データの取得方法を決める
読み取りは、Python から Document AI の処理の API を呼ぶだけです。公式のページには Python のクライアントライブラリで応答を扱う例が載っています。返ってきた Document から次のものを取ります。
| 取るもの | 応答のどこから | 何に使うか |
|---|---|---|
| 項目名と値の組 | pages[].formFields[] の fieldName と fieldValue | 日時、場所、相手、警察署、説明の文 |
| チェックボックス | formFields の valueType(filled_checkbox/unfilled_checkbox) | 天候、信号の色、届出の有無、けが人の有無 |
| 全文のテキスト | text と各要素の textAnchor | 図の中の文字、欄外の書き込み |
| 信頼度 | 各要素の layout の confidence | 手書きの住所・車両番号が確かに読めているかの判定 |
電話受付の記録は、受付番号で事故受付のシステムから読みます。 書き込みは確認待ちの一覧に限り、電話受付の記録そのものには書き込みません。
チェックボックスは、書式の作り方で読める・読めないが分かれます。 公式のページでは、チェックボックスのモデルはラジオボタンに対応しないとされています。届出の有無を「○で囲む」書式だと、チェックボックスとしては返りません。書式を「□あり □なし」の四角に直します。
AIへ渡す前に整形する
- 形式の確認 … Document AI の対象は PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などです。契約者が撮った画像もそのまま入れられます
- 画質の確認 … 公式には、スキャンは最低200dpiが望ましく、300dpi以上が一般に最もよい結果になるとされています。契約者の撮った画像で文字が小さすぎるものは、読み取る前に撮り直しを頼む候補にします
- 向きと傾き … 画像が横向きや逆さのものは、向きをそろえてから渡します
- ページの確認 … 報告書が2ページ以上に分かれる書式なら、受付番号でまとめて1件にします。オンラインの処理は1回の要求で最大15ページです
- 重複の検知 … 同じ受付番号のものが2つ届いたら、後のものを書き直しとして扱い、前のものも残します
2番目は、受付の連絡の仕方で減らせます。 書式を送るときに、「紙全体が写るように、真上から明るい場所で」と撮り方を添えます。撮り直しを頼む連絡は、契約者にとって負担です。
AIに処理させる
させるのは、報告書の値を受付の入力項目にそろえ、動きを区分に当てることだけです。 電話受付の記録との比較は Python が行います。
| 取り出すもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 事故の日時 | 欄の日付と時刻をそのまま | 読めなければ unreadable |
| 事故の場所 | 欄の住所や交差点名をそのまま | 欄に値が無ければ missing |
| 相手の情報 | 氏名、連絡先、車両番号、保険会社 | 項目ごとに missing/unreadable |
| 警察への届出 | チェックボックスと警察署名 | どちらにも印が無ければ missing |
| 自車と相手の動き(文) | 説明の文から、区分の一覧に当てる | 当たらなければ unknown、文はそのまま |
| 自車と相手の動き(図の説明) | 図の中と下の文字から、区分の一覧に当てる | 文字が無ければ none |
Python が比べる規則は次のとおりです。
| 比べること | 規則 |
|---|---|
| 日時 | 報告書と電話受付の記録の日付が同じか。時刻の差が一定以上なら印 |
| 場所 | 市区町村と、交差点名・道路名が同じか |
| 相手 | 相手の車両番号が同じか。電話で聞けていなければ報告書の値を下書きに入れる |
| 動き | 電話受付の区分、報告書の文の区分、図の説明の区分の3つが同じか |
| 届出 | 届出の欄が missing か「なし」か |
動きを3つに分けて比べるのが、この設計の特徴です。 電話・文・図の説明のうち2つが同じで1つだけ違えば、事故担当はその1つから確かめ始められます。 3つとも違えば、契約者に聞き直す前に事故担当が図を見ます。
| させないこと | 理由 |
|---|---|
| 空欄を電話受付の記録から埋める | 報告書に書かれていないという事実が消える |
| 動きを、図の矢印の向きから推す | 図の解釈は事故担当が行う |
| どちらの記載が正しいかの判断 | 事故担当が契約者・相手方に確かめて決める |
| 過失の割合・事故の原因の推定 | 保険会社の判断であり、報告書から機械的に決まらない |
| けがの程度の言い換え | 書かれたまま残す |
1行目がいちばん起きやすい失敗です。 相手の連絡先が空欄の報告書でも、電話受付の記録には連絡先があることがあります。AIに両方を渡すと、報告書の値として埋めて返そうとします。 そのため、AIには報告書の読み取り結果だけを渡し、電話受付の記録は渡しません。
指示内容を固定する
あなたは損害保険会社の事故受付課で、契約者が書いた
事故状況報告書を受付の入力項目に書き写す担当です。
渡すのは、報告書1件の読み取り結果です。
書かれている文字だけを使って、項目ごとに値を並べてください。
推測で埋めないでください。
【やること】
1. accident_datetime:事故の日付と時刻をそのまま写す
2. location:事故の場所の欄をそのまま写す
3. counterparty:相手の氏名、連絡先、車両番号、保険会社を項目ごとに写す
4. police_report:届出の「あり」「なし」の印と、警察署名
5. injury:けが人の有無の印と、書かれた説明をそのまま
6. own_move_text、other_move_text:
説明の文から、自車と相手の動きを動きの区分の一覧に当てる
7. own_move_figure、other_move_figure:
図の中と図の下に書かれた文字から、同じように区分に当てる。
文字が無ければ none
8. 項目ごとに status を付ける
read(読めた)/missing(欄に値が無い)/unreadable(読めない)
9. evidence に、根拠にした文字列をそのまま写す
【厳守事項】
- 欄に値が無いものは missing とし、他の欄や一般的な事故の様子から埋めないでください。
- 動きを、図の線や矢印の形から推さないでください。書かれた文字だけを使います。
- 区分の一覧に当たらない動きは unknown とし、近い区分に寄せないでください。
- どちらの車に過失があるか、事故の原因が何かは書かないでください。
- けがの程度を言い換えたり、重い・軽いと判断したりしないでください。
- 車両番号の文字や数字を補ったり、似た番号に直したりしないでください。
【動きの区分の一覧】{move_codes}
【読み取り結果】{ocr_result}
「過失や原因を書かない」を明記しないと、AIは説明の文を読んでまとめに書き添えます。 「相手の一時不停止が原因と考えられる」といった一文は、事故担当が読む下書きに入った時点で、判断の先入観になります。
図の説明を文と分けて当てさせるのは、契約者が両方に違うことを書くからです。 文では「相手が右折」、図の下には「相手 直進」と書かれている報告書は、それだけで事故担当が最初に確かめるべき点です。
出力形式を固定する
Claude API の構造化出力を使い、次の形のJSONで受け取ります。 output_config.format に JSON スキーマを渡すと、応答がそのスキーマに沿った形になります。
{
"receipt_no": "J2610-04512",
"fields": [
{ "name": "accident_datetime", "value": "2026/10/3 18:20", "status": "read",
"confidence": 0.91, "evidence": "10月3日 午後6時20分頃" },
{ "name": "counterparty_plate", "value": "", "status": "unreadable",
"confidence": 0.38, "evidence": "品川 3?? ほ 12-?4" },
{ "name": "police_report", "value": "あり", "status": "read",
"confidence": 0.95, "evidence": "☑あり ○○警察署" }
],
"moves": {
"own_move_text": "go_straight", "other_move_text": "turn_right",
"own_move_figure": "go_straight", "other_move_figure": "go_straight",
"evidence_text": "相手が右折してきた", "evidence_figure": "相 直進"
}
}
1つ目の理由は、比較をAIの外に出せることです。 上の例では、文と図の説明で相手の動きが違うので、Python が different の印を付けます。電話受付の記録との比較も同じ形で行い、区分の一覧を直しても AI を呼び直さずにやり直せます。
2つ目は、unreadable の値を空のまま返すことです。 相手の車両番号が一部しか読めないとき、読めた部分を evidence に残し、value は空にします。 担当者は画像を見て、読めた部分を手がかりに埋められます。
3つ目は、evidence に原文を残すことです。 「午後6時20分頃」の「頃」は、時刻の比較で差があっても印を軽く扱う手がかりになります。
公式のページでは、列挙の値の大文字・小文字までは保証されないとされているので、区分と status は Python で正規化してから使います。stop_reason が max_tokens のときは出力が途中で切れているので、一覧に載せずに呼び直します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 取込の場所 | Python で定時に読む | 新しいファイルを処理し、成功したものを記録する |
| Document AI | Python のクライアントライブラリから処理の API を呼ぶ | 項目名と値の組、チェックボックス、信頼度 |
| Claude API | Python から呼ぶ | 入力項目へのそろえと、動きの区分 |
| 事故受付のシステム | 社内の連携の口から読み書き | 電話受付の記録を読み、確認待ちの一覧に下書きと印を載せる |
受付のシステムの入力項目そのものには書き込みません。 書くのは確認待ちの一覧の下書きまでで、担当者が確定したときに初めて入力項目に入ります。 誤った読み取りが、事故担当の見る正式な記録に直接入る経路を作らないためです。
事故受付のシステムとの受け渡しの方法は、システムごとに違います。 連携の口が無いシステムなら、確認待ちの一覧を別の表として作り、担当者が確定した値を手で入れる形から始めます。
人が確認する
- 届出の印を先に見る … 届出の欄が
missingか「なし」の報告書は、契約者に電話で確かめます。交通事故証明書の要否に関わるため、受付の段階で確かめます - 読み取った値を画像と見比べて確定する …
unreadableの項目は画像から埋めます。readの項目も、相手の車両番号と連絡先は必ず画像で確かめます - 食い違いの印を事故担当への申し送りに書く … どの項目が、電話・文・図の説明のどれとどれで違うかを、両方の値と一緒に書きます
- 確定して事故担当に回す … 確かめた担当者の名前を残します
2番目で、相手の車両番号と連絡先を必ず見るのは、誤りの影響が大きいからです。 1字違いの車両番号や電話番号は、相手方への連絡が届かない、別の人に届くことにつながります。
1番目の電話では、契約者を責める聞き方をしません。 届出の欄が空なのは、届け出たのに書き忘れただけのことも多いからです。「届け出た警察署を教えてください」と事実だけを聞き、届け出ていなければ届け出るよう案内します。
目標は、900件をならして1件2.8分です。 印の無い報告書でも値の確定に1〜2分はかかり、印の付いた報告書は数分かかります。印の付く報告書が3割前後という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 受付番号が分からない | 処理しない。担当者が受付を特定する |
| 画像が暗い・傾いている・一部しか写っていない | 撮り直しを頼む候補。頼むかは担当者が決める |
| 書式とは違う紙に書かれている | 項目名と値の組が取れない。人が入力する |
| 図しか描かれておらず説明の文が無い | 動きの区分は none。図の解釈は事故担当へ |
| 届出の欄の両方に印がある | missing と同じ扱いで契約者に確かめる |
| 相手が複数(玉突きなど) | 相手ごとに値を並べる。比較は1台目だけで行い、残りは人が見る |
| 電話受付の記録に動きの区分が無い | 文と図の説明の2つだけで比べる |
| Document AI か Claude API が応答しない | ファイルを取込の場所に残し、次の実行で拾い直す |
6行目は、件数は少なくても手のかかる例外です。 玉突きの事故は相手が2台以上になり、報告書の欄に収まりません。欄外に書き足された相手の情報は、項目名と値の組として返らないことが多いので、全文のテキストから人が拾います。
記録を残す
- 届いた報告書のファイルと、届いた日時と経路(郵送/画像)
- Document AI が返したJSONの全文
- Claude API に渡した入力と、返ってきたJSON
- Python の比較の結果と、そのときの動きの区分の一覧の版
- 担当者が確定した値と、下書きから直した項目
- 契約者に確かめた内容と日時
下書きから直した項目を残すのは、読み取りの弱いところを知るためです。 相手の車両番号ばかり直しているなら、書式の欄の大きさか、撮り方の案内に問題があります。保存したものは、社内の規程で決めた期間を過ぎたら消します。 事故の記録には個人の情報が多く含まれます。
04実装レベルの3段階
最小構成では件数がさばけません。 確かめるための段階です。 半自動化で、1件8分が5分程度になります。 書き写しは下書きの確定に変わりますが、電話受付の記録との見比べはまだ人です。本格構成で2.8分になり、この段階が本記事の想定です。 差が大きいのは、電話受付の記録を開いて読み比べる作業が、印を読む作業に変わるからです。 段階を飛ばさないでください。 半自動化の下書きを1か月見ると、読み取りの弱い欄と、撮り方の案内が届いていない経路が分かります。 そこを直してから比較を足すほうが、誤った印が減ります。
05工数削減シミュレーション
導入後 900件 × 2.8分 ÷ 60 = 42 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 自動車保険の事故の連絡を電話で受けた後、契約者に事故状況報告書を郵送か画像で出してもらっている損害保険会社・共済の事故受付の部署。届いた報告書を担当者が1件ずつ読んで受付のシステムに入力し、電話で聞いた内容と食い違っていないかを目で見ている場合。報告書の記載の不足が、事故担当が読み始めてから見つかることが多い場合。
- 事故状況の聞き取りをすでにウェブのフォームやアプリで受けており、手書きの報告書がほとんど届かない場合。事故の件数が月に数十件で、事故担当が報告書を直接読んで足りる場合。日本国外のリージョンで個人の情報を処理することが社内の規程で認められない場合。なお、過失の割合、支払の可否、事故の原因の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月届いた報告書から30件を選ぶ(画像で届いたもの、相手の欄に空欄のあるもの、図の説明が長いものを入れる)。個人の情報を伏せた写しを使う
- 30件を、社内で利用が認められたAIサービスの画面に1件ずつ貼り付ける
- 「この報告書から、事故の日時、場所、相手の車両番号、届出の有無、自車と相手の動きを書き出してください。空欄は空欄のまま、推測で埋めないでください。過失や原因は書かないでください」と指示する
- 書き出された値を、受付のシステムに入力した値と比べる
- あわせて、30件について、電話受付の記録と報告書の文で動きが違うものを手で数える
5番目はAIを使いません。 受付課の担当が2つを読み比べるだけです。違うものがどれくらいあるかで、比較を自動にする価値が分かります。
| 出てきた内容 | 判断 |
|---|---|
| 入力した値とほぼ同じになった | Document AI と Python のつなぎに進む |
| 空欄を一般的な事故の様子で埋めた | 指示の書き方で直る。構成は有効 |
| 契約者の撮った画像がほとんど読めない | 撮り方の案内が先。 AIの問題ではない |
| 動きの食い違いが多く見つかった | 比較の前に、電話受付の記録に動きの区分の欄を足す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 空欄が電話受付の記録で埋まる | AIに電話受付の記録を渡さない。 比較は Python で行う |
| 図の矢印から動きを推して埋める | 書かれた文字だけを使うよう指示し、区分 none を許す |
| 過失や原因の推測が下書きに混ざる | 指示で禁じ、出力の項目に書く場所を作らない |
| 届出の欄が○で囲む書式で読めない | □の四角の書式に直す。 ラジオボタンには対応しない |
| 契約者の画像が読めない | 撮り方の案内を書式に添える |
| 相手の車両番号を似た番号に直す | 補正を禁じ、車両番号は必ず画像で確かめる |
| 下書きがそのまま正式な記録に入る | 確認待ちの一覧を挟み、確定は人が行う |
| 動きの区分が事故担当の言葉と合わない | 区分の一覧を事故担当と一緒に作る |
| 電話受付の記録に比べる欄が無い | 電話受付の入力項目に区分の欄を足す |
| 国外で処理することを確かめていない | 日本のリージョンが無い。採否を先に決める |
上の3行が、この構成の失敗のほとんどです。 どれも、報告書に書かれていないことが、書かれていたかのように下書きに入るという同じ形をしています。事故担当は下書きを契約者の言葉として読むので、ここだけは設計で守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 契約者と相手方の氏名・住所・連絡先・車両番号、事故の日時と場所、けが人の有無とその説明です。
- 国外で処理することの採否を先に決める … Document AI のリージョンの一覧に日本はありません。けがの説明を含む報告書を国外のリージョンで処理してよいかを、個人情報の管理の責任者と決めます。認められないなら、この構成は採らず、国内で処理できる読み取りの製品を選びます
- 最小構成でも、伏せた写しを使う … 試しの段階で原本の画像を手元のAIサービスに貼らないでください。社内で利用が認められたサービスに、氏名や連絡先を伏せた写しだけを使います
- 判断をAIに寄せない … 過失の割合、支払の可否、事故の原因は、この構成の出力に含めません。 下書きは契約者の書いたことを並べたものに限ります
- 相手方の情報の扱いに気を付ける … 相手方は自社の契約者ではありません。相手方の情報は事故の対応に必要な範囲でだけ使い、受付の下書きの外に持ち出しません
- 保存の期間を決めて消す … 読み取りのJSON、AIへの入力と出力にも個人の情報が入ります。原本と同じ規程で期間を決め、過ぎたら消します
誤りが起きた場合のリスクは、契約者が書いていないことを書いたように扱うことと、相手方への連絡を誤った先に送ることの2つです。 前者は空欄を埋めると起き、後者は車両番号や連絡先を補正すると起きます。どちらも、書かれた文字だけを使い、確定を人が行うことで防ぎます。
10まず何から始めるか
1週目:国外で処理することの採否を確かめる
個人情報の管理の責任者に、Document AI のリージョンの一覧を見せ、報告書を国外のリージョンで処理してよいかを確かめます。 認められなければ、国内で処理できる読み取りの製品で同じ構成を組みます。
2週目:30件で試す
先月の報告書から30件を選び、伏せた写しで値を書き出させます。空欄を埋めていないか、過失や原因を書き添えていないかを最優先で見ます。
3週目:書式と区分を整える
届出の欄を□の四角に直し、撮り方の案内を書式に添えます。 あわせて、事故担当と一緒に動きの区分の一覧を作り、電話受付の入力項目に区分の欄を足します。
4週目:取込から下書きまでをつなぐ
Python で取込の場所を見張り、Document AI と Claude API を呼び、下書きを確認待ちの一覧に載せるところまで作ります。この時点では比較をせず、下書きの精度だけを見ます。
2か月目: 電話受付の記録との比較と、届出・空欄・食い違いの印を足します。3か月目以降: 1件8分が何分になったかを実測します。事故担当が「報告書を読み始めてから空欄に気づく」件数が、ほとんど無くなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 交通事故があったとき、車両等の運転者が警察官に事故の日時及び場所、死傷者の数及び負傷者の負傷の程度、損壊した物及びその損壊の程度などを報告しなければならないこと(第72条) | e-Gov 法令API: 道路交通法 | 2026-10-08 |
| 警察への届出のない事故については交通事故証明書を発行できないこと | 自動車安全運転センター: 交通事故証明書 | 2026-10-08 |
Form Parser がOCRのテキストに加えてキーと値のペア、チェックボックス、表を抽出すること。言語の一覧で日本語(ja)が手書きに対応する言語として示されていること。オンラインの処理が1回の要求で最大15ページであること | Google Cloud: Processor list | 2026-10-08 |
| チェックボックスのモデルがラジオボタンに対応しないこと。値の入っていないキーと値の組を確実には読み取れないこと | Google Cloud: Form Parser | 2026-10-08 |
項目名と値の組が formFields の fieldName/fieldValue で、チェックボックスが valueType の filled_checkbox/unfilled_checkbox で返ること | Google Cloud: Handle the processing response | 2026-10-08 |
| 対応形式が PDF、GIF、TIFF、JPEG、PNG、BMP、WebP などであること。スキャンは最低200dpiが望ましく300dpi以上が一般に最もよいこと | Google Cloud: Supported files | 2026-10-08 |
マルチリージョンが us と eu で、単一リージョンにシンガポール(asia-southeast1)などがあり、日本のリージョンが一覧に無いこと | Google Cloud: Regional and multi-regional support | 2026-10-08 |
output_config.format に JSON スキーマを渡して応答の形を固定できること。列挙の値の大文字・小文字は保証されないこと。max_tokens で打ち切られたときはスキーマに合わない出力になりうること | Claude API: Structured outputs | 2026-10-08 |
過失の割合や支払の判断、個人の情報を国外で処理してよいかは、自社の事故担当と個人情報の管理の責任者が決めてください。 本記事は各製品の公式ページ、道路交通法の条文、自動車安全運転センターのページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0893)についてのご相談はこちらから。
