屋外広告・交通広告の掲出写真を発注した媒体・面・期間・原稿と照らし、掲出の誤りと写真の不備を広告主への掲出報告の前に拾う
媒体社から届く屋外広告・交通広告の掲出写真を、発注した媒体・面・掲出期間と入稿した原稿に照らし、原稿の版違い・面違い・はがれと、写真の不備を拾います。広告主への掲出報告の前に、媒体社への対応を済ませます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- 不動産/小売/広告
- 対象部門
- 営業
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 画像認識
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 媒体の手配の担当が、広告主の発注を受けて媒体社に発注し、原稿を入稿する
- 掲出が始まると、媒体社から掲出写真がメールで届く
- 担当が写真を保存し、メールの本文の面の番号で発注の管理表の行を探す
- 写真の原稿を、入稿した原稿のデータと見比べる。期間の日付や価格の表記まで見る
- 面の番号、掲出の位置、はがれや汚れがないかを見る
- 問題があれば、媒体社に貼り替えか撮り直しを頼む
- 写真を報告書の雛形に貼り、媒体名・面の番号・期間を書き写して、広告主に送る
- 人媒体の手配の担当が、発注の管理表に媒体・面の番号・掲出期間・原稿の版を登録し、入稿した原稿の画像と照らす文字を登録する
- 自動媒体社からのメールを、決めたラベルで受け、15分おきに写真を取り出す
- 自動メールの本文の面の番号で、発注の管理表の行を引く
- 自動写り具合と写真の種類(近景・遠景)を確かめる
- 自動写真の原稿の決めた文字を読み、入稿した版の文字と照らす。面の番号の表示を読み、発注と照らす
- 自動はがれ・破れ・汚れなど、見える掲出の不良を位置付きで書き出す
- 自動規則で `pass` / `posting_issue` / `photo_issue` / `review` を決める
- 人営業が、`posting_issue` と `review` を確かめ、媒体社に貼り替えを頼む
- 自動`photo_issue` は、媒体社に撮り直しの依頼の下書きを作る
- 自動`pass` の面を広告主ごとにまとめ、掲出報告の表の下書きを作る
- 人営業が報告の下書きを確かめて、広告主に送る
各工程の詳しい説明を読む
- 媒体の手配の担当が、広告主の発注を受けて媒体社に発注し、原稿を入稿する
- 掲出が始まると、媒体社から掲出写真がメールで届く
- 担当が写真を保存し、メールの本文の面の番号で発注の管理表の行を探す
- 写真の原稿を、入稿した原稿のデータと見比べる。期間の日付や価格の表記まで見る
- 面の番号、掲出の位置、はがれや汚れがないかを見る
- 問題があれば、媒体社に貼り替えか撮り直しを頼む
- 写真を報告書の雛形に貼り、媒体名・面の番号・期間を書き写して、広告主に送る
(a)掲出の初日に写真が集中する。 月初の月曜には数百枚の写真が届きます。後ろに回った面ほど見比べが粗くなり、報告書も数日遅れます。
(b)原稿の版の違いを見落とす。 価格を改訂した第2版を入稿したのに、媒体社の手元に第1版が残っていて貼られる。デザインが同じなので、縮小した写真では違いが分かりません。 広告主から指摘されて初めて気づくと、掲出の初日から何日も古い価格が出ていたことになります。
(c)写真の不備に後で気づく。 原稿が反射で読めない、面の番号が写っていない、撮影日が掲出の初日より前。報告書を作る段になって気づき、撮り直しを頼むと、報告がさらに遅れます。
(d)報告書を写真の貼り付けから作っている。 1面ごとに写真を貼り、管理表から書き写します。書き写しの誤りで、報告書の面の番号が違うこともあります。
- 【人】 媒体の手配の担当が、発注の管理表に媒体・面の番号・掲出期間・原稿の版を登録し、入稿した原稿の画像と照らす文字を登録する
- 【自動】 媒体社からのメールを、決めたラベルで受け、15分おきに写真を取り出す
- 【自動】 メールの本文の面の番号で、発注の管理表の行を引く
- 【自動】 写り具合と写真の種類(近景・遠景)を確かめる
- 【自動】 写真の原稿の決めた文字を読み、入稿した版の文字と照らす。面の番号の表示を読み、発注と照らす
- 【自動】 はがれ・破れ・汚れなど、見える掲出の不良を位置付きで書き出す
- 【自動】 規則で
pass/posting_issue/photo_issue/reviewを決める - 【人】 営業が、
posting_issueとreviewを確かめ、媒体社に貼り替えを頼む - 【自動】
photo_issueは、媒体社に撮り直しの依頼の下書きを作る - 【自動】
passの面を広告主ごとにまとめ、掲出報告の表の下書きを作る - 【人】 営業が報告の下書きを確かめて、広告主に送る
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どうやって実装するのか
処理の起点を決める
15分おきの時間主導型トリガーで、ラベル「掲出写真」の付いた未処理のメールを探します。 媒体社からのメールには、Gmail のフィルタで送り主ごとにラベルを付けておきます。処理したメールには「処理済み」のラベルを付け、次の検索から外します。 処理済みにするのは、すべての写真の判定が一覧に書けたときだけです。
1回の実行は6分までです。 月初の月曜に数百枚が届いても、1回の実行で処理するメールの数を決めておき、残りは次の15分に回します。 トリガーの1日の合計の実行時間は Google Workspace のアカウントで6時間までです。
掲出の期間の途中で届く中間の写真は、急ぎません。 期間の途中に撮られた写真は、夜にまとめて Batch API に送る形にできます。Batch API は通常の半分の費用で、目標の完了は24時間以内とされ、48時間を超えて終わらないジョブは結果が取れません。掲出の初日の写真は、その日のうちに結果が要るので通常の呼び出しにします。
インストール型のトリガーは作った人のアカウントで動きます。 媒体社からのメールを受ける営業部の共用のアカウントで作ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 掲出写真 | 面ごとの近景と遠景。メールの本文の媒体名・面の番号・撮影日 | 媒体社からのメール |
| 発注の内容 | 広告主、媒体、面の番号、掲出期間、原稿の版、媒体社の送り主 | 発注の管理表 |
| 原稿の画像 | 入稿した版の原稿を画像にしたもの | Google ドライブ |
| 照らす文字 | 原稿の版ごとの、キャンペーンの期間・価格・問い合わせ先・注記 | 照らす文字の表 |
| 面の手がかり | 面ごとの番号の表示のされ方(額縁の番号札、看板の管理番号など) | 媒体社の資料から作る表 |
質を決めるのは、照らす文字の表です。
| 原稿の版 | 項目 | 照らす文字 |
|---|---|---|
| A社春キャンペーン v2 | 期間 | 4月1日〜4月30日 |
| A社春キャンペーン v2 | 価格 | 月額2,980円(税込) |
| A社春キャンペーン v2 | 問い合わせ先 | 0120-xxx-xxx |
| A社春キャンペーン v2 | 注記 | ※一部店舗を除く |
版を改訂したら、照らす文字も改訂した版で登録し直します。 第1版の行を消さずに残し、写真の文字が第1版と合えば「旧版が貼られている」と分かるようにします。
データの取得方法を決める
メールの本文から、面の番号と撮影日を取ります。 媒体社ごとに本文の書き方が違うので、本文から番号と日付を取り出す規則を媒体社ごとに持ちます。 規則で取れない本文は、その行を review にして営業に回します。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 掲出写真 | メールの添付ファイル(本文に埋め込まれた画像を除く) | 読み取りの対象 |
| 面の番号・撮影日 | メールの本文を媒体社ごとの規則で読む | 発注の行を引く鍵、期間との照合 |
| 発注の行 | 面の番号と掲出期間で引く発注の管理表 | 照らす相手 |
| 原稿の画像と照らす文字 | 発注の行の原稿の版で引く | 読み取りの指示に差し込む |
| 送り主 | メールの送り主 | 知らない送り主の除外 |
添付ファイルは、本文に埋め込まれた画像を除いて取り出します。 媒体社の署名のロゴが本文に入っていると、それも画像として拾われます。添付の取り出しでは、埋め込みの画像を含めない指定ができます。
撮影日は、メールの本文の記載を使います。 掲出期間の初日より前の撮影日なら、掲出の前に撮った写真が送られてきた可能性があるので review にします。
AIへ渡す前に整形する
- 形式の確認 … PNG、JPEG、WEBP、HEIC、HEIF のどれかであることを確かめます。PDFで届いた報告は、この構成では扱わず営業に回します
- 大きさの確認 … 近景・遠景・原稿の画像と指示を合わせて20MBを超えないよう、大きすぎるものは縮めます
- 面ごとの組み合わせ … 1通のメールに複数の面の写真があれば、ファイル名と本文で面ごとに組にします。組にできなければ
review - 重複の確認 … 同じ面の同じ日の写真が2通で届いたら、後のものを使います
3番目が崩れやすいところです。 媒体社によっては、1通に30面の写真を番号順に添付し、本文に面の番号を並べてきます。ファイル名と本文の並びが合わないと、写真と面の組が全部ずれます。 組を作った後に、写真の枚数と本文の面の数が合うかを必ず確かめます。
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日」だった旧版を見逃します。
指示内容を固定する
あなたは広告会社の営業部で、屋外広告・交通広告の掲出写真を確かめる立場です。
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枚目に入稿した原稿を並べているのは、項目の位置を教えるためです。 原稿のどこに期間や価格があるかが分かると、写真の中の同じ場所を探せます。 ただし比べるのは、原稿の画像ではなく照らす文字です。
出力形式を固定する
次の形の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_issue | mismatch が1つでもある、panel_label が発注の面の番号と違う、defects がある |
photo_issue | posting_issue に当たらず、photo_quality に retake があるか、not_visible がある |
review | 面の番号が本文から取れない、撮影日が期間の外、写真と面の組が作れない |
pass | 上のどれにも当たらない |
2つ目は、旧版を名指しできることです。 mismatch の observed を、照らす文字の表の第1版の行と比べ、一致すれば「旧版(v1)が貼られている」と営業に示せます。 媒体社への連絡が「違います」から「v1が貼られています。v2に貼り替えてください」に変わります。
3つ目は、報告の表がそのまま作れることです。 pass の面を広告主ごとに並べ、媒体名、面の番号、掲出期間、撮影日、近景と遠景の写真へのリンクを1行ずつ書けば、報告書の写真の貼り付けと書き写しが要らなくなります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Gmail | 時間主導型トリガーでの検索 | ラベルの付いたメールから写真と本文を取り出す |
| 発注の管理表 | スプレッドシートの読み取り | 面の番号と期間で発注の行を引く |
| 照らす文字の表 | スプレッドシートの読み取り | 原稿の版ごとの文字を引く |
| Gemini API | Apps Script から呼び出し | 写り具合、文字と面の番号と不良の読み取り |
| 確認の一覧 | スプレッドシートへの書き込み | 写真へのリンク、読み取った文字、verdict |
| 媒体社 | 営業からのメール | 貼り替えの依頼、撮り直しの依頼 |
| 広告主 | 営業からの送付 | 掲出報告の表 |
媒体社への連絡も、広告主への報告も、自動では送りません。 撮り直しの依頼は下書きまで作り、営業が送ります。掲出の誤りの連絡は、媒体社との関係と補償の話に関わるからです。
呼び出しの回数は1日の上限の範囲です。 外部への呼び出しは Google Workspace のアカウントで1日100,000回までで、1面あたり2回の呼び出しなら、月600面は十分に収まります。
人が確認する
営業は、posting_issue を最初に開きます。 確認の一覧には、写真に枠を重ねた表示へのリンク、照らす文字と読めた文字、旧版との一致が並びます。
posting_issueを見る … 枠の位置で、版違い・面違い・不良が本当かを確かめ、その日のうちに媒体社に連絡しますreviewを見る … 面の番号が取れない、撮影日が期間の外のものを、媒体社に確かめますphoto_issueの下書きを送る … 撮り直しの依頼を確かめて送ります- 報告の表を確かめる … 面の数、期間、写真のリンクを確かめてから広告主に送ります
- 判定を覆したら記録する …
mismatchをmatchに直したら、その理由を短く残します
1番目で版違いが本当だったら、広告主への連絡も営業が決めます。 何日間、旧版が出ていたか、貼り替えはいつか。掲出の誤りを広告主に伝える順番は、営業の判断です。
pass の面も、週に1回は数面を抜き取って見ます。 AIが見逃した版違いは posting_issue の確認だけでは見つからないので、抜き取りが見逃しを知る唯一の手がかりです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 原稿が反射・暗さで読めない | photo_issue。媒体社に撮る角度と時刻を変えた撮り直しを頼む |
| 面の番号の表示が写っていない | not_visible。近景か遠景のどちらかに番号札を入れて撮る決まりを媒体社と結ぶ |
| 本文から面の番号が取れない | review。媒体社ごとの読み取りの規則を足す |
| 撮影日が掲出期間の初日より前 | review。掲出の前の写真が送られた可能性を媒体社に確かめる |
| 1通に多数の面の写真がある | 枚数と本文の面の数が合わなければ、組を作らず review |
| デジタルサイネージで原稿が切り替わる | 写真に写った原稿が1つだけなら、その原稿で照らす。別の原稿が写っていれば review |
| 照らす文字が登録されていない版 | 「照合なし」で止め、媒体の手配の担当に登録を頼む |
| 知らない送り主のメール | 処理せず、営業に転送する |
| Gemini API が応答しない | 確認の一覧に「未処理」で残し、次の見回りで再度処理する。3回失敗したら営業が目で見る |
上から2行目までが大半を占めます。 どちらもAIの問題ではなく、媒体社の撮り方の問題です。 撮影の手本と番号札を写す決まりを媒体社と共有すると、photo_issue が減ります。
記録を残す
- 掲出写真の元のファイルと、受け取ったメールの日時・送り主
- 指示の全文と、返ってきたJSONの全文
- 照らした原稿の版と照らす文字
verdictと、営業が覆した項目とその理由- 媒体社への貼り替え・撮り直しの依頼と、貼り替えの後の写真
- 広告主に送った報告の表と、送った日時
照らした版と文字を残すのは、版が後から改訂されるからです。 改訂の後に過去の報告を見直すと、どの版で照らしたかが分からなければ、その判定が正しかったかを判断できません。
貼り替えの後の写真も同じ面の行に残します。 版違いがいつ見つかり、いつ直ったかが1行で追えると、広告主から掲出の誤りの期間を聞かれたときに答えられます。
04実装レベルの3段階
半自動化で、1面4分が2分程度になります。 見比べは自動になりますが、全件の結果を見て、報告書に写真を貼る作業が残ります。本格構成で1分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、photo_issue の多い媒体社と、本文の読み取りの規則が合わない媒体社が分かります。そこを媒体社と調整してから報告の表まで自動にするほうが、報告の手戻りが減ります。
05工数削減シミュレーション
導入後 600件 × 1分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 駅貼りのポスター、車内の広告、屋外の看板、デジタルサイネージなどの屋外広告・交通広告を、毎月数百面規模で広告主から受注して媒体社に発注している広告会社。掲出が始まるたびに媒体社から掲出写真がメールで届き、営業が発注の内容と見比べて広告主への掲出報告を作っている場合。発注の内容(媒体・面の番号・掲出期間・原稿の版)を表で持っている場合。店舗の看板や物件の看板を看板会社に掲出させ、写真で確かめている小売業・不動産業にも当てはまります。
- 掲出が月に数面で、営業が写真を見れば足りる場合。媒体社が掲出の報告を独自の画面で出していて、写真をまとめて受け取れない場合。掲出の場所の環境(周りの建物、人通り)の良し悪しを評価したい場合。なお、掲出の誤りの責任の所在と、媒体社への補償の求めの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の掲出から、版違いや撮り直しがあった面を含めて30面を選ぶ
- その30面の原稿の版ごとに、照らす文字を表にする
- 手元の Gemini の画面に、原稿の画像と近景と遠景の3枚を貼り、第7章の指示を貼り付ける
- 返ってきた読み取りを、当時の営業の確認の結果と並べる
| 出てきた内容 | 判断 |
|---|---|
当時見つけた版違いが mismatch で出た | メールとスクリプトの連携に進む |
読めない文字を照らす文字で埋めて match にする | 指示の「合わせて読まない」を強める。? を使わせる |
| はがれを見落とす | 遠景だけでは見えない。近景の撮り方を媒体社と決める |
| 原稿がほとんど読めない | 撮り方が先。 AIの問題ではない |
1行目が出なかった場合は、照らす文字の選び方を見直してください。 版違いで変わった文字が、照らす文字に入っていない可能性があります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
読めない文字を照らす文字で埋めて match にする | ? で残させ、合わせて読まないことを指示に書く |
| 版違いを見た目の似かたで見逃す | 決めた文字で照らす。 期間・価格・問い合わせ先・注記 |
| 掲出の誤りと写真の不備が混ざる | posting_issue と photo_issue を分ける |
| 写真と面の組がずれる | 枚数と本文の面の数が合わなければ組を作らない |
| 署名のロゴを写真として拾う | 本文に埋め込まれた画像を取り出しから外す |
撮影日が期間の外の写真で pass になる | 本文の撮影日を期間と照らし、外なら review |
| 照らす文字の登録が漏れる | 入稿の確認の欄に入れる |
| 旧版の行を消してしまう | 改訂しても旧版の行は残し、旧版との一致を出す |
| 撮り直しや貼り替えの依頼が自動で飛ぶ | 下書きまで。 送るのは営業 |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIが照らす相手に合う方向に寄ることから来ます。 読めた文字だけで比べ、比べる項目を決めておくことで、版違いが版違いのまま残ります。
4行目は、一度起きると全部の面がずれます。 1通に多数の面の写真を送る媒体社には、ファイル名に面の番号を入れてもらうよう頼むのが、いちばん確実です。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 掲出写真、入稿した原稿、発注の内容(広告主・媒体・期間)、媒体社の担当者の宛先です。掲出の写真には、通行人や車のナンバーが写ることがあります。
- 通行人を写さない … 遠景の写真に通行人の顔や車のナンバーがはっきり写る場合があります。報告の表に載せる前に営業が確かめ、広告主に送る写真から外すか、撮り直しを頼みます
- 発売前の原稿の扱い … 掲出の初日の前に入稿した原稿は、広告主の公表前の情報です。Gemini API の利用規約では、無料の枠では送った内容が製品の改善に使われ、人が読むことがあるとされ、有料の枠では製品の改善に使わず、禁止事項の違反を見つけるために限った期間だけ記録するとされています。有料の枠で使います
- 広告主ごとに情報を分ける … 報告の表は広告主ごとに作り、別の広告主の面の写真が混ざらないことをスクリプトで確かめます
- 誤りの責任をAIの結果で決めない … 出すのは発注の内容との違いの事実だけです。媒体社の貼り間違いか、入稿の取り違えかは、営業が経緯を確かめて決めます
- 報告は人が確かめて送る … 掲出の報告は請求の前提です。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技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
対応する画像の形式が PNG、JPEG、WEBP、HEIC、HEIF であること。1回の入力に複数の画像を並べて渡せること。画像を直接入れる場合、指示などと合わせたリクエスト全体が20MBに制限されること。物体の検出で位置を [ymin, xmin, ymax, xmax] の形で0〜1000に正規化して返すこと | Gemini API: Image understanding | 2026-10-07 |
構造化出力を response_format に mime_type: "application/json" とスキーマを入れて指定すること。enum と required が使えること。出力がJSONとして正しくても値はアプリケーションの側で検証するよう案内されていること | Gemini API: Structured output | 2026-10-07 |
| Batch API が通常の半分の費用であること。目標の完了が24時間以内であること。48時間を超えて実行中・待機中のジョブは結果が取れないこと | Gemini API: Batch API | 2026-10-07 |
| 無料の枠では送った内容が製品の改善に使われ、人が読むことがあること。有料の枠ではプロンプトや画像などを製品の改善に使わず、禁止事項の違反を見つけるために限った期間だけ記録すること | Gemini API Additional Terms of Service | 2026-10-07 |
| Gmail を検索の条件で探せること。ラベルを名前で取得できること | Google Apps Script: GmailApp | 2026-10-07 |
| メールの添付ファイルを取り出せ、本文に埋め込まれた画像を含めるかを指定できること。送信の日時と送り主を取れること | Google Apps Script: GmailMessage | 2026-10-07 |
| インストール型トリガーに時間主導型があり、作った人のアカウントで動くこと | Google Apps Script: Installable triggers | 2026-10-07 |
| 1回の実行時間が6分まで、トリガーの合計の実行時間が Google Workspace のアカウントで1日6時間まで、外部への呼び出しが1日100,000回までであること | Google Apps Script: Quotas for Google Services | 2026-10-07 |
掲出の報告の形式と、掲出の誤りがあったときの扱いは、広告主・媒体社との契約と取り決めに合わせてください。 本記事は上の公開情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0748)についてのご相談はこちらから。
