Media > AI活用ユースケース > カスタマーサポート > 置き配の配達完了写真をAIで点検し、指定場所との違い・写りの不備・表札や部屋番号の写り込みを問い合わせの前に拾う

置き配の配達完了写真をAIで点検し、指定場所との違い・写りの不備・表札や部屋番号の写り込みを問い合わせの前に拾う

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

ドライバーが撮った置き配の配達完了写真を、上がってきた直後にAIが1枚ずつ見て、指定場所との違い・写りの不備・表札や部屋番号の写り込みを拾います。事務担当は全件を目で見る代わりに、引っかかった写真だけを確かめます。

サマリー
生成AI
Azure OpenAI Service/Claude/Gemini
連携・自動化
Power Automate
対象業界
EC/小売/物流
対象部門
カスタマーサポート/物流
対象業務
内容確認・チェック/分類・仕分け
主な課題
人手が足りない/問い合わせが多い/確認ミスが多い
AIで行う処理
画像認識
主な効果
品質標準化/対応スピード向上/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
120h/月
AI導入後
30h/月
想定削減
75%
年間削減
1,080h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. ドライバーが置き配をし、アプリで写真を撮って配達完了にする
  2. 写真が配送管理システムに保存され、配達完了の一覧に並ぶ
  3. 業務課の事務担当が、一覧から写真を1枚ずつ開く
  4. 注文の置き場所の指定を見て、写真の場所が合っているかを確かめる
  5. 荷物が写っているか、場所が判別できるか、写ってはいけないものが無いかを見る
  6. 問題があれば、メモに残してドライバーに連絡し、必要なら撮り直しや置き直しを頼む
  7. 受取人から問い合わせが来たら、お客様窓口が写真を探して答える
導入後(After)
  1. 人ドライバーが置き配をし、アプリで写真を撮って配達完了にする
  2. 自動写真が保管先に保存されたことをきっかけにワークフローが動く
  3. 自動配送管理システムから、その荷物の置き場所の指定と住所の種類(戸建て/集合住宅)を引く
  4. 自動写真の形式とサイズを確かめ、必要なら変換する
  5. 自動Azure OpenAI の画像を読めるモデルが、置き場所・置き方・写り・写り込みを項目ごとに判定する
  6. 自動項目ごとの結果から、`pass` / `retake` / `needs_review` を規則で決める
  7. 自動`retake` はドライバーのアプリに撮り直しを依頼する。写り込みがあるものは荷主への連携を止める
  8. 人事務担当が `needs_review` の写真だけを開き、置き方の問題かを判断する
  9. 人指定と違う置き方なら、お客様窓口から受取人へ先に連絡する
  10. 自動`pass` と、撮り直して `pass` になったものを荷主へ連携する
各工程の詳しい説明を読む
  1. ドライバーが置き配をし、アプリで写真を撮って配達完了にする
  2. 写真が配送管理システムに保存され、配達完了の一覧に並ぶ
  3. 業務課の事務担当が、一覧から写真を1枚ずつ開く
  4. 注文の置き場所の指定を見て、写真の場所が合っているかを確かめる
  5. 荷物が写っているか、場所が判別できるか、写ってはいけないものが無いかを見る
  6. 問題があれば、メモに残してドライバーに連絡し、必要なら撮り直しや置き直しを頼む
  7. 受取人から問い合わせが来たら、お客様窓口が写真を探して答える

(a)全件を見るのが追いつかない。 月3,600枚を4名で見ると、1枚2分でも月120時間です。夕方に配達が集中すると、写真を見るのは翌日になります。 そのころにはドライバーは別の地区を回っており、撮り直しはできません。

(b)指定と違う置き方が、問い合わせで初めて分かる。 宅配ボックスの指定なのに玄関前に置いた、メーターボックスの指定なのに扉の外に置いた。写真を見れば分かることが、受取人からの電話で分かります。 先に分かっていれば、こちらから連絡できました。

(c)写り込みは見落としやすい。 置き場所の確認に目が向いていると、画面の端に写った表札や、荷物に貼られた送り状の宛名には気づきません。 決まりを守れていない写真が、そのまま荷主と受取人に渡ります。

(d)見る人によって基準が違う。 少し暗い写真を通す人も、撮り直しを求める人もいます。ドライバーから見ると、日によって言われることが違います。

  1. 【人】 ドライバーが置き配をし、アプリで写真を撮って配達完了にする
  2. 【自動】 写真が保管先に保存されたことをきっかけにワークフローが動く
  3. 【自動】 配送管理システムから、その荷物の置き場所の指定と住所の種類(戸建て/集合住宅)を引く
  4. 【自動】 写真の形式とサイズを確かめ、必要なら変換する
  5. 【自動】 Azure OpenAI の画像を読めるモデルが、置き場所・置き方・写り・写り込みを項目ごとに判定する
  6. 【自動】 項目ごとの結果から、pass / retake / needs_review を規則で決める
  7. 【自動】 retake はドライバーのアプリに撮り直しを依頼する。写り込みがあるものは荷主への連携を止める
  8. 【人】 事務担当が needs_review の写真だけを開き、置き方の問題かを判断する
  9. 【人】 指定と違う置き方なら、お客様窓口から受取人へ先に連絡する
  10. 【自動】 pass と、撮り直して pass になったものを荷主へ連携する

8番目が、この設計の分かれ目です。人が見るのは全件ではありません。 事務担当が見るのは、指定場所と違う可能性があるものと、AIが判断できなかったものだけです。全件を人が確かめる設計にすると、120時間はほとんど減りません。

7番目で、撮り直しをAIの判定から直接ドライバーに頼むのは、時間が勝負だからです。 ドライバーが現場を離れる前に依頼が届けば、その場で撮り直せます。 写真の問題だけを機械に任せ、置き方の問題は人が判断する、という線引きです。

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

構成図
ドライバーのアプリ(配達完了の写真)
   │
   ▼【トリガー】保管先への写真の保存
Azure Blob Storage(写真のコンテナー)
   │
   ▼
Azure Logic Apps(Blob のトリガー)
   ├──▶ 配送管理システムから置き場所の指定と住所の種類を引く
   ├──▶ 形式・サイズの確認(HEIC は JPEG に変換)
   ▼
Azure OpenAI(Microsoft Foundry)の画像を読めるモデル
   │  ① 置き場所が指定と合うか  ② 置き方に問題が無いか
   │  ③ 写りに不備が無いか      ④ 写ってはいけないものが無いか
   │  Structured Outputs で項目ごとのJSONを返す
   ▼
Azure Logic Apps ── 規則で判定(pass / retake / needs_review)
   ├──▶ retake:ドライバーのアプリへ撮り直しの依頼
   ├──▶ needs_review:業務課の確認一覧へ
   ▼
pass のものだけ荷主へ連携
役割想定する製品代替候補
生成AIAzure OpenAI(Microsoft Foundry)Claude API、Gemini API
連携Azure Logic Apps(Blob のトリガー、判定の規則、通知)Power Automate
保管Azure Blob Storage(写真のコンテナー)既存の写真の保管先
配送管理既存の配送管理システム各社の製品

配送管理システムとドライバーのアプリは、今あるものを使います。 新しく足すのは、写真の保管先から判定までの流れです。最初の準備は、配送管理システムから「置き場所のコード」と「住所の種類」を引けるようにすることです。

判定に使うのは、Azure OpenAI の画像を読めるモデルです。 公式の説明では、現在の画像対応モデルは o シリーズ、GPT-5 シリーズ、GPT-4.1 シリーズ、GPT-4.5、GPT-4o シリーズで、画像について質問すると文章で答えます。 画像は公開されたURLか、Base64 で符号化した画像データで渡します。

入力の条件も確かめておきます。 形式は JPEG、PNG、GIF(最初のコマのみ)、WEBP、1枚の上限は 20MB、1回のリクエストで渡せる画像は 10枚までです。スマートフォンが既定で保存する形式によっては、このままでは渡せません。

データの扱いは、導入の可否に直結します。 Microsoft Foundry で Azure が販売するモデル(Azure OpenAI を含む)では、入力と出力は他の顧客にも OpenAI にも提供されず、許可なく基盤モデルの学習には使われないとされています。

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

Step1

処理の起点を決める

写真が保管先のコンテナーに保存されたことを起点にします。 Azure Logic Apps の Azure Blob Storage コネクタにはトリガーが用意されており、ロジックアプリの種類で名前と動き方が違います。

ロジックアプリトリガー動き方
ConsumptionWhen a blob is added or modified (properties only)ルートフォルダーだけを見る。設定時点の既存の写真は無視する
Standard(組み込み)When a blob is added or updated入れ子のフォルダーも見る。設定時点の既存の写真をすべて処理する

組み込みのトリガーを使うときは、既存の写真に注意してください。 何か月分もの写真が入ったコンテナーに設定すると、すべてが一度に判定に回り、費用と確認の一覧が一気に膨らみます。 新しいコンテナーを用意するか、管理されたトリガーを使います。

夕方の集中に追いつくかも見ておきます。 組み込みのトリガーはベストエフォートで大規模な処理には向かないとされ、より速く確実に処理したい場合は Azure Event Grid のトリガーが勧められています。 月3,600枚なら組み込みで足りますが、荷主が増えたら切り替えを検討します。

Step2

入力データを集める

データ中身取得元
配達完了の写真画像と撮影日時、ドライバーのID保管先のコンテナー
置き場所の指定置き場所のコード(玄関前/宅配ボックス/メーターボックス/車庫/物置)配送管理システム
住所の種類戸建て/集合住宅、オートロックの有無配送管理システム
撮影の決まり写すもの・写さないものの一覧自社で用意する文書

質を決めるのは、2つ目と3つ目です。 置き場所の指定が無ければ、写真の場所が合っているかを判定できません。住所の種類が無いと、集合住宅の共用廊下に置かれた荷物を「玄関前」として合っているかが決まりません。

住所そのものと受取人の氏名は渡しません。 判定に要るのは置き場所の種類だけで、誰の家かは要りません。

Step3

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

写真は、トリガーのあとに Blob の内容を取得する操作で読みます。管理されたコネクタの操作は50MB以下のファイルを扱い、それを超えると分割での転送が必要になります。 配達完了の写真なら通常は収まります。

取るものどこから何に使うか
写真の中身Blob の内容を取得する操作Base64 にしてモデルへ渡す
置き場所のコードと住所の種類配送管理システムの照会指示に差し込む
ドライバーのID写真のメタデータ撮り直しの依頼先

写真はURLではなく Base64 で渡します。 公式の説明では、画像のURLは公開されている必要があり、プライベートエンドポイントやファイアウォールで制限されたURLは使えません。 受取人の家が写った写真のURLを公開するわけにはいかないので、中身を取り出して符号化して渡します。

管理されたトリガーには、見張るフォルダーの写真が3万枚までという上限があります。 超えると新しい写真でトリガーが動かないことがあるため、判定が終わった写真は日付ごとのフォルダーへ移します。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … JPEG、PNG、GIF、WEBP 以外(スマートフォンの HEIC など)は JPEG に変換します
  2. サイズの確認 … 20MBを超えるものは縮小します
  3. 向きの補正 … 撮影時の向きの情報に従って回転させてから渡します
  4. 細部の設定 … detail を high にします
  5. 重複の確認 … 同じ荷物で複数枚上がったときは、まとめて1回で判定します(10枚まで)

4番目を軽く見ないでください。 detail を low にすると、512×512の低い解像度で処理され、速く安くなりますが、画像内の物体や文字の認識の精度に影響しうるとされています。表札の文字や部屋番号を拾うのがこの構成の目的なので、ここで費用を削りません。 high では、低い解像度で全体を見たあと512×512の区画ごとに詳しく見ます。

3番目は、写真が横倒しのまま判定されるのを防ぎます。 横倒しの写真では、ドアや表札の文字が読みにくくなります。

Step5

AIに処理させる

させるのは、4つの観点で写真を見て、項目ごとに ok / ng / cannot_judge を付け、根拠を短く書くことだけです。

見るもの判定の仕方判断できないときの扱い
① 置き場所写真の場所が、指定の置き場所の種類と合うか場所が写っていなければ cannot_judge
② 置き方宅配ボックスの扉が閉まっているか、通路をふさいでいないか、屋外で地面に直に置いていないか見えなければ cannot_judge
③ 写り荷物が写っているか、ブレ・暗さで判別できないことがないか―
④ 写り込み表札の氏名、部屋番号、人の顔、車のナンバー、送り状や郵便物の宛名文字らしきものが読めなければ ng 寄りに扱う

④の右端が、他の観点と逆向きになっていることに注意してください。 置き場所は迷ったら人に回しますが、写り込みは「読めないが文字らしきものがある」ときも、写っているものとして扱います。 見落としたときの害のほうが大きいからです。

①の判定には、住所の種類を必ず添えます。 戸建ての「玄関前」は門の内側の玄関ドアの前ですが、集合住宅の「玄関前」は共用廊下に面した住戸のドアの前です。同じ「玄関前」でも、写真に写るべきものが違います。 住所の種類を渡さないと、共用廊下の写真を「建物の入口」と取り違え、正しく置いた荷物を ng にします。

させないこと理由
ドライバーの責任の判断指定と違う置き方には、受取人の追加の依頼など事情がある場合がある
盗難・紛失の可能性の判断補償に関わる。人が判断する
写り込みの文字の書き起こし氏名や部屋番号を記録に残さない。「ある」とだけ返す
写真の加工・塗りつぶし届けた証拠を変えない。差し替えは撮り直しで行う
撮り直しで十分かの最終判断retake は規則で決め、2回目も不備なら人に回す

3行目がいちばん起きやすい失敗です。 「表札があるか」と聞くと、モデルは親切に「表札に『山田』と書かれています」と答えます。その文字列がログに残った時点で、写真から取り除きたかった情報が、文字として社内に増えます。

Step6

指示内容を固定する

あなたは配送センターで、置き配の配達完了写真を点検する担当です。
写真と、この荷物の置き場所の指定だけを見て判定してください。

【この荷物の情報】
置き場所の指定:{place_code}
住所の種類:{address_type}

【点検する4つの観点】
1. place ......... 写真の場所が、置き場所の指定と合っているか
2. handling ...... 宅配ボックスの扉が閉まっているか、通路をふさいでいないか、
                   屋外で地面に直に置かれていないか
3. photo_quality . 荷物が写っているか。ブレや暗さで場所が判別できなくないか
4. exposure ...... 表札の氏名、部屋番号、人の顔、車のナンバー、
                   送り状や郵便物の宛名が写っていないか

【status の選び方】
- ok ............ 問題が無いと写真から言える
- ng ............ 問題があると写真から言える
- cannot_judge .. 写真から判断できない
迷ったときに ok を選ばないでください。

【厳守事項】
- exposure では、文字らしきものが写っていて読めない場合も ng にしてください。
- 表札・部屋番号・宛名・ナンバーに書かれた文字を書き起こさないでください。
  「表札がある」「宛名ラベルがある」のように、種類だけを書いてください。
- 人の顔があっても、その人について説明しないでください。
- 写真に写っていないことを推測しないでください。
  例:荷物が写っていないのに「玄関前に置かれたと思われる」と書かない。
- ドライバーの責任や、盗難のおそれについては書かないでください。
- 置き配の写真でないと判断した場合は、点検せず image_type に種類を書いてください。

【返し方】
指定されたJSONの形だけで返してください。
reason は各20字程度で、写真の中の何を見たかを書いてください。

「文字を書き起こさない」を明記しないと、ほぼ必ず書き起こします。 根拠を書けと言われれば、モデルは見えた文字を根拠として写すのが自然だからです。禁じるのは、根拠の書き方そのものです。

「迷ったときに ok を選ばない」は、写りの観点に効きます。 暗い写真で荷物らしき影があると、何も言わなければ「荷物が写っている」とします。cannot_judge を選べる道を用意し、そちらへ寄せます。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Azure OpenAI の Structured Outputs では、Chat Completions は response_format、Responses は text.format にスキーマを定義し、strict: true を指定します。すべての項目を required に入れ、オブジェクトには additionalProperties: false を付けます。

{
  "image_type": "delivery_proof",
  "checks": {
    "place":         { "status": "ok | ng | cannot_judge", "reason": "" },
    "handling":      { "status": "ok | ng | cannot_judge", "reason": "" },
    "photo_quality": { "status": "ok | ng | cannot_judge", "reason": "" },
    "exposure":      { "status": "ok | ng | cannot_judge", "reason": "",
                       "kinds": ["nameplate | room_number | face | plate | label"] }
  }
}

1つ目の理由は、判定と行き先を別の層に置けることです。 checks はモデルが埋め、行き先は Logic Apps の規則が決めます。

条件行き先
photo_quality または exposure が ng、ほかは okretake:ドライバーへ撮り直しの依頼。荷主への連携を止める
place または handling が ngneeds_review:業務課が確認し、受取人への連絡を判断
どれかが cannot_judgeneeds_review
すべて okpass:荷主へ連携
撮り直しの2枚目も retake の条件needs_review

2つ目は、kinds で写り込みの種類だけを持てることです。 何が写っていたかは残し、何と書いてあったかは残しません。 月ごとに kinds を数えれば、送り状が写りやすいのか表札が写りやすいのかが分かり、撮影の決まりのどこを伝え直すかが決まります。

3つ目は、項目の欠けが起きないことです。 公式の説明では、スキーマはオブジェクトのプロパティが合計100個まで、入れ子は5段までで、minLength や pattern などのキーワードは使えません。 上の形はこの範囲に収まります。

Step8

システムへ連携する

つなぎ先方式内容
Azure Blob StorageLogic Apps のトリガーと内容の取得写真の保存を検知し、中身を読む
配送管理システム照会のAPI、または連携用のファイル置き場所のコードと住所の種類を引く
Azure OpenAIAPI呼び出し4観点の判定を返す
ドライバーのアプリ配送管理システムの通知retake の依頼
業務課の確認一覧一覧への行の追加needs_review を並べる
荷主への連携既存の連携pass のものだけを送る

配送管理システムへの書き込みは、「連携を止める」印だけにします。 配達完了の状態そのものは変えません。AIの判定で配達が未完了に戻るような経路は作りません。

受取人への連絡は、お客様窓口の人が行います。 needs_review から受取人への連絡まで自動でつなぐと、正しく置いた荷物について謝る連絡が出ていきます。

Step9

人が確認する

人が開くのは needs_review の写真だけです。 retake はドライバーが撮り直し、pass は件数を見るだけにします。

  1. place の ng を先に見る … 受取人への連絡が要る可能性があり、時間がたつほど問い合わせが先に来ます
  2. ドライバーに事情を聞く … 指定の宅配ボックスが満杯だった、受取人から直接頼まれた、などの事情を確かめます
  3. 受取人に連絡するかを決める … 連絡するならお客様窓口へ回します
  4. cannot_judge を見る … 多くは写真の問題で、撮り直しで解決します
  5. 判定を覆したら記録する … どの観点を、どちらに変えたかを残します

2番目を省かないでください。 指定と違う置き方の多くには、現場でしか分からない理由があります。 写真だけで是正を求めると、ドライバーは理由を言わなくなります。

目標は、3,600枚をならして1枚0.5分です。 開くのは1〜2割という想定で、それより多い月は、撮影の決まりが伝わっていないか、置き場所のコードが実態と合っていません。

Step10

例外に対処する

起きること対応
対応していない形式(HEIC など)JPEG に変換してから判定する
20MBを超える縮小してから判定する
置き配の写真でないimage_type を見て、業務課へ回す
置き場所の指定が引けない判定せず needs_review。指定が無いまま判定しない
ドライバーがすでに現場を離れたretake を needs_review に切り替え、写り込みがあれば連携を止めたまま人が判断する
撮り直しの2枚目も不備needs_review に回す
応答が途中で切れた・フィルタが働いた完了の理由を確かめ、判定せず needs_review
モデルが応答しない写真は判定待ちとして残し、時間をおいて再実行

5行目が運用でいちばん起きます。 撮り直しの依頼が届くまでの時間が長いと、ドライバーは次の配達先に向かっています。依頼が届くまでの時間を毎週測り、遅い時間帯を見つけます。

日没後の写真にも注意します。 冬の夕方以降は、フラッシュを使わない写真が photo_quality の cannot_judge になりやすいと考えられます。判定の基準を緩めるのではなく、撮影の決まりにフラッシュの使い方を足します。

Step11

記録を残す

  • 元の写真と、変換・縮小した場合はその写真
  • 判定に使った置き場所のコードと住所の種類
  • モデルが返したJSONの全文と、規則で決めた行き先
  • 人が判定を覆した記録 … どの観点を、どちらに変えたか
  • 撮り直しの依頼から2枚目が上がるまでの時間
  • ドライバーごと・地区ごとの kinds の件数

ログに写り込みの文字は残りません。 指示で書き起こしを禁じ、出力の形も種類だけにしているからです。それでも元の写真には写っているので、写真の保存期間と見られる人は別に決めます。

最後の行は、ドライバーへの声かけの材料になります。 特定のドライバーで送り状の写り込みが続くなら、撮る角度の癖です。 判定を厳しくするより、1回の声かけで直ります。

04実装レベルの3段階

最小構成:プレイグラウンドに写真を1枚ずつ渡し、4観点を判定させる / 1枚ごとの点検
半自動化:上記+保管先への保存を起点に Logic Apps から Azure OpenAI を呼び、判定を一覧に書き出す / 全件の点検と一覧化
本格構成:上記+規則で行き先を決め、撮り直しの依頼と荷主への連携の停止まで行う / 点検・撮り直しの依頼・連携の制御

半自動化で、1枚2分が1分程度になります。 判定は自動になりますが、一覧を見てドライバーに連絡する作業が残ります。本格構成で0.5分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、どの置き場所のコードで取り違えが多いか、どのドライバーで写り込みが多いかが分かります。 そこを直してから撮り直しの自動依頼を入れないと、ドライバーに依頼が殺到します。

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

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

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

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

AI活用について相談する

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

向いている
  1. 置き配を扱う配送会社・EC事業者の自社配送部門で、ドライバーが配達完了の写真を撮って配送管理システムに上げている場合。センターの事務担当が写真を目で確かめていて、件数が月に数千件ある場合。「指定した場所に置かれていない」「荷物がどこにあるか分からない」という受取人からの問い合わせが繰り返し来ている場合。写真の保管先にクラウドのストレージを使える場合。
向いていない
  1. 置き配が月に数百件以下で、目視で足りる場合。配達完了の写真を撮っていない、または撮っても保存していない場合。写真を外部のクラウドで処理することが荷主との契約で認められていない場合。なお、荷物の紛失・盗難の責任の判断や、受取人への補償の判断はこの構成では代替できません。

07最小構成で試す方法

  1. 先月の置き配の写真から50枚を選ぶ(問い合わせが来たもの、写り込みがあったものを必ず混ぜる)
  2. 写真に写った表札や宛名に問題が無いかを確かめ、社内で試せる範囲の写真にする
  3. Microsoft Foundry のプレイグラウンドで画像を読めるモデルを開き、第7章のプロンプトを貼る
  4. 置き場所の指定を書き添えて、写真を1枚ずつ渡す
  5. 出てきた判定を、当時の目視と問い合わせの記録に突き合わせる

50枚は必ずやってください。 ワークフローを組む前に、「写真から置き場所の種類が見分けられるか」を確かめます。 宅配ボックスとメーターボックスは、写り方によって見分けにくいことがあります。

出てきた内容判断
問い合わせが来た写真で place が ng になったLogic Apps との連携に進む
表札の文字を書き起こした指示の書き方で直る。構成は有効
宅配ボックスとメーターボックスを取り違える撮影の決まりが先。 扉と荷物を一緒に写す

3行目が出たら、撮り方を変えます。 判定を賢くするより、写真に写る情報を増やすほうが確実です。

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

問題対策
表札や宛名の文字がログに残る書き起こしを禁じ、出力を種類だけにする
写り込みを見落とすdetail を high にする。low は文字の認識の精度に影響しうる
スマートフォンの写真が渡せない対応形式は JPEG、PNG、GIF、WEBP。HEIC は変換する
画像のURLを渡すと失敗するURLは公開が必要。 Base64 で渡す
既存の写真が一斉に判定に回る組み込みのトリガーは既存の写真を処理する。新しいコンテナーで始める
新しい写真でトリガーが動かない管理されたトリガーは3万枚まで。判定済みは別フォルダーへ移す
宅配ボックスとメーターボックスを取り違える撮影の決まりで、扉と荷物を一緒に写す
置き場所の指定が無いまま判定する指定が引けなければ判定せず人へ
撮り直しの依頼が遅れて届く依頼が届くまでの時間を測り、遅い時間帯を見つける
正しく置いたのに受取人へ謝罪が出る置き方の問題と写真の問題を分け、受取人への連絡は人が決める

上の2行が、この構成の失敗のほとんどです。 どちらも写り込みの扱いで、拾い損ねれば受取人の情報が外へ出て、拾い方を誤れば社内に文字として増えます。 種類だけを拾う設計を最初から守ってください。

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

この構成で扱うデータ: 受取人の住まいの玄関まわりの写真、置き場所の指定、そして写真に写り込むことのある表札の氏名、部屋番号、人の顔、車のナンバー、送り状の宛名です。写真はどこに住む誰が、いつ留守だったかを示しうる情報です。

  1. 外部へ渡す範囲を写真と置き場所の種類に限る … 住所と受取人の氏名は渡しません。判定に要るのは置き場所の種類だけです
  2. 写り込みの文字を記録に残さない … 指示と出力の形の両方で、種類だけを返させます
  3. 写真をURLで公開しない … Base64 で渡し、保管先のコンテナーは公開しません
  4. データの扱いを確かめておく … Azure が販売するモデルでは、入力と出力は他の顧客にも OpenAI にも提供されず、許可なく基盤モデルの学習に使われないとされています。一方で、不正利用の監視のために、検知されたものについては承認された担当者が確認する場合があるとされ、条件を満たす顧客はこの監視の変更を申請できます。Global や DataZone のデプロイでは処理する地域が広がるため、荷主との契約に照らしてデプロイの種類を選びます
  5. この構成は責任の判断をしない … 紛失・盗難の責任と補償は、荷主との契約と自社の規程に従って人が判断します。 この構成が出すのは、写真が決まりどおりかという事実だけです
  6. 写真の保存期間を決める … 問い合わせに答えるために要る期間と、荷主との取り決めから決めます

誤りが起きた場合のリスクは、写り込みのある写真が受取人や荷主に渡ることと、正しく置いた荷物について受取人やドライバーに誤った連絡をすることの2つです。 前者は写り込みを ng 寄りに扱って連携を止めれば防げ、後者は置き方の判断を人に残せば防げます。

10まず何から始めるか

1週目:撮影の決まりと置き場所のコードを見直す

撮影の決まりを1枚にまとめ、写すもの(荷物と置き場所が一緒に分かる構図)と写さないもの(表札・部屋番号・顔・ナンバー・宛名)を絵で示します。あわせて、配送管理システムから置き場所のコードと住所の種類を引けるかを確かめます。

2週目:50枚で試す

先月の写真から50枚を選び、プレイグラウンドで4観点を判定させます。問い合わせが来た写真で place が ng になるか、表札の文字を書き起こしていないかを最優先で見ます。

3週目:行き先の規則を決める

retake / needs_review / pass の条件を、業務課とお客様窓口と決めます。 特に、写り込みのある写真を荷主への連携から止める手順を、荷主と相談して決めます。

4週目:保管先から判定までをつなぐ

新しいコンテナーを用意し、Logic Apps のトリガーから Azure OpenAI を呼んで、判定を一覧に書き出すところまで作ります。この時点では撮り直しの依頼を出さず、一覧だけを見ます。

2か月目: 行き先の規則と撮り直しの依頼を足し、1地区のドライバーで運用します。3か月目以降: 全地区に広げ、荷主への連携の停止を入れます。1枚2分が何分になったか、置き方についての問い合わせのうち、先に連絡できた割合を実測した時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-05/最終更新:2026-10-05
確認した内容情報源確認日
Azure OpenAI の画像対応モデルが o シリーズ、GPT-5 シリーズ、GPT-4.1 シリーズ、GPT-4.5、GPT-4o シリーズであること。画像を公開URLか Base64 で渡せること。1回に10枚まで、1枚20MBまで、形式が JPEG・PNG・GIF(最初のコマ)・WEBP であること。画像のURLは公開されている必要があり、プライベートエンドポイントやファイアウォールで制限されたURLは使えないこと。detail に low/high/auto を指定でき、low は512×512で処理し文字の認識の精度に影響しうること、high は512×512の区画ごとに詳しく見ること。トークン単位で課金されることMicrosoft Learn: How to use vision-enabled chat models2026-10-05
Azure OpenAI の Structured Outputs が Chat Completions では response_format、Responses では text.format で指定でき、strict: true を使うこと。すべての項目を必須にし、additionalProperties: false を付けること。オブジェクトのプロパティは合計100個まで、入れ子は5段までで、minLength・pattern などが使えないことMicrosoft Learn: How to use structured outputs2026-10-05
Azure が販売するモデル(Azure OpenAI を含む)で、入力と出力が他の顧客にも OpenAI にも提供されず、許可なく基盤モデルの学習に使われないこと。不正利用の監視で、検知されたものについて承認された担当者が確認する場合があること。条件を満たす顧客が監視の変更を申請できること。Global・DataZone のデプロイでは処理する地域が広がることMicrosoft Learn: Data, privacy, and security for Foundry Models sold by Azure2026-10-05
Azure Logic Apps の Azure Blob Storage コネクタで、Consumption のトリガーが「When a blob is added or modified (properties only)」でルートフォルダーを見て既存の Blob を無視すること。Standard の組み込みトリガー「When a blob is added or updated」が入れ子のフォルダーも見て既存の Blob をすべて処理すること。管理されたコネクタの操作が50MB以下のファイルを扱うこと。管理されたトリガーが見張るフォルダーの Blob 3万件までに制限されること。組み込みトリガーがベストエフォートで、より速く確実な処理には Azure Event Grid のトリガーが勧められていることMicrosoft Learn: Connect to Azure Blob Storage from workflows2026-10-05

置き配の撮影の決まり、写真の保存期間、紛失・盗難の際の責任と補償は、荷主との契約と自社の規程によって異なります。この部分は自社の運送約款と荷主との取り決めに応じた個別対応が必要です。 写真に写り込んだ個人に関する情報の扱いは、自社の個人情報の取扱規程と、必要に応じて専門家の確認に従ってください。

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

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

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

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