Media > AI活用ユースケース > 営業 > 屋外広告・交通広告の掲出写真を発注した媒体・面・期間・原稿と照らし、掲出の誤りと写真の不備を広告主への掲出報告の前に拾う

屋外広告・交通広告の掲出写真を発注した媒体・面・期間・原稿と照らし、掲出の誤りと写真の不備を広告主への掲出報告の前に拾う

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

媒体社から届く屋外広告・交通広告の掲出写真を、発注した媒体・面・掲出期間と入稿した原稿に照らし、原稿の版違い・面違い・はがれと、写真の不備を拾います。広告主への掲出報告の前に、媒体社への対応を済ませます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Google Apps Script/Make/Power Automate
対象業界
不動産/小売/広告
対象部門
営業
対象業務
内容確認・チェック/書類作成
主な課題
人手が足りない/書類作成に時間がかかる/確認ミスが多い
AIで行う処理
画像認識
主な効果
入力漏れ削減/対応スピード向上/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
条件付き
現在工数
40h/月
AI導入後
10h/月
想定削減
75%
年間削減
360h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 媒体の手配の担当が、広告主の発注を受けて媒体社に発注し、原稿を入稿する
  2. 掲出が始まると、媒体社から掲出写真がメールで届く
  3. 担当が写真を保存し、メールの本文の面の番号で発注の管理表の行を探す
  4. 写真の原稿を、入稿した原稿のデータと見比べる。期間の日付や価格の表記まで見る
  5. 面の番号、掲出の位置、はがれや汚れがないかを見る
  6. 問題があれば、媒体社に貼り替えか撮り直しを頼む
  7. 写真を報告書の雛形に貼り、媒体名・面の番号・期間を書き写して、広告主に送る
導入後(After)
  1. 人媒体の手配の担当が、発注の管理表に媒体・面の番号・掲出期間・原稿の版を登録し、入稿した原稿の画像と照らす文字を登録する
  2. 自動媒体社からのメールを、決めたラベルで受け、15分おきに写真を取り出す
  3. 自動メールの本文の面の番号で、発注の管理表の行を引く
  4. 自動写り具合と写真の種類(近景・遠景)を確かめる
  5. 自動写真の原稿の決めた文字を読み、入稿した版の文字と照らす。面の番号の表示を読み、発注と照らす
  6. 自動はがれ・破れ・汚れなど、見える掲出の不良を位置付きで書き出す
  7. 自動規則で `pass` / `posting_issue` / `photo_issue` / `review` を決める
  8. 人営業が、`posting_issue` と `review` を確かめ、媒体社に貼り替えを頼む
  9. 自動`photo_issue` は、媒体社に撮り直しの依頼の下書きを作る
  10. 自動`pass` の面を広告主ごとにまとめ、掲出報告の表の下書きを作る
  11. 人営業が報告の下書きを確かめて、広告主に送る
各工程の詳しい説明を読む
  1. 媒体の手配の担当が、広告主の発注を受けて媒体社に発注し、原稿を入稿する
  2. 掲出が始まると、媒体社から掲出写真がメールで届く
  3. 担当が写真を保存し、メールの本文の面の番号で発注の管理表の行を探す
  4. 写真の原稿を、入稿した原稿のデータと見比べる。期間の日付や価格の表記まで見る
  5. 面の番号、掲出の位置、はがれや汚れがないかを見る
  6. 問題があれば、媒体社に貼り替えか撮り直しを頼む
  7. 写真を報告書の雛形に貼り、媒体名・面の番号・期間を書き写して、広告主に送る

(a)掲出の初日に写真が集中する。 月初の月曜には数百枚の写真が届きます。後ろに回った面ほど見比べが粗くなり、報告書も数日遅れます。

(b)原稿の版の違いを見落とす。 価格を改訂した第2版を入稿したのに、媒体社の手元に第1版が残っていて貼られる。デザインが同じなので、縮小した写真では違いが分かりません。 広告主から指摘されて初めて気づくと、掲出の初日から何日も古い価格が出ていたことになります。

(c)写真の不備に後で気づく。 原稿が反射で読めない、面の番号が写っていない、撮影日が掲出の初日より前。報告書を作る段になって気づき、撮り直しを頼むと、報告がさらに遅れます。

(d)報告書を写真の貼り付けから作っている。 1面ごとに写真を貼り、管理表から書き写します。書き写しの誤りで、報告書の面の番号が違うこともあります。

  1. 【人】 媒体の手配の担当が、発注の管理表に媒体・面の番号・掲出期間・原稿の版を登録し、入稿した原稿の画像と照らす文字を登録する
  2. 【自動】 媒体社からのメールを、決めたラベルで受け、15分おきに写真を取り出す
  3. 【自動】 メールの本文の面の番号で、発注の管理表の行を引く
  4. 【自動】 写り具合と写真の種類(近景・遠景)を確かめる
  5. 【自動】 写真の原稿の決めた文字を読み、入稿した版の文字と照らす。面の番号の表示を読み、発注と照らす
  6. 【自動】 はがれ・破れ・汚れなど、見える掲出の不良を位置付きで書き出す
  7. 【自動】 規則で pass / posting_issue / photo_issue / review を決める
  8. 【人】 営業が、posting_issue と review を確かめ、媒体社に貼り替えを頼む
  9. 【自動】 photo_issue は、媒体社に撮り直しの依頼の下書きを作る
  10. 【自動】 pass の面を広告主ごとにまとめ、掲出報告の表の下書きを作る
  11. 【人】 営業が報告の下書きを確かめて、広告主に送る

7番目で4つに分けるのが、この設計の分かれ目です。 posting_issue は貼り替えと広告主への報告が要るもの、photo_issue は撮り直しだけで済むものです。営業がまず開くのは posting_issue で、その日のうちに媒体社に連絡します。

11番目を人に残しているのは、報告が請求の前提だからです。 掲出の報告は、広告主にとって「発注どおりに出た」ことの記録です。AIの下書きのまま送らず、営業が面の数と期間を確かめてから送ります。

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

構成図
媒体社 ── 掲出写真のメール(本文に媒体名・面の番号・撮影日)
   ▼ Gmail のラベル「掲出写真」
   ▼【トリガー】15分おきの時間主導型トリガー
Google Apps Script ── 写真を取り出し、面の番号で発注の管理表の行を引く
   ▼
Gemini API ── ①写り具合と写真の種類(近景/遠景)
   ▼
Gemini API ── ②原稿の決めた文字と面の番号の読み取り、掲出の不良(match/mismatch/not_visible + 位置)
   ▼
Google Apps Script ── 規則で pass/posting_issue/photo_issue/review を決める
   ├── posting_issue ──▶ 営業へ(その日のうちに媒体社へ貼り替え)
   ├── photo_issue ───▶ 媒体社への撮り直しの依頼の下書き
   ▼
確認の一覧(Google スプレッドシート)
   ▼
広告主ごとの掲出報告の表の下書き ──▶【営業が確かめて送る】
役割想定する製品代替候補
処理Gemini API(写り具合の確認、原稿の文字と面の番号の読み取り、掲出の不良の書き出し)Claude API、OpenAI API
連携Google Apps Script(メールの取り出し、呼び出し、規則の判定、報告の表の作成)Make、Power Automate
連携Google スプレッドシート(発注の管理表、照らす文字、確認の一覧)Microsoft Lists
メールGmail(媒体社からの写真の受け取り)Microsoft Outlook
保管Google ドライブ(掲出写真と入稿した原稿の画像)Microsoft OneDrive、SharePoint

最初の準備は、原稿ごとに「照らす文字」を決めることです。 版違いが起きやすいのは、キャンペーンの期間、価格、問い合わせ先、法令や業界の決まりで入れる注記です。原稿の版ごとに、この文字を発注の管理表の別の表に登録します。原稿の画像全体を見比べさせるより、決めた文字を読ませるほうが、版違いを確実に拾えます。

判定の土台は Gemini API の画像理解です。 対応する形式は PNG、JPEG、WEBP、HEIC、HEIF で、1回の入力に複数の画像を並べられます。物体の検出では、位置を [ymin, xmin, ymax, xmax] の形で、0から1000に正規化した座標で返します。違いのある文字やはがれの位置に枠を付け、営業は写真に重ねた枠で確かめます。 画像を直接入れる場合、指示と合わせたリクエスト全体が20MBまでなので、近景と遠景と原稿の画像の3枚が収まる大きさにします。

メールの取り出しは Apps Script の Gmail のサービスで行います。 Gmail を検索の条件で探し、メールの添付ファイルを取り出し、送信の日時と送り主を取れます。媒体社ごとに送り主の宛先を発注の管理表に持たせ、知らない送り主のメールは処理しません。

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

Step1

処理の起点を決める

15分おきの時間主導型トリガーで、ラベル「掲出写真」の付いた未処理のメールを探します。 媒体社からのメールには、Gmail のフィルタで送り主ごとにラベルを付けておきます。処理したメールには「処理済み」のラベルを付け、次の検索から外します。 処理済みにするのは、すべての写真の判定が一覧に書けたときだけです。

1回の実行は6分までです。 月初の月曜に数百枚が届いても、1回の実行で処理するメールの数を決めておき、残りは次の15分に回します。 トリガーの1日の合計の実行時間は Google Workspace のアカウントで6時間までです。

掲出の期間の途中で届く中間の写真は、急ぎません。 期間の途中に撮られた写真は、夜にまとめて Batch API に送る形にできます。Batch API は通常の半分の費用で、目標の完了は24時間以内とされ、48時間を超えて終わらないジョブは結果が取れません。掲出の初日の写真は、その日のうちに結果が要るので通常の呼び出しにします。

インストール型のトリガーは作った人のアカウントで動きます。 媒体社からのメールを受ける営業部の共用のアカウントで作ります。

Step2

入力データを集める

データ中身取得元
掲出写真面ごとの近景と遠景。メールの本文の媒体名・面の番号・撮影日媒体社からのメール
発注の内容広告主、媒体、面の番号、掲出期間、原稿の版、媒体社の送り主発注の管理表
原稿の画像入稿した版の原稿を画像にしたものGoogle ドライブ
照らす文字原稿の版ごとの、キャンペーンの期間・価格・問い合わせ先・注記照らす文字の表
面の手がかり面ごとの番号の表示のされ方(額縁の番号札、看板の管理番号など)媒体社の資料から作る表

質を決めるのは、照らす文字の表です。

原稿の版項目照らす文字
A社春キャンペーン v2期間4月1日〜4月30日
A社春キャンペーン v2価格月額2,980円(税込)
A社春キャンペーン v2問い合わせ先0120-xxx-xxx
A社春キャンペーン v2注記※一部店舗を除く

版を改訂したら、照らす文字も改訂した版で登録し直します。 第1版の行を消さずに残し、写真の文字が第1版と合えば「旧版が貼られている」と分かるようにします。

Step3

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

メールの本文から、面の番号と撮影日を取ります。 媒体社ごとに本文の書き方が違うので、本文から番号と日付を取り出す規則を媒体社ごとに持ちます。 規則で取れない本文は、その行を review にして営業に回します。

取るものどこから何に使うか
掲出写真メールの添付ファイル(本文に埋め込まれた画像を除く)読み取りの対象
面の番号・撮影日メールの本文を媒体社ごとの規則で読む発注の行を引く鍵、期間との照合
発注の行面の番号と掲出期間で引く発注の管理表照らす相手
原稿の画像と照らす文字発注の行の原稿の版で引く読み取りの指示に差し込む
送り主メールの送り主知らない送り主の除外

添付ファイルは、本文に埋め込まれた画像を除いて取り出します。 媒体社の署名のロゴが本文に入っていると、それも画像として拾われます。添付の取り出しでは、埋め込みの画像を含めない指定ができます。

撮影日は、メールの本文の記載を使います。 掲出期間の初日より前の撮影日なら、掲出の前に撮った写真が送られてきた可能性があるので review にします。

Step4

AIへ渡す前に整形する

  1. 形式の確認 … PNG、JPEG、WEBP、HEIC、HEIF のどれかであることを確かめます。PDFで届いた報告は、この構成では扱わず営業に回します
  2. 大きさの確認 … 近景・遠景・原稿の画像と指示を合わせて20MBを超えないよう、大きすぎるものは縮めます
  3. 面ごとの組み合わせ … 1通のメールに複数の面の写真があれば、ファイル名と本文で面ごとに組にします。組にできなければ review
  4. 重複の確認 … 同じ面の同じ日の写真が2通で届いたら、後のものを使います

3番目が崩れやすいところです。 媒体社によっては、1通に30面の写真を番号順に添付し、本文に面の番号を並べてきます。ファイル名と本文の並びが合わないと、写真と面の組が全部ずれます。 組を作った後に、写真の枚数と本文の面の数が合うかを必ず確かめます。

Step5

AIに処理させる

させるのは2つの段階です。 写り具合と写真の種類の確認、原稿の文字と面の番号と掲出の不良の読み取りです。

1つ目の段階:写り具合と種類

見るもの判定の仕方判断できないときの扱い
写真の種類原稿が読める距離(近景)か、周りが分かる距離(遠景)かどちらでもなければ unknown
原稿の写り原稿の全体が写っているか切れていれば retake
反射・暗さ原稿の文字が読めるか読めなければ retake

2つ目の段階:読み取り

読むもの返し方判断できないときの扱い
照らす文字写真の原稿の同じ項目の文字を、読めたまま返し、照らす文字と比べる読めなければ not_visible
面の番号の表示額縁の番号札や看板の管理番号を読めたまま返す写っていなければ not_visible
掲出の不良はがれ、破れ、しわ、汚れ、上下の逆、照明の消灯など見えるもの判断できなければ書かない

照らす文字の比べ方が、この構成でいちばん大事です。 写真の「4月1日〜4月30日」と照らす文字の「4月1日〜4月30日」が同じなら match、写真が「3月1日〜3月31日」とはっきり読めて違うなら mismatch、反射で読めなければ not_visible です。 not_visible は写真の不備、mismatch は掲出の誤りとして、別の扱いになります。

させないこと理由
原稿の見た目の似かたでの判断版違いはデザインが同じ。文字で照らす
読めない文字の補完照らす文字で埋めると、版違いが消える
掲出の場所の良し悪しの評価発注どおりかだけを見る
誤りの責任の判断媒体社とのやり取りで営業が決める
広告主への報告の文章報告は表の下書きまで。文章は営業が書く

2行目がいちばん起きやすい失敗です。 「4月?日〜4月30日」と半分読めた文字を、照らす文字に合わせて「4月1日」と読むと、本当は「4月10日」だった旧版を見逃します。

Step6

指示内容を固定する

あなたは広告会社の営業部で、屋外広告・交通広告の掲出写真を確かめる立場です。
1枚目は入稿した原稿、2枚目は掲出の近景、3枚目は掲出の遠景です。
写真に写っているものだけを見て、次を返してください。推測で埋めないでください。

【照らす文字】
{check_texts}
(項目、照らす文字 の順に並んでいます)

【読み方】
- 照らす文字の各項目について、2枚目の写真の原稿の同じ項目の文字を、
  読めたまま observed に写してください。読めない文字は「?」にしてください。
- observed と照らす文字が同じなら match、はっきり読めて違うなら mismatch、
  読めない文字が含まれるなら not_visible にしてください。
  迷ったら not_visible です。照らす文字に合わせて読まないでください。
- 2枚目か3枚目に写る面の番号の表示(番号札、管理番号)を、
  読めたまま panel_label に写してください。写っていなければ空にしてください。
- はがれ、破れ、しわ、汚れ、上下の逆、照明の消灯など、見える掲出の不良を
  defects に書き、位置を box_2d に [ymin, xmin, ymax, xmax] で
  0〜1000 に正規化して入れてください。見えなければ空の配列にしてください。
- mismatch の項目にも、写真の中の位置を box_2d で入れてください。

【厳守事項】
- 原稿の見た目が似ているかで判断しないでください。文字だけで比べてください。
- 掲出の場所の良し悪し、広告の出来は書かないでください。
- 誤りの原因や責任は書かないでください。

「照らす文字に合わせて読まない」を明記しないと、match が増えます。 照らす文字を渡すと、AIは半分読めた文字をその方向に補います。読めた文字と読めない文字の区別を ? で残させ、比べるのは読めた文字だけにします。

1枚目に入稿した原稿を並べているのは、項目の位置を教えるためです。 原稿のどこに期間や価格があるかが分かると、写真の中の同じ場所を探せます。 ただし比べるのは、原稿の画像ではなく照らす文字です。

Step7

出力形式を固定する

次の形のJSONで受け取ります。 Gemini API の構造化出力では、response_format に mime_type: "application/json" と JSON Schema を渡し、status を enum で限ります。公式の案内では、出力がJSONとして正しくても、値はアプリケーションの側で必ず検証するようにとされています。

{
  "photo_quality": { "near": "good | retake | unknown", "far": "good | retake | unknown" },
  "text_checks": [
    { "item": "period", "expected": "", "observed": "",
      "status": "match | mismatch | not_visible", "box_2d": [0, 0, 0, 0] }
  ],
  "panel_label": "",
  "defects": [
    { "type": "peeling | tear | wrinkle | stain | upside_down | light_off | other",
      "evidence": "", "box_2d": [0, 0, 0, 0] }
  ]
}

1つ目の理由は、読み取りと判断を別の層に置けることです。 text_checks と defects はAIが埋め、verdict はスクリプトが規則で決めます。

verdict条件
posting_issuemismatch が1つでもある、panel_label が発注の面の番号と違う、defects がある
photo_issueposting_issue に当たらず、photo_quality に retake があるか、not_visible がある
review面の番号が本文から取れない、撮影日が期間の外、写真と面の組が作れない
pass上のどれにも当たらない

2つ目は、旧版を名指しできることです。 mismatch の observed を、照らす文字の表の第1版の行と比べ、一致すれば「旧版(v1)が貼られている」と営業に示せます。 媒体社への連絡が「違います」から「v1が貼られています。v2に貼り替えてください」に変わります。

3つ目は、報告の表がそのまま作れることです。 pass の面を広告主ごとに並べ、媒体名、面の番号、掲出期間、撮影日、近景と遠景の写真へのリンクを1行ずつ書けば、報告書の写真の貼り付けと書き写しが要らなくなります。

Step8

システムへ連携する

つなぎ先方式内容
Gmail時間主導型トリガーでの検索ラベルの付いたメールから写真と本文を取り出す
発注の管理表スプレッドシートの読み取り面の番号と期間で発注の行を引く
照らす文字の表スプレッドシートの読み取り原稿の版ごとの文字を引く
Gemini APIApps Script から呼び出し写り具合、文字と面の番号と不良の読み取り
確認の一覧スプレッドシートへの書き込み写真へのリンク、読み取った文字、verdict
媒体社営業からのメール貼り替えの依頼、撮り直しの依頼
広告主営業からの送付掲出報告の表

媒体社への連絡も、広告主への報告も、自動では送りません。 撮り直しの依頼は下書きまで作り、営業が送ります。掲出の誤りの連絡は、媒体社との関係と補償の話に関わるからです。

呼び出しの回数は1日の上限の範囲です。 外部への呼び出しは Google Workspace のアカウントで1日100,000回までで、1面あたり2回の呼び出しなら、月600面は十分に収まります。

Step9

人が確認する

営業は、posting_issue を最初に開きます。 確認の一覧には、写真に枠を重ねた表示へのリンク、照らす文字と読めた文字、旧版との一致が並びます。

  1. posting_issue を見る … 枠の位置で、版違い・面違い・不良が本当かを確かめ、その日のうちに媒体社に連絡します
  2. review を見る … 面の番号が取れない、撮影日が期間の外のものを、媒体社に確かめます
  3. photo_issue の下書きを送る … 撮り直しの依頼を確かめて送ります
  4. 報告の表を確かめる … 面の数、期間、写真のリンクを確かめてから広告主に送ります
  5. 判定を覆したら記録する … mismatch を match に直したら、その理由を短く残します

1番目で版違いが本当だったら、広告主への連絡も営業が決めます。 何日間、旧版が出ていたか、貼り替えはいつか。掲出の誤りを広告主に伝える順番は、営業の判断です。

pass の面も、週に1回は数面を抜き取って見ます。 AIが見逃した版違いは posting_issue の確認だけでは見つからないので、抜き取りが見逃しを知る唯一の手がかりです。

Step10

例外に対処する

起きること対応
原稿が反射・暗さで読めないphoto_issue。媒体社に撮る角度と時刻を変えた撮り直しを頼む
面の番号の表示が写っていないnot_visible。近景か遠景のどちらかに番号札を入れて撮る決まりを媒体社と結ぶ
本文から面の番号が取れないreview。媒体社ごとの読み取りの規則を足す
撮影日が掲出期間の初日より前review。掲出の前の写真が送られた可能性を媒体社に確かめる
1通に多数の面の写真がある枚数と本文の面の数が合わなければ、組を作らず review
デジタルサイネージで原稿が切り替わる写真に写った原稿が1つだけなら、その原稿で照らす。別の原稿が写っていれば review
照らす文字が登録されていない版「照合なし」で止め、媒体の手配の担当に登録を頼む
知らない送り主のメール処理せず、営業に転送する
Gemini API が応答しない確認の一覧に「未処理」で残し、次の見回りで再度処理する。3回失敗したら営業が目で見る

上から2行目までが大半を占めます。 どちらもAIの問題ではなく、媒体社の撮り方の問題です。 撮影の手本と番号札を写す決まりを媒体社と共有すると、photo_issue が減ります。

Step11

記録を残す

  • 掲出写真の元のファイルと、受け取ったメールの日時・送り主
  • 指示の全文と、返ってきたJSONの全文
  • 照らした原稿の版と照らす文字
  • verdict と、営業が覆した項目とその理由
  • 媒体社への貼り替え・撮り直しの依頼と、貼り替えの後の写真
  • 広告主に送った報告の表と、送った日時

照らした版と文字を残すのは、版が後から改訂されるからです。 改訂の後に過去の報告を見直すと、どの版で照らしたかが分からなければ、その判定が正しかったかを判断できません。

貼り替えの後の写真も同じ面の行に残します。 版違いがいつ見つかり、いつ直ったかが1行で追えると、広告主から掲出の誤りの期間を聞かれたときに答えられます。

04実装レベルの3段階

最小構成:原稿と写真を手で Gemini の画面に貼り、照らす文字を読ませる / 1面ごとの照合
半自動化:上記+メールから写真を取り出し、スクリプトで Gemini API を呼んで一覧に書き出す / 取り出しと照合の一覧化
本格構成:上記+規則で4つに分け、撮り直しの依頼の下書きと、広告主ごとの掲出報告の表まで作る / 照合、仕分け、報告の下書き

半自動化で、1面4分が2分程度になります。 見比べは自動になりますが、全件の結果を見て、報告書に写真を貼る作業が残ります。本格構成で1分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、photo_issue の多い媒体社と、本文の読み取りの規則が合わない媒体社が分かります。そこを媒体社と調整してから報告の表まで自動にするほうが、報告の手戻りが減ります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 駅貼りのポスター、車内の広告、屋外の看板、デジタルサイネージなどの屋外広告・交通広告を、毎月数百面規模で広告主から受注して媒体社に発注している広告会社。掲出が始まるたびに媒体社から掲出写真がメールで届き、営業が発注の内容と見比べて広告主への掲出報告を作っている場合。発注の内容(媒体・面の番号・掲出期間・原稿の版)を表で持っている場合。店舗の看板や物件の看板を看板会社に掲出させ、写真で確かめている小売業・不動産業にも当てはまります。
向いていない
  1. 掲出が月に数面で、営業が写真を見れば足りる場合。媒体社が掲出の報告を独自の画面で出していて、写真をまとめて受け取れない場合。掲出の場所の環境(周りの建物、人通り)の良し悪しを評価したい場合。なお、掲出の誤りの責任の所在と、媒体社への補償の求めの判断は、この構成では代替できません。

07最小構成で試す方法

  1. 先月の掲出から、版違いや撮り直しがあった面を含めて30面を選ぶ
  2. その30面の原稿の版ごとに、照らす文字を表にする
  3. 手元の Gemini の画面に、原稿の画像と近景と遠景の3枚を貼り、第7章の指示を貼り付ける
  4. 返ってきた読み取りを、当時の営業の確認の結果と並べる
出てきた内容判断
当時見つけた版違いが mismatch で出たメールとスクリプトの連携に進む
読めない文字を照らす文字で埋めて match にする指示の「合わせて読まない」を強める。? を使わせる
はがれを見落とす遠景だけでは見えない。近景の撮り方を媒体社と決める
原稿がほとんど読めない撮り方が先。 AIの問題ではない

1行目が出なかった場合は、照らす文字の選び方を見直してください。 版違いで変わった文字が、照らす文字に入っていない可能性があります。

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

問題対策
読めない文字を照らす文字で埋めて match にする? で残させ、合わせて読まないことを指示に書く
版違いを見た目の似かたで見逃す決めた文字で照らす。 期間・価格・問い合わせ先・注記
掲出の誤りと写真の不備が混ざるposting_issue と photo_issue を分ける
写真と面の組がずれる枚数と本文の面の数が合わなければ組を作らない
署名のロゴを写真として拾う本文に埋め込まれた画像を取り出しから外す
撮影日が期間の外の写真で pass になる本文の撮影日を期間と照らし、外なら review
照らす文字の登録が漏れる入稿の確認の欄に入れる
旧版の行を消してしまう改訂しても旧版の行は残し、旧版との一致を出す
撮り直しや貼り替えの依頼が自動で飛ぶ下書きまで。 送るのは営業

上の2行が、この構成の失敗のほとんどです。 どちらも、AIが照らす相手に合う方向に寄ることから来ます。 読めた文字だけで比べ、比べる項目を決めておくことで、版違いが版違いのまま残ります。

4行目は、一度起きると全部の面がずれます。 1通に多数の面の写真を送る媒体社には、ファイル名に面の番号を入れてもらうよう頼むのが、いちばん確実です。

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

この構成で扱うデータ: 掲出写真、入稿した原稿、発注の内容(広告主・媒体・期間)、媒体社の担当者の宛先です。掲出の写真には、通行人や車のナンバーが写ることがあります。

  1. 通行人を写さない … 遠景の写真に通行人の顔や車のナンバーがはっきり写る場合があります。報告の表に載せる前に営業が確かめ、広告主に送る写真から外すか、撮り直しを頼みます
  2. 発売前の原稿の扱い … 掲出の初日の前に入稿した原稿は、広告主の公表前の情報です。Gemini API の利用規約では、無料の枠では送った内容が製品の改善に使われ、人が読むことがあるとされ、有料の枠では製品の改善に使わず、禁止事項の違反を見つけるために限った期間だけ記録するとされています。有料の枠で使います
  3. 広告主ごとに情報を分ける … 報告の表は広告主ごとに作り、別の広告主の面の写真が混ざらないことをスクリプトで確かめます
  4. 誤りの責任をAIの結果で決めない … 出すのは発注の内容との違いの事実だけです。媒体社の貼り間違いか、入稿の取り違えかは、営業が経緯を確かめて決めます
  5. 報告は人が確かめて送る … 掲出の報告は請求の前提です。AIの下書きのまま送らない決まりにします

誤りが起きた場合のリスクは、正しく貼られた面に貼り替えを頼むことと、版違いを見逃すことの2つです。 前者は読めない文字を mismatch にすると起き、後者は読めない文字を照らす文字で埋めると起きます。どちらも「読めない文字は ? にして not_visible」の1つの規則で防ぎます。

10まず何から始めるか

1週目:照らす文字を決める

過去に版違いが起きた原稿を集め、どの文字が変わっていたかを洗い出します。期間、価格、問い合わせ先、注記のどれが多いかを見て、照らす文字の項目を決めます。

2週目:30面で試す

先月の掲出から30面を選び、手元の Gemini の画面で読ませ、当時の確認の結果と並べます。読めない文字を照らす文字で埋めていないかを最優先で見ます。

3週目:媒体社と撮り方を決める

取引の多い媒体社3社に、近景と遠景の撮り方、番号札を写すこと、ファイル名に面の番号を入れることを頼みます。本文の書き方も、媒体社ごとに見本を集めます。

4週目:メールから一覧までをつなぐ

Gmail のラベルとフィルタを作り、Apps Script で写真を取り出し、Gemini API で読み、確認の一覧に書き出すところまで作ります。この時点では verdict を出さず、読み取りの結果だけを見ます。

2か月目: 規則で4つに分け、撮り直しの依頼の下書きを足します。媒体社を10社に広げます。3か月目以降: 広告主ごとの掲出報告の表を足し、期間の途中の写真を Batch API に回して、1面4分が何分になったかを実測します。営業が覆す項目の割合が落ち着き、照らす文字の登録が入稿の手順の中で回るようになった時点で、この構成は完成です。


11関連ユースケース

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

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

技術仕様確認日:2026-10-07/最終更新:2026-10-07
確認した内容情報源確認日
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。1回の入力に複数の画像を並べて渡せること。画像を直接入れる場合、指示などと合わせたリクエスト全体が20MBに制限されること。物体の検出で位置を [ymin, xmin, ymax, xmax] の形で0〜1000に正規化して返すことGemini API: Image understanding2026-10-07
構造化出力を response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum と required が使えること。出力がJSONとして正しくても値はアプリケーションの側で検証するよう案内されていることGemini API: Structured output2026-10-07
Batch API が通常の半分の費用であること。目標の完了が24時間以内であること。48時間を超えて実行中・待機中のジョブは結果が取れないことGemini API: Batch API2026-10-07
無料の枠では送った内容が製品の改善に使われ、人が読むことがあること。有料の枠ではプロンプトや画像などを製品の改善に使わず、禁止事項の違反を見つけるために限った期間だけ記録することGemini API Additional Terms of Service2026-10-07
Gmail を検索の条件で探せること。ラベルを名前で取得できることGoogle Apps Script: GmailApp2026-10-07
メールの添付ファイルを取り出せ、本文に埋め込まれた画像を含めるかを指定できること。送信の日時と送り主を取れることGoogle Apps Script: GmailMessage2026-10-07
インストール型トリガーに時間主導型があり、作った人のアカウントで動くことGoogle Apps Script: Installable triggers2026-10-07
1回の実行時間が6分まで、トリガーの合計の実行時間が Google Workspace のアカウントで1日6時間まで、外部への呼び出しが1日100,000回までであることGoogle Apps Script: Quotas for Google Services2026-10-07

掲出の報告の形式と、掲出の誤りがあったときの扱いは、広告主・媒体社との契約と取り決めに合わせてください。 本記事は上の公開情報で確認できた範囲だけを扱っています。

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

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

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

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