東京海上日動 — Tractable AI導入で自動車事故損害査定を数日から数十秒に短縮、査定士工数30%削減
企業概要
- 社名: 東京海上日動火災保険株式会社
- グループ: 東京海上ホールディングス傘下
- 事業: 損害保険(自動車・火災・傷害・賠償責任保険等)
- 規模: 国内損保業界最大手、保険料収入約2兆円超
- AIパートナー: Tractable(英国、損害査定AI専門スタートアップ)
- DX方針: 「デジタルを活用し、顧客の迅速な事故解決・保険金支払いを実現」
背景と課題
自動車事故発生後の損害査定プロセスは、従来以下のような課題を抱えていた。
- 査定担当者の現地訪問: 事故車両を直接確認するため、日程調整・移動に数日を要していた
- 写真による遠隔査定も属人的: 経験豊富な査定士でないと正確な判定が難しく、品質にばらつきがあった
- 大量案件への対応: 台風・豪雨などの大規模災害時には査定件数が急増し、処理が追いつかない
- 顧客満足度への影響: 保険金支払いの遅延が顧客不満の主因となっていた
これらを解決するため、「写真1枚で損害額を即時算出できるAI」の開発・導入を検討。世界各国の保険会社と実績を持つTractableを選定した。
導入したシステム・AI
① Tractable AI損害査定システム
英国スタートアップTractableが開発したコンピュータービジョンベースの損害査定AI。
- 技術基盤: ディープラーニング(CNN: Convolutional Neural Network)
- 学習データ: 世界数百万件の事故車両写真と実際の修理費用データで訓練
- 入力: 事故車両の写真(スマートフォン撮影可)
- 出力: 破損箇所の特定・修理費用の自動算出・損害レベルの分類
② 写真アップロード・ワークフロー統合
- 顧客または修理工場がスマートフォンで撮影した写真を専用アプリからアップロード
- AIが数十秒で解析結果を返す
- 査定士はAIの出力をレビューするだけでよく、単純案件は承認ワンクリックで完結
③ 大規模災害時の一括処理機能
- 台風・水災発生時に大量の損害査定案件を並列処理
- 従来は数週間かかっていた査定を数日以内に完了
- 衛星画像・ドローン映像との連携も検討中
成果
| 指標 | 導入前 | 導入後 |
|---|---|---|
| 損害査定所要時間 | 数日(現地訪問含む) | 数十秒(AI即時解析) |
| 査定士の工数 | ベースライン | 30%削減 |
| 全国展開時期 | — | 2020年完了 |
| 顧客への保険金支払い速度 | — | 大幅短縮 |
| 大規模災害時の処理能力 | 数週間 | 数日以内 |
実装方法
システムアーキテクチャ
東京海上日動とTractableの連携は「写真収集 → クラウドAI解析 → 査定ワークフロー統合」の3層構造で実装されている。
- フロントエンド層: 顧客向けスマートフォンアプリ・修理工場向けWebポータルから写真をアップロード
- AIエンジン層(Tractable): クラウド上のCNNモデルが破損箇所を検出し、修理費用を算出。過去の修理事例データと照合して精度を担保
- 査定ワークフロー層: AI出力を社内の損害査定システムに取り込み、査定士がレビュー・承認。単純案件は自動承認ルールを適用
- 学習フィードバック層: 査定士が修正した結果をTractableモデルに定期フィードバックし、日本市場向けに継続的に精度改善
品質担保の仕組み
- 信頼度スコアリング: AIが査定結果に信頼度スコアを付与。閾値以下の案件は必ず人間査定士がレビュー
- エッジケース管理: 全損・特殊車両・改造車など標準外の案件は自動的に専門査定士へルーティング
- 監査ログ: AI判定と人間判定の差分をすべて記録し、定期的に精度監査を実施
自前で実装するなら(参考コード)
OpenAI Vision APIを使った車両損害査定システムの参考実装です。Tractableのような専用モデルの代わりに、GPT-4oのVision機能で類似の仕組みを構築できます。
import base64
import json
from pathlib import Path
from openai import OpenAI
client = OpenAI()
def encode_image(image_path: str) -> str:
"""画像ファイルをBase64エンコード"""
with open(image_path, "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")
def assess_vehicle_damage(image_path: str, vehicle_info: dict) -> dict:
"""
車両損害写真をAIで査定する
Args:
image_path: 事故車両写真のパス
vehicle_info: 車種・年式・グレード等の情報
Returns:
損害査定結果(JSON形式)
"""
b64_image = encode_image(image_path)
response = client.chat.completions.create(
model="gpt-4o",
response_format={"type": "json_object"},
messages=[
{
"role": "system",
"content": (
"あなたは自動車損害査定の専門AIです。\n"
"車両損害写真を分析し、以下のJSON形式で回答してください:\n"
"{\n"
' "damage_areas": ["損傷箇所のリスト"],\n'
' "severity": "minor/moderate/severe/total_loss",\n'
' "estimated_repair_cost_jpy": 数値,\n'
' "confidence_score": 0.0から1.0,\n'
' "requires_human_review": true/false,\n'
' "notes": "特記事項"\n'
"}"
)
},
{
"role": "user",
"content": [
{
"type": "text",
"text": (
f"車両情報: {json.dumps(vehicle_info, ensure_ascii=False)}\n"
"この車両の損害を査定してください。"
)
},
{
"type": "image_url",
"image_url": {
"url": f"data:image/jpeg;base64,{b64_image}",
"detail": "high"
}
}
]
}
],
max_tokens=1000
)
result = json.loads(response.choices[0].message.content)
return result
def batch_assess_disaster_claims(image_paths: list[str], vehicle_infos: list[dict]) -> list[dict]:
"""
大規模災害時の一括査定処理
信頼度が低い案件を自動フラグ立て
"""
results = []
for path, info in zip(image_paths, vehicle_infos):
assessment = assess_vehicle_damage(path, info)
assessment["image_path"] = path
# 信頼度0.8未満は人間レビューキューへ
if assessment.get("confidence_score", 0) < 0.8:
assessment["requires_human_review"] = True
results.append(assessment)
return results
# 使用例
result = assess_vehicle_damage(
image_path="accident_photo.jpg",
vehicle_info={
"make": "Toyota",
"model": "プリウス",
"year": 2021,
"grade": "E",
"mileage_km": 45000
}
)
print(f"損傷箇所: {result['damage_areas']}")
print(f"損害程度: {result['severity']}")
print(f"修理費用見積: {result['estimated_repair_cost_jpy']:,}円")
print(f"信頼度: {result['confidence_score']:.0%}")
if result["requires_human_review"]:
print("→ 人間査定士によるレビューが必要です")
アーキテクチャのポイント: 本番環境では asyncio と aiohttp で並列処理し、大規模災害時の数千件を同時処理できるよう設計します。confidence_score による自動ルーティングが品質担保の鍵です。