Media > AI活用ユースケース > 品質管理 > 海外の販売代理店から届く英文の保証修理請求書を読み取って台帳に転記し、保証期間外・重複請求・部品単価の食い違いの疑いを拾う

海外の販売代理店から届く英文の保証修理請求書を読み取って台帳に転記し、保証期間外・重複請求・部品単価の食い違いの疑いを拾う

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

海外の販売代理店から毎月届く英文の保証修理請求書を読み取り、シリアル・故障内容・交換部品・工数を保証請求台帳へ転記します。あわせて、保証期間外・重複請求・部品単価の食い違いの疑いを拾い、審査の担当者に回します。

サマリー
生成AI
ChatGPT/Claude/Gemini
AIサービス
AWS Textract/Azure AI/Google Document AI
連携・自動化
Python
対象業界
商社/製造
対象部門
品質管理/営業
対象業務
データ入力・転記/内容確認・チェック
主な課題
入力作業が多い/属人化している/確認ミスが多い
AIで行う処理
読み取り(OCR)
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
条件付き
現在工数
120h/月
AI導入後
40h/月
想定削減
67%
年間削減
960h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 代理店からメールで届いた請求書のPDFと添付の写真を、代理店ごとのフォルダに保存する
  2. 担当者が請求書を開き、請求番号・機種・シリアル・故障日・稼働時間・部品・工数・金額を台帳に写す
  3. シリアルで出荷の記録と納入の報告を探し、保証期間の内外を確かめる
  4. 台帳を同じシリアルで検索し、同じ部品の請求が最近無いかを見る
  5. 部品の行ごとに価格表を引き、単価と標準の修理時間を確かめる
  6. 故障の記述を読んで、社内の故障区分を付ける
  7. 疑わしいものは海外営業を通じて代理店に照会し、承認・一部承認・否認を決める
導入後(After)
  1. 【人/自動】 代理店からの請求書と添付を受付フォルダへ入れる(請求の受け取り用のメールアドレスから自動で保存してもよい)
  2. 自動保存をきっかけに、形式・ページ数・パスワードの有無を確かめる
  3. 自動OCRが請求書のキーと値、部品の表、質問への答え(シリアル・故障日・稼働時間など)を、信頼度とともに返す
  4. 自動生成AIが、項目を台帳の形にそろえ、部品の行を整え、故障の記述を社内の故障区分の候補に対応付ける
  5. 自動シリアルで納入日を引き、保証期間・稼働時間の条件を規則で照らす
  6. 自動台帳の過去の請求と照らし、重複の疑いを拾う
  7. 自動価格表と標準の修理時間で、単価と工数の上限を照らす
  8. 自動請求ごとに `clean` / `out_of_warranty` / `duplicate_suspect` / `price_diff` / `labor_over` / `needs_human` を付けて審査の一覧に出す
  9. 人審査の担当者が `clean` 以外を開き、代理店へ照会するか、承認・一部承認・否認とするかを決める
  10. 人照会が要るものは、海外営業が代理店へ連絡する
各工程の詳しい説明を読む
  1. 代理店からメールで届いた請求書のPDFと添付の写真を、代理店ごとのフォルダに保存する
  2. 担当者が請求書を開き、請求番号・機種・シリアル・故障日・稼働時間・部品・工数・金額を台帳に写す
  3. シリアルで出荷の記録と納入の報告を探し、保証期間の内外を確かめる
  4. 台帳を同じシリアルで検索し、同じ部品の請求が最近無いかを見る
  5. 部品の行ごとに価格表を引き、単価と標準の修理時間を確かめる
  6. 故障の記述を読んで、社内の故障区分を付ける
  7. 疑わしいものは海外営業を通じて代理店に照会し、承認・一部承認・否認を決める

(a)写すだけで時間がかかる。 2番で、書式ごとに項目の場所が違います。シリアルが表の上にある書式も、部品の行の中にある書式もあり、まず探すところから始まります。 手書きの作業報告が付いていれば、それも読みます。

(b)起算日を毎回調べ直している。 3番で、納入の報告が届いていないシリアルは、出荷の記録から推し量るしかありません。担当者によって、出荷日から何か月を足して見るかが違います。

(c)重複を見落とす。 4番で、同じ修理が別の請求番号で再送される、同じ部品の交換が数週間おいて二度請求される、といったものがあります。台帳の検索はシリアルの表記ゆれ(ハイフンの有無、先頭のゼロ)で当たらないことがあり、見落とすと二重に支払います。

(d)故障区分が人によって違う。 6番は品質の改善の材料になる工程ですが、忙しい月ほど「その他」が増えます。

  1. 【人/自動】 代理店からの請求書と添付を受付フォルダへ入れる(請求の受け取り用のメールアドレスから自動で保存してもよい)
  2. 【自動】 保存をきっかけに、形式・ページ数・パスワードの有無を確かめる
  3. 【自動】 OCRが請求書のキーと値、部品の表、質問への答え(シリアル・故障日・稼働時間など)を、信頼度とともに返す
  4. 【自動】 生成AIが、項目を台帳の形にそろえ、部品の行を整え、故障の記述を社内の故障区分の候補に対応付ける
  5. 【自動】 シリアルで納入日を引き、保証期間・稼働時間の条件を規則で照らす
  6. 【自動】 台帳の過去の請求と照らし、重複の疑いを拾う
  7. 【自動】 価格表と標準の修理時間で、単価と工数の上限を照らす
  8. 【自動】 請求ごとに clean / out_of_warranty / duplicate_suspect / price_diff / labor_over / needs_human を付けて審査の一覧に出す
  9. 【人】 審査の担当者が clean 以外を開き、代理店へ照会するか、承認・一部承認・否認とするかを決める
  10. 【人】 照会が要るものは、海外営業が代理店へ連絡する

4番目でAIに任せるのは「そろえる」ところまでです。 保証の内外も、重複も、単価の差も、AIには判断させません。判断の材料は社内のデータにあり、照らし方は規則で決まっているからです。

9番目で人が見るのは全件ではありません。 clean のものは台帳の一覧で流し見て承認に回し、疑いのあるものだけに時間を使います。 全件を開く運用にすると、写す作業が無くなっても時間はあまり減りません。

02今回想定するシステム構成

構成図
代理店からの英文の保証修理請求書(PDF・写真・作業報告)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認
   ▼
AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES)
   │   キーと値、部品の表、質問への答え、信頼度
   ▼
Claude API ── 項目を台帳の形にそろえ、故障の記述を故障区分の候補に対応付ける
   ▼
Python ── 保証期間・重複・単価・工数を社内のデータで照らす
   │   ① 納入日と稼働時間  ② 過去の請求  ③ 価格表  ④ 標準の修理時間
   ▼
判定(clean / out_of_warranty / duplicate_suspect / price_diff / labor_over / needs_human)
   ▼
【品質保証の担当者が clean 以外を確認】
   ├──▶ 代理店への照会(英文の下書き、海外営業が送る)
   └──▶ 保証請求台帳へ確定
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/GetDocumentAnalysis)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(項目の整形と故障区分の候補の対応付け、照会文の下書き)OpenAI API、Gemini API
差異計算Python(保証期間・重複・単価・工数の照合)保証管理の仕組みの照合の機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(請求書、読み取り結果、照合の結果)社内のファイルサーバー

出荷の記録・価格表・標準の修理時間の表は、新しく足すものではありません。 最初の準備は、シリアルごとの納入日を1つの表にまとめることと、社内の故障区分の一覧に英語の説明を付けることです。

OCRに AWS Textract を選ぶのは、請求書が英文だからです。 対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、日本語は読めません。 手書きの文字が読めるのは英語だけです。代理店の技術者が手書きで作業報告を付けてくる場合も、英語なら読めます。

使う機能は、文書の分析(AnalyzeDocument と、その非同期版の StartDocumentAnalysis)です。 FeatureTypes に FORMS を入れると「Serial No.: ABC12345」のようなキーと値の組が、TABLES を入れると部品の表がセルごとに、QUERIES を入れると「What is the machine serial number?」のような質問への答えが返ります。保証修理請求書は請求書というより書式のある申請書に近いので、請求書の専用の分析ではなく、こちらを使います。

質問(Queries)は英語の文書でしか使えません。 公式の上限の表に、質問の検出は英語の文書だけとあります。フランス語やスペイン語の書式では質問を外し、キーと値と表だけで読みます。 代理店の一覧に書式の言語を持たせておき、呼び出しの設定を切り替えます。

請求書は写真や作業報告と一緒に数ページになるので、非同期の処理で読みます。 同期の処理はPDFで1ページ・10MBまで、非同期はPDFで500MB・3,000ページまでです。

03どうやって実装するのか

Step1

処理の起点を決める

受付フォルダ(Amazon S3)に請求書が保存されたことを起点にします。 代理店は修理を終えたものから順に請求を送ってくるため、月末にまとめて流すより、届いたものから照らして疑いを出すほうが、照会の時間を確保できます。

請求の受け取り用のメールアドレスを代理店に案内しておき、添付を自動で受付フォルダへ保存する形にすると、担当者の保存の手間がなくなります。写真や作業報告が別のメールで届くこともあるので、請求番号で後から束ねられるようにします。

処理が終わった請求書は処理済みの場所へ移し、移すのは審査の一覧への書き出しまで成功したときだけにします。

Step2

入力データを集める

データ中身取得元
請求書PDF。送り元の代理店、受け取った日時、添付の写真と作業報告受付フォルダ
読み取り結果キーと値、部品の表のセル、質問への答え、値ごとの信頼度AWS Textract
納入日の表シリアル、機種、出荷日、エンドユーザーへの納入日、納入の報告の有無出荷の記録と納入の報告をまとめた表
保証の条件機種ごとの保証の月数と稼働時間の上限、部品ごとの延長保証保証の規定
価格表部品番号、代理店向けの価格、上乗せを認める率、その部品が付く機種部品の価格表
標準の修理時間修理の作業コードごとの標準の時間、代理店ごとの時間単価標準の修理時間の表
故障区分の一覧社内の故障区分のコードと、英語の説明と言い換えの例品質保証部で用意する一覧
過去の請求シリアル、部品番号、修理日、請求番号、判定保証請求台帳
代理店の一覧代理店のコード、書式の言語、数字と日付の書き方、時間単価自社で用意する一覧

質を決めるのは、納入日の表と故障区分の一覧です。 納入日が無ければ保証の内外が照らせず、故障区分の一覧に英語の説明が無ければ、AIの対応付けが社内の区分とずれます。

Step3

データの取得方法を決める

読み取りは、Lambda から StartDocumentAnalysis を呼んで始めます。 文書はS3の場所で指定し、完了の通知先にSNSのトピックを渡します。ClientRequestToken に受付のファイルごとの値を入れると、同じ請求書の処理が二重に始まりません。JobId は7日間しか有効でないので、完了を受けたらすぐに GetDocumentAnalysis で結果を取り、自社のバケットへ書き出します。

質問は QueriesConfig に並べます。 1件ごとに Text(質問の文)と Alias(答えの名前)を持たせ、非同期の処理では1ページに30個まで使えます。

質問の文(Text)Alias何に使うか
What is the machine serial number?SERIAL_NO納入日と過去の請求を引く第一の手がかり
What is the model number?MODEL価格表の機種の照合
What is the failure date?FAILURE_DATE保証期間の照合
What is the hour meter reading?HOUR_METER稼働時間の上限の照合
What is the dealer claim number?CLAIM_NO重複の照合
What is the total labor hours?LABOR_HOURS標準の修理時間の照合

答えは QUERY_RESULT の塊として返り、質問の塊と ANSWER の関係でつながります。 答えにも信頼度が付きます。答えが見つからないときは、答えの要素が空のまま返ります。 空を「0」や「該当なし」に読み替えないことが大事です。

取るものどこから何に使うか
質問への答えQUERY と QUERY_RESULT主要な項目の値と信頼度
キーと値の組KEY_VALUE_SET質問を使えない言語の書式と、質問で取れなかった項目
部品の表TABLE と CELL(列見出しは COLUMN_HEADER)部品番号・数量・単価・金額の行
チェック欄SELECTION_ELEMENT の SelectionStatus「故障部品を返送済み」などの欄
全文LINE と WORD症状・原因・処置の自由な記述

部品の表は、列見出しで列の意味を決めます。 表の塊には、列見出し・表の題・表の脚・合計のセルなどの種類が付いて返ります。合計の行(TABLE_SUMMARY)を部品の行として数えないように、セルの種類で外します。複数ページにまたがる表は、ページごとの表をつないでから渡します。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … 扱えるのはJPEG、PNG、PDF、TIFFです。XFA形式のPDFには対応していません
  2. パスワードの確認 … パスワードで保護されたPDFは読めません。 代理店に保護のないものを送り直してもらいます
  3. 解像度の確認 … 読み取れる文字の高さは15ピクセル以上(150dpiで8ポイント)。作業報告の手書きの小さな文字が、この下限に近いことがあります
  4. 言語の切り替え … 代理店の一覧の書式の言語が英語なら QUERIES を入れ、それ以外は FORMS と TABLES だけにします
  5. シリアルの正規化 … ハイフン・空白を外し、大文字にそろえます。元の文字列は残します
  6. 数値と日付の正規化 … 代理店の一覧の書き方で、「1.250,00」や「03/04/2026」を自社の形に直します
  7. 重複の検知 … 同じ代理店・同じ請求番号のものが既にあれば、再送の印を付けます

6番目はAIに任せません。 「03/04/2026」を3月4日と読むか4月3日と読むかは、代理店の国の書き方で決まります。 生成AIに決めさせると、もっともらしい方を選んで保証期間の内外がひっくり返ります。書き方は代理店の一覧で決め打ちします。

Step5

AIに処理させる

させるのは、読み取り結果を台帳の形にそろえ、部品の行を整え、故障の記述を社内の故障区分の候補に対応付けることだけです。

見るもの書き出す内容判断できないときの扱い
主要な項目請求番号、機種、シリアル、故障日、修理日、稼働時間、合計書かれていなければ「不明」
部品の行部品番号、品名、数量、単価、金額、故障部品か付随部品か区別できなければ unknown
工賃の行作業の内容、時間、時間単価、作業コードの記載時間が書かれていなければ「不明」
症状・原因・処置それぞれの原文と、故障区分の候補(最大3つ)と根拠候補が無ければ unclassified

故障区分の候補を最大3つまで出させるのは、記述があいまいなことが多いからです。 「engine won't start」だけでは、燃料系か電気系かが決まりません。1つに決めさせると、もっともらしい方を選んで集計に偏りが出ます。

させないこと理由
保証の対象かの判断納入日と保証の条件で規則が照らす
重複かの判断過去の請求と規則で照らす
単価や工数が妥当かの判断価格表と標準の修理時間で照らす
合計の作り直し行の合計が合わなくても、合わないまま出す
承認・否認の判断品質保証の担当者が決める

1行目がいちばん起きやすい失敗です。 故障日と納入日を一緒に渡すと、AIは頼まなくても月数を数えて「保証期間内」と書きます。納入日の報告が遅れているシリアルでは、その数え方の前提がずれていても気づけません。 だから納入日はAIに渡しません。

Step6

指示内容を固定する

あなたは機械メーカーの品質保証部で、海外の販売代理店から届いた
保証修理請求書を、社内の保証請求台帳の形にそろえる立場です。
渡すのは、OCRが返した読み取り結果と、社内の故障区分の一覧です。
そこに書かれたことだけを使ってください。

【書き出すこと】
1. 主要な項目: claim_no, model, serial_no, failure_date, repair_date,
   hour_meter, total_claimed
2. 部品の行: part_no, description, qty, unit_price, amount,
   role(causal_part / related_part / consumable / unknown)
3. 工賃の行: labor_description, hours, rate, labor_code
4. 出張費の行: distance, travel_hours, amount
5. 症状・原因・処置の原文と、故障区分の候補(最大3つ)とその根拠

【厳守事項】
- 書かれていない項目は「不明」としてください。推測で埋めないでください。
- 金額・日付・シリアル・部品番号は、読み取り結果の文字列のまま写してください。
  桁を補ったり、書き方を直したりしないでください。
- 金額を計算したり、合計を作り直したりしないでください。
- 保証期間の内外、重複かどうか、単価や工数が妥当かを書かないでください。
- 故障区分の候補は、渡した一覧のコードからだけ選んでください。
  当てはまるものが無ければ unclassified とし、新しい区分を作らないでください。
- 故障区分を1つに絞れないときは、無理に絞らず複数を挙げてください。
- role は記述から分かる範囲で付け、分からなければ unknown としてください。
- evidence には、根拠にした文字列をそのまま写してください。
- 保証修理請求書でない書類(見積、作業報告だけ、写真だけなど)と判断した
  場合は、そろえる作業をせず document_type に種類を書いてください。

【読み取り結果】{textract_result}
【故障区分の一覧】{failure_codes}
【この代理店の書式の言語】{form_language}

「渡した一覧のコードからだけ選ぶ」を書かないと、AIは新しい区分を作ります。 「Hydraulic seal failure」のような、それらしい名前の区分が台帳に増え、社内の区分で集計したときに数え漏れが出ます。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に type: "json_schema" とJSONスキーマを渡す)を使うと、スキーマどおりの形で返り、必須の項目が欠けません。

{
  "document_type": "warranty_claim",
  "claim_no": "",
  "dealer_code": "",
  "model": "",
  "serial_no": "",
  "failure_date": "",
  "repair_date": "",
  "hour_meter": "",
  "total_claimed": "",
  "parts": [
    { "part_no": "", "description": "", "qty": "", "unit_price": "",
      "amount": "", "role": "causal_part", "evidence": "" }
  ],
  "labor": [ { "labor_description": "", "hours": "", "rate": "", "labor_code": "" } ],
  "travel": { "distance": "", "travel_hours": "", "amount": "" },
  "failure": {
    "complaint": "", "cause": "", "correction": "",
    "code_candidates": [ { "code": "", "evidence": "" } ]
  }
}

この後に、Python が照合を足します。

確かめること規則結果
納入日シリアルで納入日の表を引けるか引けなければ needs_human(納入の報告の抜け)
保証期間故障日が納入日から機種ごとの月数の内か、稼働時間が上限の内か外なら out_of_warranty
重複同じシリアル・同じ部品番号の請求が決めた日数の内にあるか、同じ請求番号が既にあるかあれば duplicate_suspect と過去の請求番号
機種部品がその機種に付くものか付かなければ needs_human
単価価格表の価格に認める率を乗せた額を超えないか超えたら price_diff と差額
工数作業コードの標準の時間を超えないか超えたら labor_over と超過の時間
合計行の合計と請求の合計が合うか合わなければ needs_human
信頼度シリアル・日付・稼働時間の信頼度が決めた値を下回らないか下回れば needs_human

1つ目の理由は、保証期間を規則で照らすことで、起算日の扱いをそろえられることです。 納入の報告が無いシリアルを needs_human にしておけば、出荷日から推し量るかどうかを担当者ごとに決める余地が無くなります。 推し量る規則を作るなら、それも規則の側に書きます。

2つ目は、price_diff と labor_over を差額と超過の時間で出せることです。 どこまでを許すかは、代理店との取り決めで決めます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知で Lambda を起動請求書の受け取り
AWS TextractStartDocumentAnalysis/GetDocumentAnalysisキーと値、部品の表、質問への答え
Claude APIAPI呼び出し項目の整形と故障区分の候補、照会文の下書き
納入日の表・価格表・標準の修理時間の表読み取り照合の材料
保証請求台帳審査の結果の書き込み担当者が確定したものだけ
審査の一覧表への書き出し品質保証の担当者が確認する一覧

代理店への支払の登録には書き込みません。 審査の一覧までで止め、承認した金額の支払は既存の手順で行います。台帳への書き込みも、担当者が承認・一部承認・否認を決めたものだけです。 照合の途中の値を台帳に入れると、「審査中」と「確定」の区別が消えます。

Step9

人が確認する

人が開くのは clean 以外の請求です。 種類ごとに見る順を決めます。

  1. duplicate_suspect を最優先で見る … 過去の請求番号と並べ、本当に同じ修理か、同じ部品が短い期間で再び壊れたのかを確かめます。後者なら、それ自体が品質の情報です
  2. out_of_warranty を見る … 納入日の表が正しいかをまず疑います。納入の報告が遅れて届いていないかを海外営業に確かめます
  3. price_diff と labor_over を見る … 差額と超過の時間を見て、代理店の説明を求めるか、許すかを決めます
  4. 故障区分を確定する … 候補から選ぶか、別の区分にします。確定した区分だけを台帳に積みます

2番目で納入日を先に疑うのは、out_of_warranty の多くが納入の報告の遅れから出るからです。 代理店の在庫に長く置かれた機械は、出荷日から見ると保証の外でも、納入日から見ると内に入ります。否認する前に、起算日を確かめます。

目標は、240件をならして1件10分です。 clean は数分、duplicate_suspect や照会の要るものは20分以上かかる想定です。

Step10

例外に対処する

起きること対応
パスワードで保護されたPDF読めない。代理店に保護のないものを送り直してもらう
XFA形式のPDF対応していない。印刷してPDFにし直す
英語以外の書式で質問が使えないFORMS と TABLES で読み、主要な項目は生成AIがキーと値から拾う
日本語など対応外の言語が混ざる読めない。その請求は人が台帳に入れる
シリアルが納入日の表に無いneeds_human。納入の報告の抜けか、シリアルの読み違いか
シリアルの信頼度が低い読み直しの対象にし、写真のネームプレートと照らす
行の合計と請求の合計が合わない直さずに needs_human。画像で確かめる
OCRが応答しない受付フォルダに残す。処理済みへ移すのは成功時だけ

5行目と6行目は、どちらも「保証の外」と出かねない形です。 シリアルが表に無いのを「保証の対象外」と読むと、正しい請求を否認することになります。 代理店との関係に直接ひびくので、必ず人に回します。

Step11

記録を残す

  • 元の請求書のPDFと添付、受け取った日時・送り元
  • OCRが返したJSONの全文
  • AIが返したJSONと、そのとき参照した故障区分の一覧の版
  • 照合に使った納入日・価格表・標準の修理時間の版と、照合の結果
  • 人が判定と故障区分を確定・変更した記録
  • 代理店への照会と回答、承認した金額

「そのとき参照した版」を残すのは、価格表と保証の条件が後から変わるためです。当時の版が残っていないと、どの判定が正しかったかが決まりません。

04実装レベルの3段階

最小構成:請求書と故障区分の一覧を手でAIの画面に貼り、項目と候補を出させる / 1件ごとの転記の下書き
半自動化:上記+OCRのAPIで読み取り、納入日・過去の請求・価格表・標準の修理時間を規則で照らし、審査の一覧を出す / 読み取り、整形、照合
本格構成:上記+代理店の受け取りと納入の報告の取り込みを自動にし、照会文の下書きと故障区分の集計までつなぐ / 受け取りから集計まで

本記事の想定は半自動化です。 1件30分が10分になります。本格構成の納入の報告の取り込みは、代理店ごとに出し方が違います。 半自動化で needs_human の理由を3か月集め、納入の報告の抜けが多い代理店から順に取り込みを整えるほうが早く効きます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
4 名
月間件数
240 件
1件あたり現在時間
30 分
1件あたり導入後時間
10 分
現在  240件 × 30分 ÷ 60 = 120 時間/月
導入後 240件 × 10分 ÷ 60 = 40 時間/月
月間削減時間
80h
削減率
67%
年間削減時間
960h
年間金額換算(時間単価3,500円)
336万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 建設機械・農業機械・産業用の機器などを海外の販売代理店経由で販売し、代理店が行った保証修理の費用をメーカーが負担している製造業。代理店から英文の保証修理請求書が月に百件以上届き、本社の担当者が台帳へ手で写している場合。製品のシリアルごとの納入日(保証の起算日)と、部品の価格表・標準の修理時間を社内で持っている場合。海外の代理店を束ねる商社が、メーカーに代わって保証請求を取りまとめている場合。
向いていない
  1. 代理店からの請求書が日本語・中国語・韓国語で届く場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、手書きは英語のみです)。代理店がメーカーの保証システムに直接入力しており、紙やPDFの請求書が無い場合。月の請求が数十件で、目で見て足りる場合。なお、保証の対象とするか、どこまで支払うかの判断と、代理店との交渉は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の請求書から10件を選ぶ(部品の行の多いもの、手書きの作業報告が付いたもの、英語以外の書式のものを入れる)
  2. 10件について、担当者が台帳に入れた内容と付けた故障区分を書き出しておく
  3. 請求書のPDFと故障区分の一覧を手元のAIサービスに貼り付ける
  4. 「この保証修理請求書から、シリアル・故障日・稼働時間・部品の行・工数を書き出し、故障の記述に一覧の区分の候補を最大3つ挙げてください。書かれていない項目は『不明』としてください。保証の内外は判断しないでください」と指示する
  5. 出てきた内容を、担当者の台帳と突き合わせる

10件は必ずやってください。 組む前に、「書式の違う請求書から、同じ項目を同じ形で取れるか」を確かめます。

出てきた内容判断
担当者の台帳とほぼ同じ値が出たOCRと照合の仕組みに進む
保証の内外や妥当性を書いた指示の書き方で直る。構成は有効
故障区分の候補がほとんど外れる故障区分の一覧に英語の説明と言い換えを足す

3行目が出たら、一覧の側の問題です。 区分ごとに、代理店がよく使う英語の言い回しを3つずつ足すと、候補の当たり方が変わります。

08実装時につまずきやすいポイント

問題対策
AIが保証の内外を書いてしまう納入日を渡さず、規則で照らす
日付の月と日が入れ替わる代理店の一覧で書き方を決め打ちし、AIに読ませない
シリアルの表記ゆれで重複が当たらないハイフン・空白・大文字小文字をそろえてから照らす
英語以外の書式で質問が空になる質問は英語の文書だけ。 書式の言語で設定を切り替える
合計の行を部品として数える表のセルの種類で合計の行を外す
故障区分が勝手に増える一覧のコードからだけ選ばせる
納入の報告の遅れで保証の外と出るout_of_warranty は否認の前に起算日を確かめる
写真だけのページまで読んで費用がかさむ写真のページを読み取りから外す
照会のメールを自動で送る下書きまでにする。 送るのは海外営業
故障区分が台帳で育たない担当者が確定した区分だけを積み、一覧の言い換えを足していく

上の2行が、この構成の失敗のほとんどです。 どちらも、AIに読ませてはいけないもの(保証の判断と日付の読み方)を読ませたことから出ています。読み取りと整形はAI、判断の材料と照らし方は規則、という分け方を崩さないことです。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 代理店の名前と時間単価、部品の代理店向けの価格、修理の内容、エンドユーザーの名前と所在地(請求書に書かれていれば)、機械のシリアルと稼働時間です。代理店向けの価格と時間単価は、代理店どうしにも見せない取引の条件です。

  1. 外部へ渡す範囲を、整形に必要な項目に限る … 生成AIに渡すのは読み取り結果と故障区分の一覧だけです。価格表・時間単価・納入日は渡しません。 照らすのは社内の Python です
  2. エンドユーザーの個人情報を台帳に積まない … 請求書に個人の名前や住所があっても、台帳に要るのはシリアルと修理の内容です。読み取り結果から外す項目を決めておきます
  3. 承認と否認を自動にしない … 審査の一覧までで止め、判断は品質保証の担当者が行います
  4. 代理店への照会を自動で送らない … 照会文は下書きまでです。代理店との関係に直接ひびきます
  5. 保存先を暗号化する … 非同期の分析では、結果を自社のバケットに出し、KMSの鍵で暗号化する設定ができます
  6. 人の確認を Textract の仕組みに頼らない … Textract の人の確認の仕組みが使う Amazon Augmented AI は、2026年7月から新規の受付をしていません。確認は自社の審査の一覧で行います

誤りが起きた場合のリスクは、払いすぎと、正しい請求の否認の2つです。 前者は重複と単価の見落としで、後者は起算日の取り違えで起きます。どちらも、照らす材料と規則を社内に置く設計で防ぎます。

10まず何から始めるか

1週目:納入日の表を作る

出荷の記録と代理店からの納入の報告を、シリアルごとに1行の表にまとめます。納入の報告が無いシリアルが何台あるかを数えます。これが needs_human のおおよその数になります。

2週目:10件で試す

手元のAIサービスで項目と故障区分の候補を出させます。保証の内外を書いていないか、日付を書き換えていないかを最優先で見ます。

3週目:故障区分の一覧と照合の規則を整える

故障区分の一覧に英語の説明と言い換えを足します。保証期間・重複の日数・単価の上乗せの率・工数の上限を、品質保証部と海外営業部で合わせます。

4週目:受付から審査の一覧までをつなぐ

S3 の受付フォルダから StartDocumentAnalysis を呼び、整形と保証期間・重複の照合を一覧に書き出すところまで作ります。この時点では単価と工数の照合は手で行い、一覧の判定だけを見ます。

2か月目: 価格表と標準の修理時間の照合を足し、clean 以外の件数を毎週数えます。3か月目以降: 照会文の下書きと故障区分の集計を足し、1件30分が何分になったかを実測します。故障区分の候補が担当者の確定とほぼ一致するようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-06/最終更新:2026-10-07
確認した内容情報源確認日
StartDocumentAnalysis がJPEG・PNG・TIFF・PDFを非同期で分析し、完了をSNSに通知し、GetDocumentAnalysis で結果を取ること。FeatureTypes に TABLES・FORMS・QUERIES・SIGNATURES・LAYOUT を指定できること。ClientRequestToken に同じ値を使うと同じ JobId が返ること、JobId が7日間有効なこと、OutputConfig と KMSKeyId で自社のバケットへの出力と暗号化ができることAWS: StartDocumentAnalysis2026-10-06
AnalyzeDocument がキーと値(KEY_VALUE_SET)、表とセル、質問(QUERY・QUERY_RESULT、答えに信頼度)、チェック欄(SELECTION_ELEMENT)を返すこと。QueriesConfig が Text・Alias・Pages を持つこと。HumanLoopConfig が使う Amazon Augmented AI が2026年7月から新規の受付をしていないことAWS: AnalyzeDocument2026-10-06
質問の答えが ANSWER の関係で QUERY_RESULT につながり、信頼度と位置が付くこと、答えが見つからないときは空のまま返ることAWS: Queries2026-10-06
表がセル・結合セル・列見出し・表の題・表の脚・合計のセルなどの種類とともに返ることAWS: Tables2026-10-06
同期の処理がPDFで1ページ・10MBまで、非同期がPDFで500MB・3,000ページまで、XFA形式とパスワード保護のPDFは不可、対応言語が6言語で手書きは英語のみ、質問の検出は英語の文書だけ、質問は非同期で1ページ30個まで、文字の高さが15ピクセル以上(150dpiで8ポイント)であることAWS: Set Quotas in Amazon Textract2026-10-06
構造化出力を output_config.format(type: "json_schema")で指定でき、スキーマどおりの形で必須の項目が欠けずに返ることClaude Docs: Structured outputs2026-10-06

保証の条件と支払の上限は、自社と代理店との取り決めで決めてください。 本記事は上記の公開仕様で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0586)についてのご相談はこちらから。

AI活用について相談する
目次