英文の広告掲載申込書(IO)を読み取り、掲載期間・枠・単価・キャンセル条件を受注台帳に転記して、媒体の規定と合わない条件を拾う
海外の広告主や広告会社から届く英文の広告掲載申込書(IO)を読み取り、掲載期間・広告枠・配信量・単価・キャンセル条件・支払条件を受注台帳に転記します。あわせて自社の媒体資料の規定と照らし、合わない条件を受注の前に営業へ返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- AWS Textract/Azure AI/Google Document AI
- 連携・自動化
- Python
- 対象業界
- IT・SaaS/広告
- 対象部門
- 営業
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 入力作業が多い/判断に時間がかかる/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 広告会社から署名済みのIOがメールで届き、海外担当の営業が案件フォルダに保存する
- 明細の表を読み、広告枠・期間・配信量・単価・金額を受注台帳に入力する
- 業務担当が台帳を見て、広告配信の仕組みに予約を入れる
- 営業が条件の欄を読み、キャンセル、支払、外部の配信計測、差し替えの条件を拾う
- 媒体資料の料金表と掲載規定を開き、単価・最低出稿・キャンセル・支払の条件と見比べる
- 違う条件があれば、営業の責任者に相談し、広告会社に修正を頼むか受け入れるかを決める
- 改定版が届いたら、前の版と見比べて台帳と予約を直す
- 人署名済みのIOを、ファイル名に案件番号を付けて受付フォルダに保存する
- 自動保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 自動OCRが全文、明細の表、キーと値、質問への答えと、それぞれの信頼度を返す
- 自動生成AIが、明細を1行ずつ、条件を1条件1行に、原文のまま取り出す
- 自動プログラムが、明細を料金表と照合し、条件を媒体資料の規定と項目ごとに照合する。改定版なら前の版との差分を出す
- 自動受注台帳への登録案と、規定と合わない条件の一覧(規定の該当箇所付き)を出す
- 人業務担当が明細の印の付いた行を、営業が規定と合わない条件を、IOの画像と見比べて確かめる
- 人規定と合わない条件の扱いを営業の責任者が決め、広告会社への返信の下書きを直して送る
- 人確定した明細を受注台帳に登録し、配信の予約を入れる
各工程の詳しい説明を読む
- 広告会社から署名済みのIOがメールで届き、海外担当の営業が案件フォルダに保存する
- 明細の表を読み、広告枠・期間・配信量・単価・金額を受注台帳に入力する
- 業務担当が台帳を見て、広告配信の仕組みに予約を入れる
- 営業が条件の欄を読み、キャンセル、支払、外部の配信計測、差し替えの条件を拾う
- 媒体資料の料金表と掲載規定を開き、単価・最低出稿・キャンセル・支払の条件と見比べる
- 違う条件があれば、営業の責任者に相談し、広告会社に修正を頼むか受け入れるかを決める
- 改定版が届いたら、前の版と見比べて台帳と予約を直す
(a)条件の欄が読まれないまま配信が始まる。 2番と3番は急ぎで進み、4番と5番は後回しになります。IAB の標準条件では、媒体社と広告会社の書面の承認か、最初の広告表示の早いほうで、IOと条件が受け入れられたとみなされます。 条件を読む前に配信を始めれば、読んでいない条件を受けたことになります。
(b)明細の転記が重い。 広告枠ごと・月ごとに行が分かれたIOでは、数十行の数字を台帳と予約画面の2か所に写します。
(c)規定との違いに気づかない。 IAB の標準条件は、保証型の配信なら14日前、固定枠なら30日前の書面の通知で、違約金なしにキャンセルできるとしています。自社の媒体資料のキャンセル規定と違っていても、IOに組み込まれていれば見落とします。
(d)改定版の差分が追えない。 改定版は全文で届き、どの行の期間や配信量が変わったかを人が探します。
(e)読み方が2名に偏る。 条件の欄の英文を読み、自社の規定のどこと比べればよいかを知っているのは海外担当の2名だけです。どちらかが休むと、条件の確認が止まるか、確認しないまま受注が進みます。
- 【人】 署名済みのIOを、ファイル名に案件番号を付けて受付フォルダに保存する
- 【自動】 保存をきっかけに処理が動き、形式・ページ数・パスワードの有無を確かめる
- 【自動】 OCRが全文、明細の表、キーと値、質問への答えと、それぞれの信頼度を返す
- 【自動】 生成AIが、明細を1行ずつ、条件を1条件1行に、原文のまま取り出す
- 【自動】 プログラムが、明細を料金表と照合し、条件を媒体資料の規定と項目ごとに照合する。改定版なら前の版との差分を出す
- 【自動】 受注台帳への登録案と、規定と合わない条件の一覧(規定の該当箇所付き)を出す
- 【人】 業務担当が明細の印の付いた行を、営業が規定と合わない条件を、IOの画像と見比べて確かめる
- 【人】 規定と合わない条件の扱いを営業の責任者が決め、広告会社への返信の下書きを直して送る
- 【人】 確定した明細を受注台帳に登録し、配信の予約を入れる
7番目と8番目の後にしか、配信の予約を入れません。 条件を読む前に最初の広告が表示されないようにするための順番です。
5番目の照合をプログラムに置くのも意図してのことです。 規定は自社が決めた表なので、同じIOなら誰が見ても同じ結果になるようにします。
02今回想定するシステム構成
英文のIO・改定版(広告会社からの署名済みPDF) ▼【トリガー】受付フォルダ(Amazon S3)への保存 AWS Lambda ── 形式・ページ数・パスワードの確認 ▼ AWS Textract(StartDocumentAnalysis:TABLES/FORMS/QUERIES/LAYOUT) │ 全文、明細の表のセル、キーと値、質問への答え、信頼度 ▼ Claude API ── 明細を1行ずつ、条件を1条件1行に、原文のまま取り出す │ ① 明細(枠・期間・配信量・単価・金額) ② 組み込まれた取引条件 │ ③ キャンセル ④ 支払 ⑤ 外部の配信計測 ⑥ 差し替えと審査 ▼ Python ── 料金表・媒体資料の規定との照合、改定版の差分 ▼ 台帳の登録案 + 規定と合わない条件の一覧(conform / deviate / not_covered / needs_human) ▼ 【業務担当と営業が確認】── 営業の責任者が扱いを決める ── 確定後に台帳と配信予約へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | AWS Textract(StartDocumentAnalysis/GetDocumentAnalysis) | Azure AI Document Intelligence、Google Document AI |
| 生成AI | Claude API(明細と条件の取り出し、広告会社への返信の下書き) | OpenAI API、Gemini API |
| 差異計算 | Python(料金表・規定との照合、改定版の差分) | 受注管理の仕組みの照合機能 |
| 連携 | AWS Lambda(保存と完了の通知を起点に処理を動かす) | Amazon EventBridge |
| 保管 | Amazon S3(IO、読み取り結果、照合の結果、登録の版) | 社内のファイルサーバー |
受注台帳と媒体資料は、新しく足すものではありません。 最初の準備は、媒体資料の掲載規定を、項目ごとの表に直すことです。PDFの文章のままでは照合の相手になりません。「キャンセルは掲載開始の何日前まで無料か」「支払の期日」「最低出稿金額」「差し替えの期限」を1項目1行で持ちます。
OCRに AWS Textract を選ぶのは、IOが英文だからです。 公式の上限の表で、対応言語は英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語とされ、日本語や中国語は読めません。 質問による読み取りも英語の文書だけです。
この題材で効くのは、表の読み取り(TABLES)です。 明細の表はセルごとに行と列の番号、列見出しかどうか、信頼度が返ります。公式の手引きでは、表全体や行・列をまるごと質問で取ることはできないとされています。 明細は表として取り、質問はIO番号や合計金額のような1つの値に使います。
03どうやって実装するのか
処理の起点を決める
受付フォルダ(Amazon S3)にPDFが保存されたことを起点にします。 IOは広告会社の出稿の決定に合わせて不定期に届き、掲載開始の直前に届くこともあるため、1日1回の定時実行にはしません。 IAB の標準条件では、媒体社は署名済みのIOを受け取ってから2営業日以内に、在庫が無いことを知らせるよう商業上合理的な努力をするとされています。この期限に間に合わせるには、届いた日に読む必要があります。
保存するのは営業で、ファイル名の先頭に案件番号を付けます。 メールから自動で保存しないのは、署名前の案や見積の往復が混ざり、どれが署名済みの版か機械では決められないからです。
S3 への保存を AWS Lambda が受け、StartDocumentAnalysis を呼びます。ClientRequestToken に案件番号とファイルのハッシュから作った値を入れ、同じファイルを二度読まないようにします。 完了は Amazon SNS に届き、SUCCEEDED を確かめてから結果を取り、すぐ S3 に保存します(JobId は7日間だけ有効です)。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| IOのPDF | 広告主、広告会社、IO番号、全文。保存した日時と版 | 受付フォルダ(S3) |
| 読み取り結果 | 全文、明細の表のセル、キーと値、質問への答え、信頼度 | AWS Textract |
| 料金表 | 広告枠ごとの単価、最低出稿、課金の方式 | 媒体資料を表にしたもの |
| 掲載規定の表 | キャンセル、支払、差し替え、外部計測、審査の規定を1項目1行で | 媒体資料を表にしたもの |
| 広告枠の対応表 | IOに書かれうる枠の英語名と、自社の枠の対応 | 業務担当が用意する一覧 |
| これまでの版 | 同じ案件の前の版の読み取り結果と、確定した登録内容 | S3 の保管領域 |
質を決めるのは、掲載規定の表と広告枠の対応表です。 規定が文章のままだと照合できず、対応表が無いと「Top Banner」「Header 728x90」が同じ枠だと分かりません。
データの取得方法を決める
読み取りは StartDocumentAnalysis に FeatureTypes として TABLES、FORMS、QUERIES、LAYOUT を指定して行います。全文の行と単語は、指定した機能にかかわらず返ります。
| 取るもの | どの機能で | 何に使うか |
|---|---|---|
| 明細の表のセル | TABLES | 枠・期間・配信量・単価・金額を1行ずつ |
| キーと値 | FORMS | 「IO Number」「Advertiser」「Billing Contact」など |
| 段落・見出し | LAYOUT | 条件の欄を見出しごとに区切る |
| 質問への答え | QUERIES | IO番号、広告主、キャンペーン名、合計金額、全体の期間 |
明細は、セルの行と列の番号で組み立て直します。 公式の説明では、セルは CELL として行の番号・列の番号・信頼度を持ち、列見出しのセルには COLUMN_HEADER が付きます。列見出しの文字から、どの列が単価でどの列が配信量かを決め、決められない列があれば needs_human にします。 表の合計行は TABLE_SUMMARY として返ることがあるので、明細の行と分けて扱い、明細の合計と照合します。
質問は、手引きに沿って文書の言葉で聞きます。
| 別名 | 質問の例 |
|---|---|
IO_NUMBER | What is the insertion order number? |
ADVERTISER | Who is the advertiser? |
CAMPAIGN | What is the campaign name? |
TOTAL | What is the total net amount? |
ページの指定が無いと質問は1ページ目しか見ないので、Pages に ["*"] を入れます。
AIへ渡す前に整形する
- 形式の確認 … JPEG、PNG、PDF、TIFF であることを確かめます。XFA形式のPDFは扱えないため、印刷し直してPDFにします
- パスワードの確認 … PDFはパスワードで保護されていてはいけません。電子署名のサービスから届いたPDFに保護が掛かっていれば、解除したものを頼みます
- ページ数とサイズの確認 … 非同期の処理でPDFは500MB・3,000ページが上限です。広告の原稿や企画書が同じPDFに綴じられていれば、IOの部分だけに分けます
- 言語の確認 … 英語以外の文が含まれていれば質問を外し、表とキーと値と全文で読みます
- 版の確認 … 同じ案件番号・同じIO番号の前の版があるかを調べ、あれば改定版として扱います
- 添付ページの切り分け … 電子署名のサービスが付ける署名の記録のページは、明細や条件と混ざらないよう、ページの範囲を分けて記録します
6番目を軽く見ないでください。 署名の記録のページにも日付と名前が並ぶため、そのまま渡すと、署名日を掲載の開始日と取り違えることがあります。
AIに処理させる
させるのは、明細を1行ずつ、条件を1条件1行に、原文のまま取り出し、条件に種類の札を付けることだけです。
| 取り出す項目 | 中身 | 取り出せないときの扱い |
|---|---|---|
| 明細 | 枠の名前、開始日と終了日、配信量、課金の方式、単価、金額、ネットかグロスか | セルが読めなければ unreadable |
| 組み込まれた取引条件 | 標準条件の名前と版、広告会社の特約の有無 | 書かれていなければ not_found |
| キャンセル | 何日前の通知で、何について、違約金があるか | 書かれていなければ not_found |
| 支払 | 支払の期日、請求書の宛先、請求の根拠になる計測 | 書かれていなければ not_found |
| 外部の配信計測 | 外部の計測を使うか、計測の食い違いの扱い | 書かれていなければ not_found |
| 差し替えと審査 | 原稿の入稿期限、差し替えの条件、掲載できない内容の扱い | 書かれていなければ not_found |
| 請求の参照 | 請求書に載せるよう求められた番号や参照、請求先の住所 | 書かれていなければ not_found |
請求の参照を受注のときに取るのには理由があります。 IAB の標準条件では、請求書にはIO番号、広告主名、キャンペーン名と、IOで請求に必要とされた番号を載せるとされ、すべての配信が終わってから90日以内に請求書を送るとされています。請求の担当が掲載の終わった後にIOを読み直さなくて済むよう、受注台帳の段階で参照番号を持たせます。
条件に札を付けるのが、照合を機械にできる理由です。 「cancellation」「payment」「measurement」のような種類を付ければ、プログラムは規定の表の同じ種類の行と比べられます。原文は必ず添えます。 比べた結果を人が確かめるとき、原文が無ければIOを開き直すことになります。
| させないこと | 理由 |
|---|---|
| 規定と合うかの判定 | 規定の表と照合するのはプログラム |
| 標準条件の中身の補完 | IOに名前だけ書かれた条件の内容を、AIが一般論で書き足さない |
| 金額の計算 | 単価×配信量の検算はプログラムが行う |
| 受けるか・断るかの判断 | 営業の責任者が決める |
| 広告の内容の審査 | 広告審査の担当が行う |
2行目がいちばん起きやすい失敗です。 「Subject to the 4A's/IAB Standard Terms and Conditions Version 3.0」とだけ書かれたIOを渡すと、AIは標準条件の一般的な内容からキャンセルの日数を書き足します。IOの側に独自の特約があれば、その日数は誤りになります。 名前と版だけを写させ、標準条件の中身は、自社で読んで規定の表と比べた結果を別に持ちます。
指示内容を固定する
あなたは媒体社の広告営業の担当として、英文の広告掲載申込書(IO)を読み、
受注台帳への登録と規定の照合に使う項目を取り出します。
OCRが返した読み取り結果だけを見てください。推測で埋めないでください。
【取り出す項目】
1. 明細(1行ずつ):枠の名前、開始日、終了日、配信量、課金の方式、単価、金額、ネット/グロス
2. 組み込まれた取引条件の名前と版、特約の有無
3. 条件(1条件1行):種類を cancellation / payment / measurement /
creative / makegood / other から1つ選ぶ
【status の選び方】
- ok ......... 値が読み取れており、その項目として解釈できる
- not_found .. その項目が書かれていない
- unreadable . 文字は検出されているが信頼度が低く、値として確定できない
- ambiguous .. 候補が複数あり、1つに決められない
迷ったときに ok を選ばないでください。
【厳守事項】
- original には、IOの英文をそのまま写してください。言い換えないでください。
- 日本語の説明は note_ja にだけ書いてください。
- 明細の数字は表のセルの値を写してください。単価×配信量などの計算をしないでください。
- 枠の名前はIOの書き方のまま写してください。自社の枠の名前に直さないでください。
- 標準の取引条件は、書かれている名前と版だけを写してください。
その条件の中身(キャンセルの日数など)を一般論で補わないでください。
- 書かれていない条件を補わないでください。
- 自社の規定に合うか、受けるべきかは書かないでください。
- 英語以外の文が含まれていれば、language_note にその旨を書いてください。
【読み取り結果】{textract_result}
【見出しごとに区切った原文】{sections}
【組み立て直した明細の表】{tables}
「標準条件の中身を補わない」は、書かないと必ず破られます。 AIは標準条件の内容をよく知っているように振る舞い、IOに書かれていない日数を条件の一覧に並べます。一覧に並んだ時点で、それがIOの条件なのか一般論なのか、人には区別できません。
出力形式を固定する
次の形のJSONで受け取ります。 Claude API の構造化出力(output_config.format に json_schema)で形を守らせます。
{
"io_number": "",
"line_items": [
{ "placement_text": "", "start_date": "", "end_date": "", "quantity": "",
"pricing_model": "CPM | CPC | flat | other", "rate": "", "amount": "",
"net_or_gross": "net | gross | not_stated", "status": "ok | unreadable | ambiguous" }
],
"incorporated_terms": { "name_text": "", "version_text": "", "status": "ok | not_found" },
"conditions": [
{ "condition_type": "cancellation | payment | measurement | creative | makegood | other",
"original": "", "note_ja": "" }
],
"language_note": ""
}
1つ目の理由は、照合の結果を別の層に置けることです。 JSONはAIが埋め、照合はプログラムが別の表に書きます。
| 照合の結果 | 意味 |
|---|---|
conform | 料金表・規定の該当行と合う |
deviate | 合わない(単価が料金表と違う、キャンセルの日数が規定より短い、など) |
not_covered | IOにある条件だが、規定の表に該当する行が無い |
needs_human | unreadable または ambiguous を含み、照合できない |
2つ目は、検算をプログラムが行えることです。 単価と配信量から金額を出し、IOの金額と1行ずつ比べます。合わない行に印を付けるだけで、どちらが正しいかは人が決めます。
3つ目は、not_covered が規定の表を育てることです。 規定に行が無い条件が何度も出れば、規定の表に行を足す材料になります。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォルダ(S3) | イベントで AWS Lambda を起動 | 保存を検知し、読み取りを始める |
| AWS Textract | API呼び出し(非同期) | 全文・明細の表・キーと値・質問を返す |
| Claude API | API呼び出し | 明細と条件の取り出し |
| 料金表・規定の表 | 読み取りのみ | 照合の相手 |
| 受注台帳 | 人が確定した後の登録 | 明細を案件番号で登録する |
| 営業への通知 | メールまたはチャット | 規定と合わない条件の一覧と、在庫の連絡の期限 |
受注台帳と配信の予約には、人が確定するまで書き込みません。 予約を先に入れると、条件を読む前に配信が始まりうるからです。
外部の配信計測の有無は、配信の予約の設定に渡します。 IAB の標準条件では、広告会社が外部の配信計測を使う場合、媒体社は事前の書面の同意なしにIOの配信量の10%を超えて上乗せ配信しないとされています。IOで外部計測が指定されていれば、予約の画面で配信の上限を設けるよう、登録案に印を付けます。
人が確認する
人が確かめるのは、印の付いた明細と、規定と合わない条件です。 conform の行は一覧で流し見ます。一覧は、IOを受け取った日から数えた在庫の連絡の期限が近い順に並べます。 2営業日の数え方は自社の営業日の暦でプログラムが行います。
needs_humanを先に見る … 読めなかったセルと、列の意味が決められなかった明細ですdeviateとnot_coveredを原文と見比べる … 種類の札が正しいか、キャンセルと差し替えの条件を取り違えていないかを見ます- 扱いを決める … 営業の責任者が、受け入れるか、広告会社に修正を頼むかを決めます。返信の下書きは直してから送ります
- 確定して登録する … 確定した明細だけを台帳に登録し、配信を予約します
目標は、120件をならして1件6分です。 前の版から配信量だけが変わった改定版は数分、条件の欄に特約が並ぶ新規のIOは10分を超えます。
例外に対処する
| 起きること | 対応 |
|---|---|
| パスワード付きのPDF | PDFはパスワードで保護できない。解除したものを頼む |
| XFA形式のPDF | 扱えない。印刷し直してPDFにする |
| 明細の列の意味が決められない | needs_human。列見出しの対応を規則に足す |
| 枠の名前が対応表に無い | 照合を止め、業務担当に対応表への追加を頼む |
| 明細の合計とIOの合計が合わない | 検算の結果を添えて人へ |
| 明細の期間が在庫の無い日を含む | 在庫の連絡の期限を添えて営業へ。予約は入れない |
| 署名済みでない版が保存された | 照合は進め、確定の前に署名済みの版を頼む |
| 前の版より新しい日付の版が後から届く | 版を並べ直し、新しい版で照合をやり直す |
| 英語以外のIO | 質問を外して読む。手書きの書き込みは英語しか読めない |
処理が FAILED または PARTIAL_SUCCESS | 受付フォルダに残して担当へ |
上から3行目までが大半を占めます。 どれも書式の問題で、よく取引する広告会社から順に、列見出しの対応を規則に足していきます。
記録を残す
- 元のIOのPDFと、保存した日時・版
- AWS Textract の結果のJSON全文と
JobId - Claude API の出力(
line_items、incorporated_terms、conditions) - 照合に使った料金表と規定の表の版と、照合の結果
- 規定と合わない条件の扱い(受け入れた/修正を頼んだ)と、決めた人
- 人が値を直した記録と、確定した版
4つ目と5つ目を残すのは、キャンセルや請求でもめたときの根拠にするためです。 どの規定の版で比べ、誰が何を受け入れたかが分かれば、広告会社との話が早く済みます。
04実装レベルの3段階
最小構成は、確かめるための段階です。 件数はさばけません。 半自動化で、①の明細の転記の大半が無くなります。 規定との見比べと改定版の差分は残り、本格構成でそれらも自動になります。この段階が本記事の想定です。 段階を飛ばさないでください。 本格構成の照合は、媒体資料の規定を表に直す作業が終わっていないと動きません。 半自動化の1か月で、規定の表を作ります。
05工数削減シミュレーション
導入後 120件 × 6分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- Webメディアやアプリを運営し、海外の広告会社から英文のIOを毎月数十〜百件超受けて、広告営業と業務担当がPDFを読んで受注台帳と配信の予約に手で写している媒体社。IOに付いてくる標準の取引条件と自社の媒体資料の規定の違いに、掲載が始まってから気づいたことがある場合。キャンセルや請求の条件で広告会社ともめたことがある場合。
- IOが日本語や中国語・韓国語で届く取引が中心の場合(この構成のOCRは英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語しか読めず、質問による読み取りは英語の文書だけです)。運用型の広告の取引が中心で、IOを交わす予約型の取引が月に数件の場合。なお、規定と違う条件を受け入れるか、広告会社と条件を交渉するか、広告の内容を掲載してよいかの判断は、営業の責任者と広告審査の担当が行うもので、この構成では代替できません。
07最小構成で試す方法
- 過去3か月のIOから10件を選ぶ(うち数件は、キャンセルや請求でもめたもの、条件の欄が長いものを入れる)
- その10件について、受注台帳の登録内容と、当時の条件の確認のメモを集める
- IOのPDFを、手元のAIサービスの画面に1件ずつ貼り付ける
- 「このIOから、明細(枠・開始日・終了日・配信量・単価・金額)を1行ずつ、条件を1条件1行で、原文のまま取り出してください。条件には cancellation / payment などの種類を付けてください。書かれていない条件を補わないでください」と指示する
- 出てきた条件を、媒体資料の規定と手で見比べる
10件は必ずやってください。 ワークフローを組む前に、「条件の欄を原文のまま、種類付きで取り出せるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時読まれていなかった条件が出た | 見落としが見つかった。OCRとの連携に進む |
| 標準条件の中身を書き足した | 指示の書き方で直る。構成は有効 |
| 明細の列の意味を取り違えた | 表の組み立てと列見出しの規則が先 |
1行目は失敗ではなく、条件の欄がどれだけ読まれていなかったかが分かったということです。
3行目が出たら、AIの画面ではなくOCRの表の結果を先に見てください。 「Qty」「Units」「Imps」のように、配信量の列見出しは広告会社ごとに違います。どの書き方が出てくるかを、この10件で拾っておきます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが標準条件の中身を一般論で書き足す | 名前と版だけを写させる。 中身は自社で読んで別に持つ |
| 条件の種類の札を取り違える | 原文を添え、確認で札だけは必ず見る |
| 明細の列の意味を取り違える | 列見出しの規則で決め、決められなければ needs_human |
| 表全体を質問で取ろうとする | 表全体や行・列は質問で取れない。TABLES のセルで組み立てる |
| 質問が2ページ目以降を見ない | ページの指定が無いと1ページ目だけ。**Pages に ["*"] を入れる** |
| 枠の名前の書き方の違いで照合できない | 対応表を用意し、AIには書き方のまま写させる |
| 規定が文章のままで照合できない | 規定を1項目1行の表に直してから照合を足す |
| 確認の前に配信の予約が入る | 予約は確定の後だけにする |
| 外部計測ありのIOで配信が上振れする | 登録案に印を付け、予約の画面で上限を設ける |
| 請求の参照番号が請求書に載らない | 受注台帳に参照番号の欄を持ち、受注のときに埋める |
上の2行が、この構成の失敗のほとんどです。 どちらも、IOに書かれた条件と、AIが知っている一般論の境目が消えるという同じ形をしています。
下の3行は、運用の順番の問題です。 IAB の標準条件では、最初の広告表示で条件が受け入れられたとみなされうるため、確認より先に配信が始まる経路を残さないでください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 広告主と広告会社の名称と担当者、キャンペーンの名前と期間、出稿の金額と単価です。発表前の商品やキャンペーンの情報が含まれることがあり、社外に出れば広告主の不利益になります。
- 外部へ渡す範囲を、取り出しに要るものに限る … 生成AIに渡すのはIOの読み取り結果と原文です。料金表や他の広告主の取引条件は照合のプログラムの側で使い、生成AIへは渡しません
- AWS の保存先を自社の管理下に置く … 結果は
OutputConfigで自社のバケットに出し、KMSKeyIdで自社の鍵で暗号化できます - 広告会社への返信を自動で送らない … 出すのは下書きまでです。条件の修正を頼むことは、取引の交渉そのものです
- この構成は、条件を受けるかも、広告を掲載してよいかも判断しません … 判断するのは営業の責任者と広告審査の担当です。この構成が出すのは、IOに何が書かれていたかと、規定と合うかという事実だけです
- IOと読み取り結果の保存期間を決める … 請求とキャンセルの話が終わるまでは残し、掲載の終了から一定の期間が過ぎたら消す手順を先に決めます。広告主との契約で保存の扱いが決まっていれば、それに従います
誤りが起きた場合のリスクは、規定と違う条件を読まずに受けることと、IOに無い条件を前提に話を進めることの2つです。 前者は確認の前に配信を始めると起き、後者はAIが一般論を書き足すと起きます。
10まず何から始めるか
1週目:掲載規定を表に直す
媒体資料の掲載規定を、キャンセル、支払、差し替え、外部計測、最低出稿の5項目から、1項目1行の表に直します。
2週目:10件で試す
過去3か月のIOから10件を選び、手元のAIサービスに貼り付けて明細と条件を取り出させます。当時読まれていなかった条件が出るかを最優先で見ます。
3週目:標準条件を自社で読む
よく組み込まれる標準の取引条件を自社で読み、規定の表と違う箇所を一覧にします。 IOに名前が書かれていたら、この一覧を営業に出す形にします。
4週目:受付フォルダから読み取りまでをつなぐ
S3、Lambda、Textract、SNS をつなぎ、明細の登録案と条件の一覧を出すところまで作ります。この時点では照合を足しません。
2か月目: 料金表・規定との照合と検算を足します。3か月目以降: 改定版の差分を足し、1件20分が何分になったかを実測します。条件を読む前に配信が始まる案件が無くなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 4A's/IAB Standard Terms and Conditions Version 3.0 が、IOに組み込まれると当事者の共通の理解になること。IOに配信量の種類と量、価格、上限金額、開始日と終了日、外部の配信計測の事業者が書かれること。署名済みのIOを受け取ってから2営業日以内に在庫が無いことを知らせる努力をすること。書面の承認か最初の広告表示の早いほうで受け入れたとみなされること。保証型は14日前、非保証型は7日前、固定枠は30日前の書面の通知で違約金なしにキャンセルできること(IOで取り消し不可とした場合を除く) | 4A's/IAB: Standard Terms and Conditions for Internet Advertising for Media Buys One Year or Less, Version 3.0(PDF) | 2026-10-08 |
| XFA形式のPDFの非対応。パスワード付きPDFの非対応。非同期でPDF500MB・3,000ページまで。対応言語が英・仏・独・伊・葡・西で、質問は英語だけ、手書きは英語のみ | AWS: Set Quotas in Amazon Textract | 2026-10-08 |
FeatureTypes(TABLES/FORMS/QUERIES/SIGNATURES/LAYOUT)。全文の行と単語は指定にかかわらず返ること。ClientRequestToken、Amazon SNS への完了通知と SUCCEEDED の確認、OutputConfig と KMSKeyId。JobId が7日間だけ有効なこと | AWS: StartDocumentAnalysis | 2026-10-08 |
表のセルが CELL として行・列の番号と信頼度を持ち、COLUMN_HEADER・TABLE_SUMMARY などの種類が付くこと | AWS: Tables | 2026-10-08 |
表全体や行・列を質問で取ることはできないこと。文書の言葉で聞くこと。ページの指定が無いと ["1"] になること | AWS: Best Practices for Queries | 2026-10-08 |
構造化出力を output_config.format に json_schema を指定して受け取れること | Claude Docs: Structured outputs | 2026-10-08 |
規定と違う条件を受け入れるか、広告を掲載してよいかは、営業の責任者と広告審査の担当が決めるものです。 本記事は公開資料で確認できた範囲と、IOの読み取りと規定との照合までを扱っています。IAB の標準条件は米国の業界団体の文書で、日本の取引に当然に適用されるものではありません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1031)についてのご相談はこちらから。
