Media > AI活用ユースケース > 営業 > 海外の顧客から届く英文の注文書を読み取って受注データに転記し、見積書との単価・納期・インコタームズ・支払条件の食い違いを拾う

海外の顧客から届く英文の注文書を読み取って受注データに転記し、見積書との単価・納期・インコタームズ・支払条件の食い違いを拾う

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

海外の顧客から届く英文の注文書を読み取り、品番・数量・単価・納期・インコタームズ・支払条件を受注データの形に転記します。出していた見積書と照らし、条件の食い違いを受注の確定前に拾います。

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

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

導入前(Before)
  1. 顧客からメールで届いた注文書のPDFを、顧客ごとのフォルダに保存する
  2. 営業アシスタントが注文書を開き、注文番号・日付・出荷先・明細を販売管理の仕組みに入力する
  3. 明細の行ごとに、顧客の品番から自社の品番を対応表で引く
  4. 見積番号か顧客と品番から見積を探し、単価・通貨・数量・納期を見比べる
  5. インコタームズと支払条件を、見積と顧客マスタの既定の条件と見比べる
  6. 食い違いがあれば営業担当に伝え、営業担当が顧客に確かめる
  7. 確かめ終えたら受注を確定し、注文請書(Order Acknowledgement)を送る
導入後(After)
  1. 自動注文の受け取り用のメールアドレスに届いた添付を、受付フォルダへ保存する
  2. 自動保存をきっかけに、形式・ページ数・パスワードの有無を確かめる
  3. 自動OCRが注文書のキーと値、明細の表、質問への答え(注文番号・見積番号・インコタームズ・支払条件など)を、信頼度とともに返す
  4. 自動生成AIが、項目と明細を受注データの形にそろえ、品番の対応表で引けない行に自社の品番の候補を出す
  5. 自動見積番号か顧客と品番で見積を引き、単価・通貨・数量・納期・インコタームズ・支払条件・有効期限を規則で照らす
  6. 自動注文ごとに `match` / `price_diff` / `terms_diff` / `quote_expired` / `below_moq` / `lead_time_short` / `needs_human` を付け、受注データの下書きと確認の一覧に出す
  7. 人営業アシスタントが一覧を見て、`match` のものは下書きを確かめて受注を確定する
  8. 人`match` 以外は営業担当が顧客に確かめ、条件を合わせてから確定する
  9. 人注文請書を送る(下書きは自動で作られる)
各工程の詳しい説明を読む
  1. 顧客からメールで届いた注文書のPDFを、顧客ごとのフォルダに保存する
  2. 営業アシスタントが注文書を開き、注文番号・日付・出荷先・明細を販売管理の仕組みに入力する
  3. 明細の行ごとに、顧客の品番から自社の品番を対応表で引く
  4. 見積番号か顧客と品番から見積を探し、単価・通貨・数量・納期を見比べる
  5. インコタームズと支払条件を、見積と顧客マスタの既定の条件と見比べる
  6. 食い違いがあれば営業担当に伝え、営業担当が顧客に確かめる
  7. 確かめ終えたら受注を確定し、注文請書(Order Acknowledgement)を送る

(a)入力に時間がかかる。 2番で、注文番号や出荷先の場所が書式ごとに違います。明細の多い注文書では、品名の英語を読み比べながら行を入力するだけで20分を超えます。

(b)条件の違いを見落とす。 4番と5番は、急ぎの注文が重なると省かれます。見積は「FCA Narita」なのに注文書は「CIF Los Angeles」、見積は「T/T in advance」なのに注文書は「Net 60」といった違いが、出荷の段階で初めて分かることがあります。

(c)見積の期限切れに気づかない。 有効期限を過ぎた見積の単価で注文が来ても、メーカーからの仕入の値上げが反映されていない単価のまま受けてしまうことがあります。

(d)人が足りない。 営業アシスタントは月末と四半期末に注文が集中すると入力に追われ、照らす作業が「後で見る」に回ります。 後で見る時間は来ないまま、注文請書が先に出ます。

  1. 【自動】 注文の受け取り用のメールアドレスに届いた添付を、受付フォルダへ保存する
  2. 【自動】 保存をきっかけに、形式・ページ数・パスワードの有無を確かめる
  3. 【自動】 OCRが注文書のキーと値、明細の表、質問への答え(注文番号・見積番号・インコタームズ・支払条件など)を、信頼度とともに返す
  4. 【自動】 生成AIが、項目と明細を受注データの形にそろえ、品番の対応表で引けない行に自社の品番の候補を出す
  5. 【自動】 見積番号か顧客と品番で見積を引き、単価・通貨・数量・納期・インコタームズ・支払条件・有効期限を規則で照らす
  6. 【自動】 注文ごとに match / price_diff / terms_diff / quote_expired / below_moq / lead_time_short / needs_human を付け、受注データの下書きと確認の一覧に出す
  7. 【人】 営業アシスタントが一覧を見て、match のものは下書きを確かめて受注を確定する
  8. 【人】 match 以外は営業担当が顧客に確かめ、条件を合わせてから確定する
  9. 【人】 注文請書を送る(下書きは自動で作られる)

4番目でAIに任せるのは「そろえる」と「品番の候補」までです。 単価が合っているか、条件が違うかはAIに判断させません。見積は販売管理の仕組みにあり、照らし方は規則で決まっているからです。

7番目で match のものも人が確定するのは、受注の確定が顧客との約束になるからです。 照らす作業は無くなっても、確定のボタンは人が押します。

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

構成図
顧客からの英文の注文書(PDF)
   ▼【トリガー】受付フォルダ(Amazon S3)への保存
AWS Lambda ── 形式・ページ数・サイズ・パスワードの確認
   ▼
AWS Textract(StartDocumentAnalysis:FORMS/TABLES/QUERIES)
   │   キーと値、明細の表、質問への答え、信頼度
   ▼
Claude API ── 受注データの形にそろえ、品番の候補を出す
   ▼
Python ── 見積と顧客マスタで照らす
   │   ① 単価・通貨  ② 数量と最小発注数量  ③ 納期
   │   ④ インコタームズ  ⑤ 支払条件  ⑥ 見積の有効期限
   ▼
判定(match / price_diff / terms_diff / quote_expired / below_moq / lead_time_short / needs_human)
   ▼
【営業アシスタントと営業担当が確認】
   ├──▶ 販売管理の仕組みへ受注を確定(人)
   └──▶ 注文請書の下書き
役割想定する製品代替候補
OCRAWS Textract(StartDocumentAnalysis/GetDocumentAnalysis)Azure AI Document Intelligence、Google Document AI
生成AIClaude API(受注データへの整形と品番の候補、注文請書の下書き)OpenAI API、Gemini API
差異計算Python(見積・顧客マスタとの照合)販売管理の仕組みの照合の機能
連携AWS Lambda(保存と完了の通知を起点に処理を動かす)Amazon EventBridge
保管Amazon S3(注文書、読み取り結果、照合の結果)社内のファイルサーバー

販売管理の仕組みと品番の対応表は、新しく足すものではありません。 最初の準備は、見積のデータを照合に使える形で取り出せるようにすることと、顧客マスタに既定のインコタームズと支払条件を持たせることです。

OCRに AWS Textract を選ぶのは、注文書が英文だからです。 対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語で、日本語の注文書は読めません。 国内の顧客の注文書は別の構成で扱います。

使う機能は、文書の分析(AnalyzeDocument と、その非同期版の StartDocumentAnalysis)です。 FORMS で「PO Number: 4500012345」のようなキーと値の組、TABLES で明細の表、QUERIES で「What are the Incoterms?」のような質問への答えが返ります。注文書は請求書の専用の分析の対象ではないので、文書の分析で読みます。

質問(Queries)は英語の文書でしか使えません。 ドイツやスペインの顧客が自国語の注文書を送ってくる場合は、質問を外してキーと値と表だけで読みます。顧客マスタに注文書の言語を持たせ、設定を切り替えます。

約款のページまで付いた注文書は数ページになるので、非同期の処理で読みます。 同期の処理はPDFで1ページ・10MBまで、非同期はPDFで500MB・3,000ページまでです。

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

Step1

処理の起点を決める

受付フォルダ(Amazon S3)に注文書が保存されたことを起点にします。 注文は届いた順に処理し、照らした結果が出るまでの時間を短くします。 顧客は注文請書の返りを待っており、条件の違いを確かめる連絡は早いほど通りやすいからです。

注文の受け取り用のメールアドレスを顧客に案内し、添付を自動で受付フォルダへ保存します。 営業担当の個人のアドレスに届いた注文は、そのアドレスへ転送してもらいます。転送が抜けると、その注文は照らされないまま残ります。

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

Step2

入力データを集める

データ中身取得元
注文書PDF。送り元のアドレス、受け取った日時受付フォルダ
読み取り結果キーと値、明細の表のセル、質問への答え、値ごとの信頼度AWS Textract
見積見積番号、顧客、品番、単価、通貨、最小発注数量、納期のめやす、インコタームズと場所、支払条件、有効期限販売管理の仕組み
品番の対応表顧客の品番、自社の品番、顧客の品名販売管理の仕組み
顧客マスタ顧客コード、注文書の言語、数字と日付の書き方、既定のインコタームズと支払条件、出荷先の一覧販売管理の仕組み
インコタームズの一覧規則のコード、名前、運賃と保険料を売り手が持つか自社で用意する一覧

質を決めるのは、見積のデータの取り出しやすさです。 見積が表計算のファイルに散らばっていると、照らす先がありません。見積番号・顧客・品番で1行を引ける形にそろえることが、最初の作業になります。

Step3

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

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

質問は QueriesConfig に並べ、Pages で当てるページを1ページ目と2ページ目に絞ります。 約款のページに質問を当てると、約款の中の一般的な支払条件の文を答えとして拾うことがあるためです。

質問の文(Text)Alias何に使うか
What is the purchase order number?PO_NO重複の検知、注文請書
What is the quotation number?QUOTE_NO見積を引く第一の手がかり
What are the Incoterms?INCOTERMS見積との照合
What are the payment terms?PAYMENT_TERMS見積・顧客マスタとの照合
What is the currency?CURRENCY単価の照合
What is the ship to address?SHIP_TO出荷先の一覧との照合

答えは QUERY_RESULT の塊として返り、信頼度が付きます。答えが見つからないときは空のまま返ります。 見積番号が空なら、顧客と品番で見積を引く経路に切り替えます。空を「見積なし」と読まないことが大事です。

取るものどこから何に使うか
質問への答えQUERY と QUERY_RESULT主要な項目の値と信頼度
キーと値の組KEY_VALUE_SET質問を使えない言語の書式、質問で取れなかった項目
明細の表TABLE と CELL品番・品名・数量・単位・単価・金額・納期の行
チェック欄SELECTION_ELEMENT の SelectionStatus「Partial shipment allowed」などの欄
全文LINE と WORD特記事項、約款のページの有無

見積は Python で販売管理の仕組みから取り出します。 生成AIには、品番の候補を出すための品番の対応表の一部だけを渡します。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … 扱えるのはJPEG、PNG、PDF、TIFFです。XFA形式のPDFには対応していません
  2. パスワードの確認 … パスワードで保護されたPDFは読めません。 顧客に保護のないものを送り直してもらいます
  3. 解像度の確認 … 読み取れる文字の高さは15ピクセル以上(150dpiで8ポイント)です
  4. 顧客の特定 … 送り元のアドレスのドメインから顧客マスタを引きます。引けなければ、注文書の会社名で引きます
  5. 言語の切り替え … 顧客マスタの注文書の言語が英語なら QUERIES を入れ、それ以外は FORMS と TABLES だけにします
  6. 数値と日付の正規化 … 顧客マスタの書き方で、「1.250,00」や「03/04/2026」を自社の形に直します。元の文字列は残します
  7. 重複の検知 … 同じ顧客・同じ注文番号のものが既にあれば、再送か変更の注文かの印を付けます

6番目はAIに任せません。 欧州の顧客の「1.250,00」を千二百五十と読むか一・二五と読むかで、数量か単価が千倍ずれます。 書き方は顧客マスタで決め打ちします。

7番目で「変更の注文」を見分けるのは、同じ注文番号に「Revision 2」「Change Order」と書かれて届くものがあるからです。 新しい注文として登録すると二重に出荷します。

Step5

AIに処理させる

させるのは、読み取り結果を受注データの形にそろえ、品番の対応表で引けない行に候補を出し、取引条件を原文のまま切り出すことだけです。

見るもの書き出す内容判断できないときの扱い
主要な項目注文番号、注文日、見積番号、出荷先、通貨、改訂の番号書かれていなければ「不明」
明細の行顧客の品番、品名、数量、単位、単価、金額、希望納期列が読めなければ unknown
自社の品番対応表で引けない行の候補(最大3つ)と根拠候補が無ければ unmatched
インコタームズ規則のコード、場所、版の年の原文書かれていなければ「不明」
支払条件支払条件の原文書かれていなければ「不明」
約款約款のページの有無と、そのページ番号内容の要約はしない

インコタームズと支払条件を「原文のまま」切り出させるのは、言い換えで意味が変わるからです。 「Net 60 days from invoice date」と「60 days after B/L date」は、どちらも60日ですが起算日が違います。要約させると「60日」とまとめ、照合で違いが消えます。

させないこと理由
見積との比較規則で照らす。AIに見積を渡さない
単価や数量の計算金額は読み取った文字列のまま
約款を受け入れるかの判断法務と営業の判断。AIは有無とページだけ
インコタームズの読み替え「CIF」を「CIP」に直すなどをしない
品番の確定候補まで。確定は営業アシスタント

4行目がいちばん起きやすい失敗です。 航空便の注文に「CIF」と書かれていると、AIは気を利かせて「航空便ならCIPのはず」と直して返すことがあります。直された値は見積と一致し、確かめるべき違いが消えます。

Step6

指示内容を固定する

あなたは輸出を行う商社の営業アシスタントで、海外の顧客から届いた
英文の注文書を、受注データの形にそろえる立場です。
渡すのは、OCRが返した読み取り結果と、その顧客の品番の対応表です。
そこに書かれたことだけを使ってください。

【書き出すこと】
1. 主要な項目: po_no, po_date, revision, quote_no, ship_to, currency
2. 明細の行: customer_part_no, description, qty, unit, unit_price,
   amount, requested_date
3. 品番の対応表で引けない行: 自社の品番の候補(最大3つ)と根拠
4. incoterms_text: インコタームズの記載を原文のまま
5. payment_terms_text: 支払条件の記載を原文のまま
6. 約款のページがあれば、そのページ番号

【厳守事項】
- 書かれていない項目は「不明」としてください。推測で埋めないでください。
- 数量・単価・金額・日付は、読み取り結果の文字列のまま写してください。
  計算したり、書き方を直したりしないでください。
- インコタームズと支払条件は、要約・言い換え・修正をせず原文のまま
  写してください。誤りに見えても直さないでください。
- 見積と合っているか、条件が妥当かを書かないでください。
- 自社の品番の候補は、渡した対応表に出てくる品番からだけ選んでください。
  品名が似ているというだけで候補にしないでください。
  候補が無い行は unmatched としてください。
- 約款の内容を要約したり、受け入れてよいかを書いたりしないでください。
- evidence には、根拠にした文字列をそのまま写してください。
- 注文書でない書類(見積依頼、納期の問い合わせなど)と判断した場合は、
  そろえる作業をせず document_type に種類を書いてください。

【読み取り結果】{textract_result}
【この顧客の品番の対応表】{part_xref}

「誤りに見えても直さない」を書かないと、インコタームズを直します。 第7章の「させないこと」の4行目の失敗は、この1文で防ぎます。

「品名が似ているというだけで候補にしない」は、型番の末尾だけが違う品番が並ぶ商材で効きます。 「Bearing 6204」と「Bearing 6204-2RS」は別の品番で、単価も違います。

Step7

出力形式を固定する

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

{
  "document_type": "purchase_order",
  "po_no": "",
  "po_date": "",
  "revision": "",
  "quote_no": "",
  "ship_to": "",
  "currency": "",
  "lines": [
    { "customer_part_no": "", "description": "", "qty": "", "unit": "",
      "unit_price": "", "amount": "", "requested_date": "",
      "own_part_candidates": [ { "part_no": "", "evidence": "" } ] }
  ],
  "incoterms_text": "",
  "payment_terms_text": "",
  "terms_pages": []
}

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

確かめること規則結果
見積見積番号か、顧客と品番で1件に引けるか引けなければ needs_human
有効期限注文日が見積の有効期限の内か外なら quote_expired
単価・通貨見積の単価・通貨と一致するか違えば price_diff と差額
数量最小発注数量以上か下回れば below_moq
納期希望納期が、注文日に納期のめやすを足した日以降か前なら lead_time_short
インコタームズ規則のコードと場所が見積と一致するか、11の規則のコードに当たるか違えば terms_diff
支払条件見積・顧客マスタの既定の条件と一致するか違えば terms_diff
品番対応表で1つに引けるか、候補が1つか引けなければ needs_human

1つ目の理由は、インコタームズを規則のコードと場所に分けて照らせることです。 Python が原文からコードと場所と版の年を取り出し、コードが一覧に無いもの(2020年版で名前が変わった旧来のDATなど)は terms_diff にします。ICCは、2020年版で旧来のDAT(Delivered at Terminal)をDPU(Delivered at Place Unloaded)に改めたとしています。

2つ目は、支払条件の照合を「一致」か「違う」かに限れることです。 支払条件の書き方は顧客ごとにばらばらなので、顧客マスタに過去に一致と確かめた書き方を積み、それと文字列で照らします。 積んでいない書き方は terms_diff で人に回し、確かめたら積みます。

Step8

システムへ連携する

つなぎ先方式内容
受付フォルダ(Amazon S3)保存の通知で Lambda を起動注文書の受け取り
AWS TextractStartDocumentAnalysis/GetDocumentAnalysisキーと値、明細の表、質問への答え
Claude APIAPI呼び出し受注データへの整形と品番の候補、注文請書の下書き
販売管理の仕組み見積・品番の対応表・顧客マスタの読み取り照合の材料
販売管理の仕組み受注データの下書きの取り込み確定は人が行う
確認の一覧表への書き出し営業アシスタントと営業担当が見る一覧

受注の確定は自動にしません。 この構成が作るのは受注データの下書きまでで、確定と注文請書の送付は人が行います。 確定すると出荷の手配と仕入先への発注が動き出すため、誤りが一息に広がります。

Step9

人が確認する

営業アシスタントは全件の下書きを見ますが、見方を判定で分けます。

  1. match は下書きと原本を並べて確定する … 照らす作業は済んでいるので、品番と数量を目で追うだけです
  2. terms_diff を最優先で営業担当に回す … インコタームズと支払条件の違いは、運賃・保険料・支払の時期に直結します
  3. price_diff と quote_expired を営業担当に回す … 差額と期限を添えて、顧客に確かめるかを決めてもらいます
  4. below_moq と lead_time_short は、仕入先のメーカーの回答を待つ … 受けられるかを確かめてから顧客に返します
  5. 品番の候補を確定したら対応表に積む … 翌月から同じ品番は機械で引けます

5番目が、この構成を月ごとに速くします。 最初の月は needs_human が多く出ますが、対応表が育つと、継続の注文は確定のボタンを押すだけになります。

目標は、360件をならして1件7分です。 match は数分、terms_diff のある注文は営業担当とのやり取りを含めて15分以上かかる想定です。

Step10

例外に対処する

起きること対応
パスワードで保護されたPDF読めない。顧客に保護のないものを送り直してもらう
英語以外の注文書で質問が使えないFORMS と TABLES で読み、主要な項目は生成AIがキーと値から拾う
見積番号が書かれていない顧客と品番で見積を引く。複数当たれば needs_human
同じ注文番号で改訂版が届く前の版との差だけを出し、新しい注文として登録しない
インコタームズの版の年が書かれていないterms_diff にはせず、確認の一覧に「版の記載なし」と添える
約款のページが付いているページ番号を添えて営業担当に知らせる。受け入れの判断は法務と営業
送り元のアドレスで顧客が引けない注文書の会社名で引く。引けなければ受け付けず担当者へ
OCRが応答しない受付フォルダに残す。処理済みへ移すのは成功時だけ

4行目を軽く見ないでください。 改訂版の注文書は、変わった行だけでなく全体が送り直されてきます。新しい注文として取り込むと、同じ品物を二重に手配します。

5行目で版の記載なしを terms_diff にしないのは、書かない顧客が多いからです。 ICCは契約で使う版を明記するよう案内しています。全件を止めると確認が回らないので、添え書きにとどめ、顧客との基本契約で版を決めておきます。

Step11

記録を残す

  • 元の注文書のPDFと、受け取った日時・送り元
  • OCRが返したJSONの全文
  • AIが返したJSONと、そのとき渡した品番の対応表の範囲
  • 照合に使った見積の版と、照合の結果
  • 人が受注を確定した記録と、確定までに変えた項目
  • 顧客への確認の内容と回答、注文請書を送った日時

「見積の版」を残すのは、見積が改訂されるためです。 顧客と単価を合わせ直して見積を出し直すと、古い見積で照らした結果と新しい見積で照らした結果が違ってきます。 どちらで受けたかを、後から確かめられるようにします。

04実装レベルの3段階

最小構成:注文書と品番の対応表を手でAIの画面に貼り、受注データの形に書き出させる / 1件ごとの入力の下書き
半自動化:上記+OCRのAPIで読み取り、見積・顧客マスタと規則で照らし、受注データの下書きと確認の一覧を出す / 読み取り、整形、照合
本格構成:上記+受注の下書きを販売管理の仕組みに取り込み、注文請書の下書きと仕入先への発注の下書きまでつなぐ / 受け取りから請書と発注の下書きまで

本記事の想定は半自動化です。 1件20分が7分になります。本格構成で仕入先への発注まで下書きを作ると、受注の誤りが発注の誤りに広がります。 半自動化で照合の判定を3か月見て、terms_diff と needs_human が落ち着いてから進めます。

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

前提値(モデル条件)
対象人数
6 名
月間件数
360 件
1件あたり現在時間
20 分
1件あたり導入後時間
7 分
現在  360件 × 20分 ÷ 60 = 120 時間/月
導入後 360件 × 7分 ÷ 60 = 42 時間/月
月間削減時間
78h
削減率
65%
年間削減時間
936h
年間金額換算(時間単価3,000円)
281万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

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

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

AI活用について相談する

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

向いている
  1. 国内のメーカーの部品・材料・機器を海外の顧客へ輸出する専門商社と、海外の顧客から直接注文を受けるメーカーの海外営業部門。顧客の購買の仕組みから出た英文の注文書がPDFで月に数百件届き、営業アシスタントが販売管理の仕組みへ手で入力している場合。見積書を販売管理の仕組みか表で番号付きで管理しており、注文書と突き合わせる先がある場合。
向いていない
  1. 注文書が日本語・中国語で届く場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、日本語の注文書は UC-0058 の構成が向きます)。顧客とEDIでつながっており、注文がデータで届く場合。月の注文が数十件の場合。なお、顧客の取引条件(裏面約款)を受け入れるかの判断と、価格・納期の交渉は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の注文書から10件を選ぶ(明細の多いもの、見積番号が書かれていないもの、改訂版のもの、約款付きのものを入れる)
  2. 10件について、営業アシスタントが入力した受注データを書き出しておく
  3. 注文書のPDFと、その顧客の品番の対応表を手元のAIサービスに貼り付ける
  4. 「この注文書から、注文番号・見積番号・明細の行・インコタームズ・支払条件を書き出してください。インコタームズと支払条件は原文のまま写してください。書かれていない項目は『不明』としてください。見積と合っているかは判断しないでください」と指示する
  5. 出てきた内容を、受注データと突き合わせる

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

出てきた内容判断
受注データとほぼ同じ値が出たOCRと照合の仕組みに進む
インコタームズや支払条件を言い換えた指示の書き方で直る。構成は有効
明細の列がずれて数量と単価が入れ替わる表の読み取りの確認が先。 顧客の書式ごとに列見出しを確かめる

3行目が出たら、書式の問題です。 罫線の無い表や、1行が2段に折り返された明細で起きやすく、その顧客の書式だけ列見出しの対応を顧客マスタに持たせると安定します。

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

問題対策
AIがインコタームズを直してしまう原文のまま写させ、誤りに見えても直さないと書く
支払条件を「60日」と要約する原文で切り出し、起算日まで照らす
約款のページから支払条件を拾う質問を当てるページを Pages で絞る
千と小数の区切りを読み違える顧客マスタで決め打ちし、AIに読ませない
改訂版を新しい注文として登録する同じ注文番号の改訂を見分け、差だけを出す
見積番号が無いと照らせない顧客と品番で引く経路を用意する
品名が似た別の品番を候補にする対応表の品番からだけ選ばせる
英語以外の注文書で質問が空になる質問は英語の文書だけ。 言語で設定を切り替える
受注を自動で確定する下書きまでにする。 確定は人
対応表が育たない確定した品番を毎回対応表に積む

上の3行が、この構成の失敗のほとんどです。 どれも取引条件の文字列が、どこかで「それらしく」変わってしまうことから出ています。原文を切り出し、照らすのは規則、という分け方を崩さないことです。

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

この構成で扱うデータ: 顧客の名前と出荷先、注文の品物と数量と単価、見積の単価と最小発注数量、支払条件です。見積の単価は、顧客ごとに違う取引の条件で、他の顧客に知られてはならない情報です。

  1. 外部へ渡す範囲を、整形に必要な項目に限る … 生成AIに渡すのは読み取り結果と、その顧客の品番の対応表だけです。見積の単価と他の顧客の情報は渡しません
  2. 受注の確定を自動にしない … 確定は顧客との約束で、出荷と発注が動き出します
  3. 約款の判断をAIに任せない … 顧客の購買の約款を受け入れるかは、法務と営業が決めます。AIが出すのは約款のページがあるという事実だけです
  4. 顧客への確認を自動で送らない … 条件の違いを確かめる連絡は、営業担当が顧客との関係を見て行います
  5. 保存先を暗号化する … 非同期の分析では、結果を自社のバケットに出し、KMSの鍵で暗号化する設定ができます
  6. 見られる人を絞る … 確認の一覧は、その顧客を担当する営業と営業アシスタントだけが見られるようにします

誤りが起きた場合のリスクは、見積と違う条件で受けることと、二重の手配の2つです。 前者はインコタームズや支払条件の言い換えで、後者は改訂版の取り違えで起きます。どちらも、原文を残して規則で照らす設計で防ぎます。

10まず何から始めるか

1週目:見積を引ける形にする

販売管理の仕組みから、有効な見積を見積番号・顧客・品番・単価・通貨・最小発注数量・納期のめやす・インコタームズ・支払条件・有効期限の列で取り出せるかを確かめます。取り出せない項目があれば、それが最初の課題です。

2週目:10件で試す

手元のAIサービスで、注文書を受注データの形に書き出させます。インコタームズと支払条件を言い換えていないかを最優先で見ます。

3週目:照合の規則を決める

顧客マスタに既定のインコタームズと支払条件を入れ、どの違いを terms_diff にするかを営業部で合わせます。過去に一致と確かめた支払条件の書き方を、顧客ごとに積み始めます。

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

S3 の受付フォルダから StartDocumentAnalysis を呼び、受注データの下書きと見積との照合を一覧に書き出すところまで作ります。この時点では販売管理の仕組みへの取り込みは手で行い、一覧の判定だけを見ます。

2か月目: 品番の候補と改訂版の見分けを足し、match 以外の件数を毎週数えます。3か月目以降: 注文請書の下書きを足し、1件20分が何分になったかを実測します。継続の注文の大半が match で確定できるようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-06/最終更新:2026-10-07
確認した内容情報源確認日
StartDocumentAnalysis がJPEG・PNG・TIFF・PDFを非同期で分析し、完了をSNSに通知し、GetDocumentAnalysis で結果を取ること。FeatureTypes に TABLES・FORMS・QUERIES などを指定できること。ClientRequestToken で二重起動を防げること、JobId が7日間有効なこと、OutputConfig と KMSKeyId で自社のバケットへの出力と暗号化ができることAWS: StartDocumentAnalysis2026-10-06
AnalyzeDocument がキーと値(KEY_VALUE_SET)、表とセル、質問(QUERY・QUERY_RESULT、答えに信頼度)、チェック欄(SELECTION_ELEMENT)を返すこと。QueriesConfig が Text・Alias・Pages を持つことAWS: AnalyzeDocument2026-10-06
質問の答えが QUERY_RESULT として信頼度とともに返り、答えが見つからないときは空のまま返ることAWS: Queries2026-10-06
同期の処理がPDFで1ページ・10MBまで、非同期がPDFで500MB・3,000ページまで、XFA形式とパスワード保護のPDFは不可、対応言語が6言語、質問の検出は英語の文書だけ、文字の高さが15ピクセル以上(150dpiで8ポイント)であることAWS: Set Quotas in Amazon Textract2026-10-06
インコタームズが売買契約で使われる11の3文字の取引条件であること、2020年版で旧来のDAT(Delivered at Terminal)がDPU(Delivered at Place Unloaded)に改められたこと、契約で使う版を明記するよう案内していることICC: Incoterms® 20202026-10-06
構造化出力を output_config.format(type: "json_schema")で指定でき、スキーマどおりの形で必須の項目が欠けずに返ることClaude Docs: Structured outputs2026-10-06

取引条件の解釈と顧客の約款の扱いは、自社の法務と顧客との基本契約で決めてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。

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

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

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

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