仕入先からの納期回答メールを読み取って発注残の納期を更新する
仕入先から届く納期回答のメールを入力に、発注番号、品番、数量、回答された納期、分納の有無を取り出し、発注残台帳の該当行と突き合わせます。当初の希望納期より遅れているものには遅延の印を付け、台帳を更新します。
- 利用ツール
- AWS Textract/Azure AI/ChatGPT/Claude/Gemini/Google Document AI/Make/n8n/Power Automate
- 対象業界
- 商社/建設/物流/製造
- 対象部門
- 物流/購買
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 仕入先から納期回答のメールが届く
- 担当者がメールを開き、どの発注に対する回答かを読む
- 発注番号が書かれていなければ、品番と仕入先名から発注残台帳を検索して特定する
- 回答された納期を読み取る(添付の表なら開いて該当行を探す)
- 発注残台帳の該当行に、回答納期を入力する
- 当初の希望納期より遅れていないかを見る
- 遅れていれば、生産計画の担当者と営業へ連絡する
- 回答が来ていない発注を、期日を見ながら督促する
- 仕入先からの納期回答が、購買の共有メールボックスに届く
- 自動メール本文と添付ファイルからテキストを取り出す
- 自動発注番号、品番、数量、回答納期、分納の内訳を抽出する
- 自動発注残台帳と突き合わせ、該当する発注行を特定する
- 自動当初の希望納期と比べ、遅延の有無と遅延日数を計算する
- 自動発注番号が一致し、遅延がないものは台帳を直接更新する
- 人発注が特定できないもの、遅延があるもの、分納のものを担当者が確認して確定する
- 自動遅延がある案件を、生産計画担当と営業へ日次でまとめて通知する
- 自動回答期限を過ぎても回答がない発注を一覧にして、督促候補として出す
各工程の詳しい説明を読む
- 仕入先から納期回答のメールが届く
- 担当者がメールを開き、どの発注に対する回答かを読む
- 発注番号が書かれていなければ、品番と仕入先名から発注残台帳を検索して特定する
- 回答された納期を読み取る(添付の表なら開いて該当行を探す)
- 発注残台帳の該当行に、回答納期を入力する
- 当初の希望納期より遅れていないかを見る
- 遅れていれば、生産計画の担当者と営業へ連絡する
- 回答が来ていない発注を、期日を見ながら督促する
問題は4つあります。
(a)書式が仕入先ごとに違う。 100社の仕入先がいれば、100通りの書き方があります。「3/15出荷」と書く会社、「第12週」と書く会社、Excelの表で送ってくる会社が混在します。
(b)発注番号が書かれていない回答がある。 「先日ご注文の件」とだけ書かれた回答が届きます。品番と仕入先名から探すことになり、1件に5分以上かかることがあります。
(c)分納の扱いが手間。 「300個のうち100個が3月15日、200個が4月10日」という回答は、台帳の1行では表せません。行を分割する作業が発生します。
(d)遅延の発見が遅れる。 入力が追いつかないと、遅れていることに気づくのが数日後になります。気づくのが遅れるほど、生産計画の組み替えが難しくなります。
- 仕入先からの納期回答が、購買の共有メールボックスに届く
- 【自動】 メール本文と添付ファイルからテキストを取り出す
- 【自動】 発注番号、品番、数量、回答納期、分納の内訳を抽出する
- 【自動】 発注残台帳と突き合わせ、該当する発注行を特定する
- 【自動】 当初の希望納期と比べ、遅延の有無と遅延日数を計算する
- 【自動】 発注番号が一致し、遅延がないものは台帳を直接更新する
- 【人】 発注が特定できないもの、遅延があるもの、分納のものを担当者が確認して確定する
- 【自動】 遅延がある案件を、生産計画担当と営業へ日次でまとめて通知する
- 【自動】 回答期限を過ぎても回答がない発注を一覧にして、督促候補として出す
自動化されるのは「読む」「探す」「打ち込む」「遅延を見つける」「督促対象を洗い出す」の5つです。人が見るのは、特定できなかったものと、遅れているものだけになります。
02今回想定するシステム構成
仕入先からの納期回答メール(本文 / Excel添付 / PDF添付) │ ▼ 購買の共有メールボックス │ ▼【トリガー】新しいメールが届いたとき(添付を含む) Power Automate │ ├──▶ 添付の振り分け(Excel → 変換 / PDF → OCR) │ └─ Azure AI Document Intelligence(prebuilt-layout) │ ├──▶ LLM API ── 発注番号 / 品番 / 数量 / 回答納期 / 分納 を構造化JSONで抽出 │ └──▶ 発注残台帳と突合(発注番号 → 品番+仕入先の順で照合) │ ├─【一致・遅延なし】──▶ 台帳を自動更新 │ └─【不一致 / 遅延あり / 分納】──▶ 確認キュー【人が確定】 │ ▼ 生産管理システムの発注残を更新 + 遅延一覧を日次で通知
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Power Automate | Make、n8n |
| OCR | Azure AI Document Intelligence(prebuilt-layout) | Google Document AI、AWS Textract |
| 生成AI | Claude API(structured outputs) | OpenAI API、Gemini API |
| 台帳 | 生産管理システムの発注残 | Google スプレッドシート、kintone |
| 通知 | Teams | メール、Slack |
仕入先の大半がEDIやWeb発注ポータルを使えるなら、そちらを先に検討してください。 回答が構造化データで届けば、この構成は不要になります。自前で組む価値があるのは、仕入先が小規模でEDIを導入できず、メールでの回答が当面変わらない場合です。実際には、上位10社はEDI・残りはメールという二本立てになることが多く、そのメール側を受け持つ構成になります。
03どうやって実装するのか
処理の起点を決める
購買の共有メールボックスへの着信を起点にします。
Office 365 Outlook コネクタの「When a new email arrives (V3)(新しいメールが届いたとき)」トリガーを使います。このトリガーには、件名での絞り込み(Subject Filter)、差出人アドレスでの絞り込み(From)、監視するフォルダーの指定(Folder)、添付ファイルの内容を取得するかどうか(Include Attachments)、添付のあるメールだけを対象にするか(Only with Attachments)といったパラメーターがあります。
専用の共有メールボックスを用意し、仕入先にそこへ返信してもらうのが確実です。 担当者個人のメールボックスを監視する構成にすると、担当者が休んだときに止まります。
添付の中身は、「Get Attachment (V2)」アクションでメッセージIDと添付IDを指定して取得します。返るのは Content Bytes(バイナリ)です。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| メール本文 | 納期回答の文面 | 共有メールボックス |
| 添付ファイル | 納期回答表(Excel・PDF) | メール添付 |
| 発注残 | 発注番号、仕入先コード、品番、数量、希望納期、回答納期、ステータス | 生産管理システム |
| 仕入先マスタ | 仕入先コード、正式名称、担当者のメールアドレス | 生産管理システム |
| 品番マスタ | 自社品番、仕入先品番、品名 | 生産管理システム |
品番マスタに「仕入先品番」を持っているかどうかが、この構成の成否を分けます。 仕入先は自社の品番で回答してきます。対応表がないと、照合が人手に戻ります。
データの取得方法を決める
メール本文: トリガーの出力から取ります。HTMLメールの場合はテキストに変換します。
Excel添付: 表を読み取ってCSVまたはテキストに変換します。Excelファイルをそのまま生成AIに渡すことはできません。 Claude API のドキュメントには、.txt や .csv などのプレーンテキストは document ブロックで直接使えるが、.xlsx や .docx などのバイナリ形式は対応しておらず、テキストかPDFに変換する必要があると明記されています。ワークフロー側で変換工程を必ず挟んでください。
PDF添付: Azure AI Document Intelligence の prebuilt-layout モデルに渡します。このモデルは文字に加えて表を抽出し、行数・列数・行結合・列結合の情報を返します。outputContentFormat=markdown を指定するとMarkdown形式で出力でき、v4.0(2024-11-30 GA)以降は結合セルや複数行ヘッダーを表現するため表がHTML形式で出力されます。納期回答表は結合セルが多いので、この形式で受け取れることが効きます。
なお、Claude API は PDF を直接扱うこともできます(1リクエストあたり最大32MB・600ページ、コンテキストウィンドウが1Mトークン未満の場合は100ページ)。ページ数の少ない回答表ならこちらでも足ります。表の構造を厳密に取りたい場合はOCRサービス、文章混じりの回答書ならClaude直接、と使い分けます。
発注残・マスタ: 生産管理システムのAPI、または日次エクスポートを参照します。照合の対象は「未回答または回答済みで未納品」の発注に限れば、数百行から数千行に収まります。
AIへ渡す前に整形する
- 引用部分の除去 … 返信メールには自社が出した発注メールがぶら下がっています。ここに書かれた希望納期を「回答納期」として拾う事故が起きます。 区切り行から下を必ず落とします
- 署名の除去 … 署名の電話番号を数量として拾うことがあります
- 添付の種別判定 … 納期回答表、請求書、図面が混ざります。ファイル名と中身から判定し、回答表以外は処理対象から外します
- 照合対象の絞り込み … 発注残のうち「その仕入先の未納品分」だけをプロンプトに渡します。全件を渡すと誤照合が増えます
- 年の補完 … 「3/15」とだけ書かれた回答が届きます。発注日と希望納期から年を推定するルールを前処理に置き、AIに推測させません
AIに処理させる
| 処理 | 内容 |
|---|---|
| 発注の特定 | 文面から発注番号を取り出す。なければ品番と数量から候補を挙げる |
| 回答納期の抽出 | 「3月15日出荷」「第12週」「月末」などの表現を日付に直す |
| 分納の展開 | 「100個を3/15、200個を4/10」を2行に分ける |
| 出荷日か着荷日かの判別 | 「出荷予定」と「納入予定」を区別する。書かれていなければ不明とする |
| 条件付き回答の検出 | 「〇日までにご発注いただければ」のような条件を拾う |
| 回答以外の内容の検出 | 値上げの連絡、欠品の連絡、代替品の提案が混ざっていることを知らせる |
「出荷日か着荷日か」の判別を入れてください。 ここを取り違えると、輸送日数の分だけ納期の見込みがずれます。遠方の仕入先では1週間ずれることがあります。
指示内容を固定する
あなたは製造業の購買部で納期管理を担当する担当者です。
仕入先からの納期回答メールを読み、発注残と突き合わせる項目を取り出してください。
【厳守事項】
- 引用部分(自社が送信した発注メールの内容)は読まないでください。
回答は今回書かれた本文と添付にだけ書かれています。
- 発注番号が本文に書かれていない場合は、po_number を null にし、
【この仕入先の発注残】から候補を最大3件まで candidates に挙げてください。
1つに決めないでください。
- 日付は YYYY-MM-DD で返してください。年が書かれていない場合は
year_missing を true にし、date_raw に原文の表記をそのまま残してください。
年を推測して補わないでください。
- 「出荷」「発送」とあれば ship、「納入」「着荷」「入荷」とあれば arrive、
どちらとも読めなければ unknown を date_type に入れてください。
- 分納の場合は splits に数量と日付の組を分けて入れてください。
- 納期回答以外の連絡(値上げ、欠品、代替品の提案、条件付きの回答)が
含まれていれば、other_notices に原文を引用してください。
【この仕入先の発注残(未納品分)】
{open_po_list}
【品番の対応表(自社品番 / 仕入先品番)】
{part_mapping}
【メール本文】
{mail_body}
【添付の内容】
{attachment_text}
「年を推測して補わない」の1行が重要です。 12月に「1/20」という回答が届いたとき、それが翌年の1月20日であることは文面からは決まりません。発注日との関係で判断すべきものなので、前処理のルールで補い、AIには推測させません。
出力形式を固定する
{
"supplier_name": "",
"po_number": "",
"candidates": [
{ "po_number": "", "part_no": "", "qty": 0, "reason": "" }
],
"part_no": "",
"qty": 0,
"answer_date": "",
"date_raw": "",
"date_type": "ship | arrive | unknown",
"year_missing": false,
"splits": [
{ "qty": 0, "date": "", "date_type": "ship | arrive | unknown" }
],
"other_notices": [],
"confidence": "high | medium | low"
}
Claude API の structured outputs を使うと、output_config.format に JSON スキーマを渡すことで、制約付きデコードによりスキーマに沿った出力が保証されます。公式ドキュメントは「JSONのパースエラーが起きない」「型と必須項目が保証される」「スキーマ違反によるリトライが不要」と説明しています。日付を文字列型、数量を数値型で固定しておくと、後段の台帳更新で型変換の失敗が起きません。
システムへ連携する
生産管理システムの発注残を更新します。連携方法は3通りあります。
| 方式 | 内容 |
|---|---|
| API連携 | 生産管理システムがAPIを提供していれば、確定と同時に更新する |
| ファイル取込 | 所定のCSV形式で書き出し、システムの取込機能で読ませる |
| 中間台帳 | システムを直接更新せず、スプレッドシートの中間台帳に書き、購買が一括で取り込む |
最初は中間台帳から始めることを勧めます。 生産管理システムを直接書き換える構成は、誤った納期が入ったときの影響が大きく、切り戻しも面倒です。中間台帳で2か月運用して精度を測ってから、直接更新に移します。
遅延の通知は、1件ごとに送らず日次でまとめて1通にします。1件ずつ飛ばすと、受け取る側が見なくなります。
人が確認する
全件は確認しません。条件を決めて分けます。
| 条件 | 扱い |
|---|---|
| 発注番号が一致し、遅延がなく、確信度が high | 自動で更新する(人は見ない) |
| 発注番号が特定できない | 人が確認する |
| 当初の希望納期より遅れている | 人が確認する |
| 分納が含まれている | 人が確認する |
| 出荷日か着荷日かが unknown | 人が確認する |
| 年が書かれていない | 人が確認する |
| 納期回答以外の連絡が含まれている | 人が確認する |
この分け方が、この構成の設計の中心です。遅延なしの回答を自動で通すから工数が減り、遅延のある回答を人に回すから見落としが防げます。 全件を人が見る設計にすると、削減効果は半分以下になります。
自動更新した分も、監査のために日次の更新一覧を担当者に送ります。 見るのは1日1回、数分です。
運用を始めて2か月は、自動更新の対象も全件を人が見てください。精度が分かる前から自動で通す範囲を広げないでください。
例外に対処する
| 起きること | 対応 |
|---|---|
| 発注番号が書かれていない | 候補を最大3件挙げて人へ回す。1つに決めさせない |
| 品番が仕入先の品番で書かれている | 品番対応表で変換する。対応表にない場合は人へ回す |
| 1通に複数の発注への回答が入っている | 発注ごとに分割して処理する |
| 「3/15」と年が書かれていない | 前処理のルールで補完し、year_missing が立っていれば人が確認する |
| 「未定」「確認中」という回答 | 納期を更新せず、督促の予定日だけを更新する |
| 分納の回答 | 台帳の行を分割する。自動では行わず、人が確定してから分割する |
| 値上げや欠品の連絡が混ざっている | other_notices に入れ、購買担当へ別途通知する。納期の更新だけで終わらせない |
| 添付が画像(写真・スキャン) | OCRに回す。読み取れなければ人へ回す |
| Excelの添付が開けない・壊れている | 人へ回す。中身を推測しない |
| 自動更新した納期が誤っていた | 更新履歴から元の値に戻せるようにする。上書きだけの設計にしない |
| 回答が来ないまま期限を過ぎた | 督促候補として一覧に出す。自動で督促メールを送らない |
記録を残す
- メールの原本(本文・添付)
- 抽出結果(生のJSON)と確信度
- 照合の結果(どの発注に紐づけたか、その根拠)
- 台帳の更新前後の値
- 自動更新か、人の確定かの区別
- 人が修正した項目と、修正前後の値
自動更新か人の確定かを区別して残してください。 後で納期のトラブルが起きたとき、誰の判断で入った値かが分かる必要があります。更新前の値を残しておけば、誤更新の切り戻しもできます。
04実装レベルの3段階
半自動化の時点で、6分が3分程度になります。 読み取りと照合が消えるためです。本格構成にすると1.8分程度になります。遅延なしの回答を人が見なくなる分が大きく、ここが削減の主な源です。
05工数削減シミュレーション
導入後 600件 × 1.8分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 仕入先への発注が月300件以上あり、納期回答がメール(本文または添付)で個別に届いている企業。発注番号を発注書に印字していて、仕入先の回答にもその番号が引用されていること。発注残を台帳またはシステムで管理していて、更新用のAPIかCSV取込があること。
- 仕入先の大半がEDIやWeb発注ポータルで回答していて、納期がすでに自動で入ってくる場合。発注が月50件以下で、担当者が全件を記憶の範囲で追えている場合。個別受注生産で1件あたりの納期調整に長い交渉が必要な取引(読み取りより交渉が本体になる)。
07最小構成で試す方法
- 直近の納期回答メールを30通用意する(仕入先はばらばらに選ぶ。添付ありを1/3ほど含める)
- その仕入先の発注残と、品番の対応表をテキストにまとめる
- ChatGPTかClaudeの画面に、発注残と対応表を貼り、メール本文を貼って上のプロンプトを試す
- 発注番号の特定、回答納期、出荷か着荷かの3点が正しく取れたのが何通かを数える
この検証を必ずやってください。 仕入先の書き方の幅は、実際のメールを見るまで分かりません。判断の目安は次のとおりです。
| 30通の結果 | 判断 |
|---|---|
| 27通以上(9割)正しい | 自動化する価値がある |
| 21〜26通 | 自動で通す条件を絞れば使える。遅延なし・確信度highだけを自動にする |
| 20通以下 | 発注番号が引用されていない回答が多いはず。仕入先に「発注番号を引用して返信してください」と依頼するほうが先 |
最後の行は、この業務でよくある結論です。依頼で改善する余地がある場合、AIを入れる前にそちらをやってください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 引用部分の希望納期を回答納期として拾う | 区切り行から下を落とす前処理を必ず入れる。もっとも多い事故 |
| 発注番号が書かれていない回答が多い | 仕入先に発注番号の引用を依頼する。並行して品番と数量からの候補提示で凌ぐ |
| 仕入先の品番で回答されて照合できない | 品番対応表を先に作る。ここが無いと構成が成立しない |
| Excelの添付を生成AIに渡せない | .xlsx は document ブロックで扱えない。テキストかPDFに変換する工程を挟む |
| 「3/15」の年を取り違える | 前処理のルールで補い、AIに推測させない。年が無い回答は人が確認する |
| 出荷日と着荷日を取り違える | date_type を必ず返させる。unknown は人へ回す |
| 分納を1行で扱ってしまう | splits で分けて返させ、人が確定してから台帳の行を分割する |
| 自動更新の範囲を最初から広げる | 最初の2か月は全件を人が見る。精度を測ってから範囲を決める |
| 遅延通知を1件ずつ送って見られなくなる | 日次でまとめて1通にする |
| 誤った納期で上書きして戻せない | 更新履歴を残す。上書きだけの設計にしない |
| 結合セルの多い回答表が読めない | prebuilt-layout の Markdown 出力を使う。v4.0 以降は表がHTML形式で出力される |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 仕入先名、発注品番、数量、納期。自社の生産計画と、仕入先との取引内容が含まれます。
- 外部AIへの入力可否 … 発注品番と数量からは、自社が何をどれだけ作ろうとしているかが読み取れます。新製品の部品が含まれる場合はとくに注意が必要です。自社の情報管理規程と、仕入先との秘密保持契約を確認してください
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- 共有メールボックスの権限 … 購買部門に限定します。納期回答には単価が書かれていることがあります
- 自動実行してよい範囲 … 台帳の更新は自動化してよい範囲ですが、仕入先への督促メールの自動送信は入れないでください。 取引先との関係に直接影響します。督促は候補の一覧を出すところまでにします
- 遅延情報の扱い … 特定の仕入先の遅延が続いていることは、取引条件の見直しにつながる情報です。集計結果の共有範囲を決めてください
- 誤更新への備え … 自動更新した値は履歴を残し、元に戻せるようにします。監査のため、自動更新か人の確定かを区別して記録します
誤りが起きた場合のリスクは、誤った納期にもとづく生産計画の欠品、または過剰な在庫です。遅延のある回答を必ず人に回す設計にしているのは、このためです。
10まず何から始めるか
1週目:発注番号の引用率を数える
直近1か月の納期回答メールを100通取り出し、発注番号が引用されているものが何通かを数えます。この比率が、自動で通せる割合の上限になります。 3割を切るなら、仕入先への依頼から始めてください。
2週目:品番の対応表を確かめる
自社品番と仕入先品番の対応表があるか、あるなら実際の回答メールの品番が引けるかを確かめます。ここが無ければ作ります。この構成でもっとも時間がかかるのは、実はこの表の整備です。
3〜4週目:抽出を30通で試す
生成AIの画面で30通試し、発注番号の特定、回答納期、出荷か着荷かの3点の正解率を測ります。9割を超えたら次へ進みます。
2か月目:半自動化を作る
共有メールボックス、抽出、照合、中間台帳への出力までを作り、購買1名が2週間使います。6分が何分になるかを実測します。生産管理システムへの書き戻しはまだ作りません。
3か月目以降: 精度が確認できたら、自動で通す条件を決めて本格構成に進みます。最初の条件は「発注番号が一致し、遅延がなく、確信度がhigh」だけに絞ってください。 範囲を広げるのは、3か月分の実績を見てからにします。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Office 365 Outlook コネクタに「When a new email arrives (V3)」トリガーがあり、件名・差出人・フォルダー・添付の有無で絞り込めること。添付の内容は「Get Attachment (V2)」で取得できること | Microsoft Learn: Office 365 Outlook connector | 2026-09-11 |
Azure AI Document Intelligence の prebuilt-layout が表を行数・列数・結合情報つきで抽出すること。outputContentFormat=markdown でMarkdown出力が可能で、v4.0(2024-11-30 GA)以降は結合セルや複数行ヘッダーのため表がHTML形式で出力されること | Microsoft Learn: Document layout analysis | 2026-09-11 |
Claude API の structured outputs が output_config.format に JSON スキーマを指定する方式で、制約付きデコードによりスキーマ準拠を保証すること | Claude Docs: Structured outputs | 2026-09-11 |
| Claude API のPDF対応が1リクエストあたり最大32MB・600ページ(コンテキストウィンドウが1Mトークン未満の場合は100ページ)であること。.xlsx や .docx はdocumentブロックで扱えず、テキストかPDFへの変換が必要なこと | Claude Docs: PDF support | 2026-09-11 |
生産管理システムへの書き戻し方式(API / CSV取込 / 中間台帳)は製品によって異なります。この部分は利用環境に応じた個別確認が必要です。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0031)についてのご相談はこちらから。
