海外旅行保険の請求に添付された英文の診断書・領収書を読み取り、査定に回す前に不足と記載漏れを洗い出す
海外旅行保険の治療費用の請求に添付された英文の診断書・請求明細・領収書を読み取り、必要な書類と記載がそろっているかを査定の前に点検します。不足があれば、請求者へ追加で提出を頼む書類の一覧と依頼文の下書きにします。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- その他/保険
- 対象部門
- カスタマーサポート
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 請求受付システムで新しい請求を開き、添付ファイルを1つずつ開く
- どれが診断書で、どれが請求明細で、どれが領収書かを見分ける。1つのPDFに全部入っていることもある
- 診断書に、患者名、受診日、診断名、治療内容、医師名と署名、医療機関名、発行日が書かれているかを英文で確かめる
- 請求明細と領収書で、治療日、明細、合計、支払額、通貨を確かめる
- 請求フォームの被保険者名・旅行期間・請求額と、書類の中身を見比べる
- 足りない書類や記載があれば、請求者へ追加の提出を頼むメールを書く
- そろったものを査定システムへ回す
- 自動請求受付システムに新しい請求が入ったら、添付ファイルと請求フォームの内容を取り込む
- 自動形式・ページ数・サイズ・パスワードの有無を確かめ、必要なら変換・分割する
- 自動AWS Textract が、診断書向けの問い合わせ(Queries)・署名の検出・請求明細と領収書の読み取りを行い、値と信頼度を返す
- 自動読み取れた語の数と信頼度から、対応外の言語の書類を先に仕分ける
- 自動Claude API が書類の種類を判定し、必要な記載事項を1項目ずつ `ok` / `missing` / `unreadable` / `ambiguous` で判定する
- 自動スクリプトが、氏名・治療日・金額・通貨を請求フォームと契約情報に突き合わせる
- 自動請求の種類ごとの必要書類の表から、`ready` / `needs_documents` / `needs_human` を機械的に決める
- 自動`needs_documents` のものに、追加で提出を頼む書類をすべて並べた依頼文の下書きを作る
- 人受付担当が `needs_documents` と `needs_human` のものだけを開き、判定と下書きを確かめて送る
- 人`ready` のものは一覧で流し見て、査定システムへ回す
各工程の詳しい説明を読む
- 請求受付システムで新しい請求を開き、添付ファイルを1つずつ開く
- どれが診断書で、どれが請求明細で、どれが領収書かを見分ける。1つのPDFに全部入っていることもある
- 診断書に、患者名、受診日、診断名、治療内容、医師名と署名、医療機関名、発行日が書かれているかを英文で確かめる
- 請求明細と領収書で、治療日、明細、合計、支払額、通貨を確かめる
- 請求フォームの被保険者名・旅行期間・請求額と、書類の中身を見比べる
- 足りない書類や記載があれば、請求者へ追加の提出を頼むメールを書く
- そろったものを査定システムへ回す
(a)不足が査定に回ってから見つかる。 3番と4番を流し読みにすると、査定担当者が「医師の署名がない」と気づいて差し戻します。そこから請求者へ連絡するので、支払が1〜2週間遅れます。
(b)英文を読める人に仕事が偏る。 手書きに近い診断書は読み慣れた担当者に回され、その3名が休むと受付が止まります。
(c)依頼が何往復も起きる。 「診断書をください」とだけ頼み、届いた診断書に署名がなく、2回目の依頼を出す。最初の点検で不足を全部挙げられていないことが原因です。
(d)照合を見落とす。 氏名のローマ字表記、日付の書き方、通貨の記号。書類は読めていても、請求フォームとの食い違いを見落とします。
- 【自動】 請求受付システムに新しい請求が入ったら、添付ファイルと請求フォームの内容を取り込む
- 【自動】 形式・ページ数・サイズ・パスワードの有無を確かめ、必要なら変換・分割する
- 【自動】 AWS Textract が、診断書向けの問い合わせ(Queries)・署名の検出・請求明細と領収書の読み取りを行い、値と信頼度を返す
- 【自動】 読み取れた語の数と信頼度から、対応外の言語の書類を先に仕分ける
- 【自動】 Claude API が書類の種類を判定し、必要な記載事項を1項目ずつ
ok/missing/unreadable/ambiguousで判定する - 【自動】 スクリプトが、氏名・治療日・金額・通貨を請求フォームと契約情報に突き合わせる
- 【自動】 請求の種類ごとの必要書類の表から、
ready/needs_documents/needs_humanを機械的に決める - 【自動】
needs_documentsのものに、追加で提出を頼む書類をすべて並べた依頼文の下書きを作る - 【人】 受付担当が
needs_documentsとneeds_humanのものだけを開き、判定と下書きを確かめて送る - 【人】
readyのものは一覧で流し見て、査定システムへ回す
4番目が、この設計の分かれ目です。 対応外の言語の書類を判定に通すと全項目が missing になり、請求者に的外れな依頼が飛びます。
7番目を規則で決めているのも意図してのことです。 どの請求にどの書類が要るかは保険会社の取り決めで、後から変わります。AIには何が書かれているかの記録だけをさせます。
02今回想定するシステム構成
請求受付システム(Webの請求フォーム+添付ファイル) │ 新しい請求を取り込む ▼【トリガー】15分おきの取り込み Python ── 形式・ページ数・サイズ・パスワードの確認、Amazon S3 へ保存 ▼ AWS Textract ├─ 診断書:AnalyzeDocument(QUERIES・FORMS・SIGNATURES) └─ 請求明細・領収書:AnalyzeExpense │ 値・信頼度・署名の位置を返す ▼ Python ── 読み取れた語の数と信頼度で、対応外の言語を仕分け ▼ Claude API ── 書類の種類の判定、記載事項を1項目ずつ判定 ▼ Python ── 請求フォーム・契約情報との突合(氏名・治療日・金額・通貨) ▼ 判定(ready / needs_documents / needs_human) ▼ 【人が不足と判断不能のものだけ確認】 ├──▶ Claude API ── 追加で提出を頼む依頼文の下書き └──▶ 査定システムへ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(AnalyzeDocument の Queries・Signatures、AnalyzeExpense) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(書類の種類と記載事項の判定、依頼文の下書き) | OpenAI API、Gemini API |
| 差異計算 | Python(氏名・治療日・金額・通貨の突合) | 請求受付システムの照合機能 |
| 連携 | Python(取り込み、非同期ジョブの管理、確認一覧の作成) | 請求受付システム側の連携機能 |
| 保管 | Amazon S3(添付ファイルと読み取り結果) | 社内のファイルサーバー |
請求受付システムと査定システムは、新しく足すものではありません。 この構成は受付システムから読み、点検の結果を一覧にするまでです。
OCRに AWS Textract を選ぶのは、書類が英文だからです。 対応言語は上の6つで、検出した言語を出力には返しません。 手書きの認識は英語だけ、縦書きには対応していません。日本語の書類には使えないので、請求フォームはWebの入力値をデータとして使います。
機能は書類によって分けます。 診断書は AnalyzeDocument で、FeatureTypes に QUERIES・FORMS・SIGNATURES を指定します。Queries は「患者名は何か」のような英語の問いに、答えと信頼度を返す機能で、答えが無ければ空のまま返ります。請求明細と領収書は AnalyzeExpense で、合計・支払額・日付などを標準の項目名で受け取ります。
複数ページのPDFは非同期処理になります。 同期処理はPDF・TIFFが1ページまでで、複数ページは Amazon S3 に置いて処理を始め、完了の通知を受けてから結果を取ります。結果は既定で7日間しか取り出せません。
03どうやって実装するのか
処理の起点を決める
請求受付システムを15分おきに見に行き、新しい請求を取り込みます。 添付が後から足されることがあるので、フォームの送信から30分たったものだけを対象にします。
処理の単位は請求1件の書類一式です。 書類ごとに判定すると、「領収書が無い」と「領収書は別のファイルにある」を区別できません。点検の結果が出た請求だけを処理済みにし、途中で止まったものは次の回に拾い直します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 添付ファイル | PDF・写真。ファイル名、受け取った日時 | 請求受付システム |
| 請求フォームの内容 | 被保険者名(ローマ字)、受診した国と医療機関、受診日、請求額と通貨、キャッシュレスの利用有無 | 請求受付システム |
| 契約情報 | 証券番号、被保険者名、保険期間(旅行期間)、補償の種類 | 契約管理システム |
| 必要書類の表 | 請求の種類ごとに要る書類と記載事項、省略してよい条件 | 受付チームが整える表 |
| 読み取り結果 | 問い合わせの答えと信頼度、キーと値、署名の位置、請求明細と領収書の項目 | AWS Textract |
質を決めるのは、必要書類の表です。 「治療費用の請求には診断書・請求明細・領収書が要る」「キャッシュレスで医療機関から直接請求が来ている場合は領収書を求めない」といった取り決めを、担当者の頭の中から表へ移します。
データの取得方法を決める
診断書は、AnalyzeDocument に問い合わせを付けて呼びます。 問い合わせは QueriesConfig に Text(問い)と Alias(呼び名)の組で並べます。
問い(Text) | 呼び名(Alias) | 使い道 |
|---|---|---|
| What is the patient name? | PATIENT_NAME | 被保険者名との照合 |
| What is the date of birth? | DATE_OF_BIRTH | 同姓同名の区別 |
| What is the date of first visit? | FIRST_VISIT_DATE | 保険期間との照合 |
| What is the diagnosis? | DIAGNOSIS | 記載の有無 |
| What treatment was given? | TREATMENT | 記載の有無 |
| What is the name of the physician? | PHYSICIAN_NAME | 記載の有無 |
| What is the name of the hospital? | HOSPITAL_NAME | 請求フォームとの照合 |
| What is the date of issue? | ISSUE_DATE | 記載の有無 |
問い合わせは1ページあたり同期処理で15件、非同期処理で30件までです。 入院日・退院日などを足すときは数を数えます。
署名は SIGNATURES で位置を受け取ります。 返るのは署名らしきものの位置で、誰の署名か、本物かは分かりません。 確かめるのは「署名欄に署名がある」ことだけです。
請求明細と領収書は AnalyzeExpense に渡します。 医療機関名は VENDOR_NAME、宛名は RECEIVER_NAME、日付は INVOICE_RECEIPT_DATE、合計・支払額・未払額は TOTAL・AMOUNT_PAID・AMOUNT_DUE、明細は EXPENSE_ROW という標準の項目名で、信頼度付きで返ります。
複数ページの請求明細には注意が要ります。 非同期の分析は各ページを別々の請求書・領収書として扱い、ページをまたいだ文脈を保ちません。 合計は最後のページにだけ出るので、スクリプトでページを束ねて1つの書類として扱います。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF のいずれかであることを確かめます。iPhone の写真で多いHEICは、JPEGに変換してから送ります
- パスワードの確認 … パスワードで保護されたPDFは受け付けられません。解除できないものは、請求者へ解除したものを頼みます
- XFA形式の確認 … XFA形式のPDFには対応していません。印刷用のPDFに書き出し直します
- ページ数とサイズの確認 … 同期処理はPDFとTIFFが1ページ・10MBまで、非同期処理はPDFとTIFFが3,000ページ・500MBまでです。複数ページのものは非同期処理に回します
- 画像の寸法と文字の大きさの確認 … 画像はどの辺も10,000ピクセル以下で、検出できる文字の高さは最小15ピクセル(150DPIで約8ポイント)です。下回るものは撮り直しを頼む候補にします
- 1ファイルに複数の書類がないかの確認 … 診断書と明細が1つのPDFに入っているものは、ページで分けて種類を判定します
5番目を軽く見ないでください。 スマートフォンで全体を1枚に収めた診断書は文字が小さく写り、「記載が無い」と見分けがつきません。
AIに処理させる
させるのは、書類の種類を決めることと、必要な記載事項ごとに「値が読み取れているか」を判定し、根拠にした文字列を書き出すことだけです。
| 見るもの | 判定の仕方 | 判断できないときの扱い |
|---|---|---|
| 書類の種類 | 診断書・請求明細・領収書・その他のどれか | 複数に当てはまれば ambiguous |
| 患者名 | 値があるか | 信頼度が低ければ unreadable |
| 受診日・治療の期間 | 日付として解釈できるか | 日と月の順が決まらなければ ambiguous |
| 診断名・治療内容 | 値があるか | 略語だけで判断がつかなくても、値があれば ok |
| 医師名と署名 | 名前の値と、署名の検出があるか | 名前だけで署名が無ければ missing |
| 支払ったこと | 支払額か「支払済み」の表示があるか | 未払額だけなら missing |
missing と unreadable を分ける根拠は数値に置きます。 問い合わせの答えが空なら missing、答えはあるが信頼度が基準値より低ければ unreadable です。
日付の順は間違えやすい所です。 03/04/2026 は米国の書式なら3月4日、英国などなら4月3日です。同じ書類の中の他の日付で順が決まらなければ ambiguous にします。
| させないこと | 理由 |
|---|---|
| 補償の対象かの判断 | 査定の仕事。約款と事故の状況で決まる |
| 既往症や治療の必要性の判断 | 医学的な判断で、受付の範囲を超える |
| 金額の計算・通貨の換算 | 支払額を決めるのは査定。受付では書かれた値を写すだけ |
| 読めない文字の補完 | 患者名の綴りを請求フォームに合わせて直さない |
| 追加依頼の要否の判断 | 必要書類の表と規則で決める |
4行目がいちばん起きやすい失敗です。 請求フォームの被保険者名を一緒に渡すと、読み違えた綴りをフォームに合わせて「直して」返します。 だから、AIには請求フォームの氏名を渡しません。
指示内容を固定する
あなたは損害保険会社の保険金請求の受付で、海外の医療機関が発行した
英文の書類がそろっているかを点検する立場です。
OCRが返した読み取り結果だけを見て判定してください。推測で埋めないでください。
【まず書類の種類を決める】
- medical_certificate … 医師が診断名・治療内容を記載した書類
- itemized_bill ....... 治療の明細と金額が並んだ請求書
- receipt ............. 支払ったことを示す領収書
- other ............... 上のどれでもない(紹介状、処方箋、航空券など)
複数に当てはまるときは、当てはまるものをすべて document_types に入れてください。
【点検する項目】
medical_certificate:patient_name, visit_date, diagnosis, treatment,
physician_name, physician_signature, hospital_name, issue_date
itemized_bill:patient_name, hospital_name, service_date, line_items, total, currency
receipt:patient_name, hospital_name, payment_date, amount_paid, currency
【status の選び方】
- ok ......... 値が読み取れており、その項目として解釈できる
- missing .... 値が無い。項目名の欄だけがあって値が空の場合も missing
- unreadable . 文字は検出されているが、信頼度が基準値 {threshold} を下回る
- ambiguous .. 値の候補が複数ある、または日付の日と月の順が決まらない
迷ったときに ok を選ばないでください。
【厳守事項】
- 記載がなければ「不明」とし、status を missing にしてください。
他の書類や他の項目から補って埋めないでください。
- 綴りを直さないでください。読み取った文字列をそのまま value に入れてください。
- 金額を計算しないでください。合計や支払額が無いときに、明細から足し上げないでください。
- 通貨を換算しないでください。書かれている記号や通貨コードをそのまま写してください。
- 日付は、同じ書類の中で日と月の順が確定できるときだけ YYYY-MM-DD に直してください。
確定できなければ、書かれたとおりの文字列を value に入れ、ambiguous にしてください。
- physician_signature は、署名の検出結果がその書類のページにあるときだけ ok です。
医師名が印字されていることを、署名があることとして扱わないでください。
- 補償の対象か、支払うべきか、治療が必要だったかは書かないでください。
- evidence には、判定の根拠にした文字列をそのまま写してください。
- confidence は OCR が返した値をそのまま入れてください。
【読み取り結果】{textract_result}
【信頼度の基準値】{threshold}
「綴りを直さない」を明記しないと、照合が意味を失います。 OCRが「TANAKA HIROSI」と読むと、AIは「HIROSHI」に直したくなります。直した瞬間に、読み違いか書き間違いかが分からなくなります。 医師名の印字を署名として扱わせないのも同じ理由で、署名の有無は Textract の署名の検出という別の事実で決めます。
出力形式を固定する
Claude API の構造化出力で、次の形のJSONを受け取ります。 output_config.format に type: "json_schema" とスキーマを渡し、オブジェクトには additionalProperties: false を付けます。
{
"claim_id": "",
"documents": [
{
"file": "",
"pages": [1, 2],
"document_types": ["medical_certificate"],
"checks": [
{ "item": "patient_name", "status": "ok | missing | unreadable | ambiguous",
"value": "", "confidence": 0, "evidence": "" }
]
}
]
}
AIの出力とは別に、スクリプトが突合の結果と判定を持ちます。
| 項目 | 値 | 意味 |
|---|---|---|
language_check | supported / suspect | 読み取れた語の数と信頼度から見た、対応言語かどうか |
name_match | match / mismatch / unknown | 書類の患者名と被保険者名(ローマ字)の一致 |
date_in_period | inside / outside / unknown | 受診日が保険期間の中か |
amount_match | match / mismatch / unknown | 領収書の支払額・通貨と、請求フォームの請求額・通貨 |
verdict | ready / needs_documents / needs_human | 必要書類の表と規則で決めた判定 |
1つ目の理由は、AIの判定と規則の判定を別の層に置けることです。 checks はAIが埋め、verdict はスクリプトが表で決めるので、取り決めが変わっても直すのは表だけです。
verdict | 条件 |
|---|---|
ready | 必要書類がそろい、必要な項目がすべて ok、突合がすべて match か inside |
needs_documents | 書類そのものが無い、または missing の項目がある |
needs_human | unreadable・ambiguous がある、language_check が suspect、突合に mismatch か outside がある |
2つ目は、不足を一度に全部出せることです。 3種類の書類の missing をまとめて依頼文にするので、「診断書をください」の後に「署名がありません」を送る往復が減ります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 請求受付システム | 定時の取り込み | 新しい請求の添付ファイルとフォームの内容を読む |
| 契約管理システム | 照会 | 被保険者名と保険期間を引く |
| Amazon S3 | ファイルの保存 | 非同期処理に渡す添付ファイルを置く |
| AWS Textract | API呼び出し(同期・非同期) | 問い合わせの答え、署名の位置、請求明細と領収書の項目を返す |
| Claude API | API呼び出し(構造化出力) | 書類の種類と記載事項の判定、依頼文の下書き |
| 確認用の一覧 | 受付チームの画面または表 | 判定と根拠を並べる |
非同期処理の完了は、通知で受け取ります。 Textract は完了を Amazon SNS のトピックへ知らせ、それを Amazon SQS か AWS Lambda で受けます。Get の操作を繰り返し呼んで完了を待つことは推奨されていません。
査定システムへは書き込まず、依頼文も自動では送りません。 書き込みを足すと、unreadable を見落とした請求がそのまま査定に進む経路ができます。
人が確認する
人が開くのは needs_documents と needs_human のものだけです。 ready のものは一覧で件数と請求者を流し見て査定へ回します。全件を開く設計にすると、第10章の60.0時間には収まりません。
language_checkがsuspectのものを先に見る … 英語以外なら翻訳の手配へ。請求者に依頼を出してはいけない書類ですneeds_humanの根拠を見る …unreadableは画像で読み、ambiguousの日付は他の書類と見比べます。mismatchは読み違いか本当の食い違いかを見分けますneeds_documentsの依頼文を確かめる …missingの項目が本当に空欄かを画像で確かめてから送ります- 判定を覆したら記録する … どの項目を、どちらに変えたかを残します
3番目を省かないでください。 請求者は海外の医療機関に書類を頼み直すことになり、空振りの依頼1件は長く印象に残ります。
Textract の人の確認の仕組み(Amazon Augmented AI)は新規の利用者を受け付けていないため、確認は既存の画面の側に作ります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 英語以外の書類(対応外の言語) | language_check を suspect にし、翻訳の手配へ。請求者へは依頼しない |
| 手書きの診断書 | 手書きの認識は英語だけ。読めない所は unreadable で人へ |
| パスワード付き・XFA形式のPDF | 受け付けられない。解除したもの・印刷用のPDFを頼む |
| 複数ページの請求明細 | ページごとに別の書類として返る。スクリプトで束ねる |
| キャッシュレスで医療機関から直接請求が来ている | 必要書類の表に従い、領収書を求めない |
| 被保険者名と患者名の綴りが違う | mismatch。直さずに人へ。ミドルネームの有無も含めて見る |
| 非同期処理の結果が取れない | 結果は7日間しか取れない。期限内に取り直すか、やり直す |
上の2行は Textract が読める範囲の外で起きます。 判定の側で無理に扱いません。
記録を残す
- 元の添付ファイルと、受け取った日時
- Textract が返した結果の全文と、使った問い合わせの一覧
- AIに渡した内容と、返ってきたJSONの全文
- 突合の結果と
verdict、そのとき使った必要書類の表の版 - 人が判定を覆した記録 … どの書類のどの項目を、どちらに変えたか
- 医療機関ごとの
unreadableとsuspectの発生率
「表の版」を残すのは、取り決めが後から変わるためです。 当時の表が無いと、過去の判定を説明できません。最後の行は、特定の国で読めない書類が続くとき、帰国前に英文の書類をもらうよう案内に書き足す材料になります。
04実装レベルの3段階
最小構成は、確かめるための段階です。 1件ずつ貼り付けるので、900件には使えません。 半自動化で②の英文を読む時間が大きく減り、本格構成で③と④が確認に変わります。 この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、suspect の多い国と unreadable の多い撮り方が先に分かります。
05工数削減シミュレーション
導入後 900件 × 4分 ÷ 60 = 60 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 海外旅行保険・留学生保険などを扱い、海外の医療機関が発行した英文の診断書・請求明細・領収書が毎月数百件届く損害保険会社や共済の請求受付部門。受付担当が英文を1枚ずつ読んで必要書類がそろっているかを確かめており、査定部門からの差し戻しと請求者への追加依頼が何往復も起きている場合。請求の受付情報(被保険者名・旅行期間・請求の種類)がシステムにデータとして入っている場合。
- 添付書類の多くが英語以外(中国語・韓国語・タイ語など)で届く場合。請求の件数が月に数十件で、目視で足りる場合。支払の可否、既往症との関係、治療の必要性といった査定の判断そのものを自動化したい場合は、この構成では代替できません。
07最小構成で試す方法
- 先月の請求から20件を選ぶ(うち数件は、査定から差し戻しがあったものを入れる)
- 添付書類を手元のAIサービスの画面に1件ずつ貼り付ける
- 「これらの書類を、診断書・請求明細・領収書・その他に分けてください。診断書は患者名・受診日・診断名・治療内容・医師名・署名・医療機関名・発行日、請求明細は患者名・治療日・明細・合計・通貨、領収書は支払額・支払日・通貨が書かれているかを項目ごとに判定してください。書かれていない場合と読めない場合を分けてください。綴りを直さず、金額を計算しないでください」と指示する
- 出てきた判定を、当時の差し戻しの記録と突き合わせる
20件は必ずやってください。 Textract とつなぐ前に、「読めれば判定できるのか」と「必要書類の表が作れるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時差し戻された不足が出た | OCRのAPIとの連携に進む |
| 綴りを直した・金額を足し上げた | 指示の書き方で直る。構成は有効 |
| 担当者によって「不足」の基準が違った | 必要書類の表を先に作る。 AIの問題ではない |
3行目が出ることは珍しくありません。 失敗ではなく、差し戻しが起きていた理由が1つ分かったということです。 査定チームと必要書類を書き出してから、同じ20件で試し直してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
英語以外の書類が全項目 missing になる | 対応言語は6つだけで、検出した言語も返らない。 語の数と信頼度で先に仕分ける |
missing と unreadable が混ざる | 信頼度で分ける。混ぜると請求者へ的外れな依頼が飛ぶ |
| AIが患者名の綴りを直す | 請求フォームの氏名をAIに渡さない。照合はスクリプトで行う |
| 医師名の印字が署名として扱われる | 署名は SIGNATURES の検出で決める |
| 複数ページのPDFが同期処理で失敗する | 同期はPDF・TIFFが1ページまで。非同期処理に回し、明細はページを束ねる |
| 非同期の結果を取り損ねる | 結果は7日間。取り込みの失敗を毎日確かめる |
| 人の確認に Amazon Augmented AI を使おうとする | 新規の利用者を受け付けていない。既存の画面に確認を作る |
| 必要書類の基準が担当者ごとに違う | 表にして、査定チームと合意する |
| 依頼文が自動で送られる | 下書きまでにする。 送信は人が行う |
上の2行が、この構成の失敗のほとんどです。 どちらも「空欄に見える」ことから出発しています。
下の2行も早く効いてきます。 基準が決まらないまま判定だけが出ると、機械に寄せた意味がなくなります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 被保険者の氏名・生年月日、旅行の行き先と期間、そして診断名・治療内容という病歴にあたる情報です。個人情報のなかでも特に慎重な取り扱いが求められる種類の情報です。
- 外部へ渡す範囲を段階ごとに絞る … 生成AIに渡すのは判定に要る読み取り結果だけにし、証券番号や連絡先は渡しません
- 処理する地域と結果の置き場所を決める … どの地域で処理・保存するかを社内の規程に照らして決めます。非同期の結果は既定で Textract 側に7日間保存され、自社の保存先に出す設定もあります
- この構成は査定の判断を代替しません … 補償の対象か、支払うかは査定担当者が決めることです
- 請求者への連絡を自動で送らない … 病歴を含む連絡です。宛先の誤りは、そのまま情報の漏えいになります
- 保存期間と権限を決める … 添付書類、読み取り結果、AIとのやり取りをいつまで残すかを社内の規程で決め、確認用の一覧は受付チームだけが見られるようにします
誤りが起きた場合のリスクは、不足を見落として査定に回すことと、不足でないものを請求者へ依頼することの2つです。 前者は unreadable を ok に混ぜると、後者は読めなかった書類を missing にすると起きます。その区別だけは設計で守ります。
10まず何から始めるか
1週目:必要書類の表を作る
査定チームと一緒に、治療費用の請求でどの書類のどの記載が無いと査定に進めないのかを書き出します。省略してよい条件も表にします。担当者ごとに違っていた基準が、ここで見えます。
2週目:20件で試す
第8章のとおり、先月の請求から20件を選び、手元のAIサービスで判定させます。当時の差し戻しと突き合わせ、綴りを直していないか、金額を足し上げていないかを最優先で見ます。
3週目:言語と撮り方を数える
過去1か月分の請求で、英語以外の書類と、撮り直しが要る写真の割合を数え、翻訳の手配の流れを決めます。
4週目:Textract の読み取りから判定までをつなぐ
スクリプトで添付ファイルを Textract に渡し、問い合わせ・署名・請求明細の結果から判定を一覧に書き出すところまで作ります。この時点では verdict を出さず、checks と language_check の一覧だけを見ます。
2か月目: 請求フォームと契約情報との突合と verdict を足します。needs_documents と needs_human の件数を毎週数えます。3か月目以降: 依頼文の下書きを足し、1件12分が何分になったかを実測します。国と医療機関ごとの unreadable と suspect の発生率を見て、請求の案内を書き直した時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 対応形式が JPEG、PNG、PDF、TIFF で XFA形式に非対応。同期は10MB・PDF/TIFF 1ページ、非同期はPDF/TIFF 500MB・3,000ページ。パスワード保護PDF不可。画像は各辺10,000ピクセル以下。問い合わせは1ページ同期15件・非同期30件。縦書き非対応。対応言語が英・仏・独・伊・葡・西の6つで、検出言語を返さず、問い合わせは英語のみ。文字の最小高さ15ピクセル(150DPIで8ポイント)。手書きは英語のみ | AWS: Set Quotas in Amazon Textract | 2026-09-29 |
AnalyzeDocument の FeatureTypes が TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT であること。署名の位置が SIGNATURE ブロックで返ること。QUERY_RESULT に信頼度が付くこと。AnalyzeDocument が同期の操作であること。人の確認に使う Amazon Augmented AI が2026年7月に保守モードに入り、新規の利用者を受け付けていないこと | AWS: AnalyzeDocument | 2026-09-29 |
| 問い合わせの応答が、問いと呼び名、答えの信頼度・位置・文字列を返し、答えが見つからなければ空のまま返ること | AWS: Queries | 2026-09-29 |
AnalyzeExpense が請求書・領収書から標準の項目(VENDOR_NAME、RECEIVER_NAME、INVOICE_RECEIPT_DATE、INVOICE_RECEIPT_ID、TOTAL、AMOUNT_PAID、AMOUNT_DUE など)と明細の行(EXPENSE_ROW)を返し、項目ごとに信頼度が付くこと。呼び方の違う項目を標準の名前にそろえること | AWS: Analyzing Invoices and Receipts | 2026-09-29 |
| 複数ページの文書が非同期処理になること。非同期の請求書・領収書の分析が各ページを別々の請求書・領収書として扱い、ページをまたいだ文脈を保たないこと | AWS: Processing Documents Asynchronously | 2026-09-29 |
| 非同期処理が S3 の文書を処理し、完了を SNS へ通知し、SQS か Lambda で受けること。Get の繰り返し呼び出しが推奨されないこと。結果が既定で7日間保存されること。出力先を自社の S3 に指定できること | AWS: Calling Amazon Textract Asynchronous Operations | 2026-09-29 |
構造化出力が output_config.format に type: "json_schema" とスキーマを渡して使い、スキーマに従ったJSONを返すこと。オブジェクトに additionalProperties: false が必要なこと | Claude Docs: Structured outputs | 2026-09-29 |
どの書類のどの記載を必須とするか、補償の対象か、支払うかは、査定部門と自社の規程で決めてください。 本記事は AWS と Claude の公式ドキュメントで確認できた範囲だけを扱っています。日本語の書類を読む用途には、AWS Textract は対応していません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0370)についてのご相談はこちらから。
