新聞・雑誌の掲載紙をスキャンして読み取り、掲載日・掲載面・広告サイズ・原稿番号を発注と照らして、掲載の誤りと掲載紙の未着を広告主への報告の前に拾う
媒体社から届く新聞・雑誌の掲載紙をスキャンして読み取り、掲載日・掲載面・広告サイズ・原稿の版を発注の内容と照らします。誤りのある掲載と、掲載日を過ぎても届かない掲載紙を、広告主へ報告する前に担当へ返します。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- AIサービス
- Azure AI/Google Document AI
- 連携・自動化
- Make/n8n/Power Automate/Python
- 対象業界
- 不動産/小売/広告
- 対象部門
- 営業
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 読み取り(OCR)
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 届いた掲載紙を開封し、発注の管理の仕組みでどの掲載の分かを探す
- 新聞なら面をめくって、自社が発注した広告を探す
- 紙面の上の日付と面の番号を見て、発注の掲載日・面と合っているかを確かめる
- 広告の大きさを見て、発注のサイズ(新聞なら段、雑誌ならページの割合)と合っているかを確かめる
- 入稿した原稿のPDFを開き、広告の中の価格・日付・電話番号を見比べて、版が合っているかを確かめる
- 合っていれば掲載紙の該当面をスキャンし、広告主への報告に添える
- 掲載日から日がたっても届かない掲載紙は、気づいたときに媒体社へ問い合わせる
- 人営業アシスタントが届いた掲載紙の該当する号をスキャンし、PDFで届いたものとあわせて受領フォルダに入れる
- 自動ファイルの保存をきっかけに連携の処理が動き、形式と大きさを確かめる
- 自動OCRが紙面ごとの文字・段落の役割・図の位置と、文字ごとの信頼度を返す
- 自動生成AIが、紙面の媒体名・発行日・面の番号と、広告らしい領域の位置・中の文字を取り出す
- 自動処理が発注の管理の仕組みの掲載と照らし、掲載日・面・サイズ・原稿の版の項目ごとに `match` / `mismatch` / `not_found` / `unreadable` を付ける
- 自動処理が掲載日から決まった日数を過ぎても掲載紙が届いていない掲載を、毎朝の一覧に出す
- 人営業アシスタントが、`mismatch` / `not_found` / `unreadable` のあるものだけ紙面を開いて確かめる
- 人誤りが確かなものは営業が媒体社に問い合わせ、広告主への報告をどうするかを決める
- 【人/自動】 すべての項目が `match` のものは、該当面の画像を添えた報告の下書きを作り、営業が確かめて送る
各工程の詳しい説明を読む
- 届いた掲載紙を開封し、発注の管理の仕組みでどの掲載の分かを探す
- 新聞なら面をめくって、自社が発注した広告を探す
- 紙面の上の日付と面の番号を見て、発注の掲載日・面と合っているかを確かめる
- 広告の大きさを見て、発注のサイズ(新聞なら段、雑誌ならページの割合)と合っているかを確かめる
- 入稿した原稿のPDFを開き、広告の中の価格・日付・電話番号を見比べて、版が合っているかを確かめる
- 合っていれば掲載紙の該当面をスキャンし、広告主への報告に添える
- 掲載日から日がたっても届かない掲載紙は、気づいたときに媒体社へ問い合わせる
(a)広告を探すのに時間がかかる。 新聞は数十面あり、自社の広告がどの面にあるかを1面ずつめくって探します。発注の面と違う面に載っていると、探す時間がさらに延びます。
(b)古い版の原稿に気づかない。 毎週の出稿で見た目がほとんど同じ広告は、価格や日付の数字まで見比べないと版の違いが分かりません。 忙しいときは見た目で合っていると判断してしまいます。
(c)届かない掲載紙を追えていない。 届いたものを確かめる流れはあっても、届いていないものを数える流れがありません。 広告主から「掲載紙はまだか」と聞かれて、初めて届いていないことに気づきます。
(d)確かめた記録が残らない。 どの項目を見て合っていると判断したかが残らないので、後から誤りが分かったときに、見落としたのか、見たのに気づかなかったのかが分かりません。
(e)担当者によって確かめる項目が違う。 日付と面だけを見る人、サイズまで見る人、原稿の数字まで見る人がいます。同じ広告主の掲載でも、担当した営業アシスタントによって誤りが見つかるかどうかが変わります。
- 【人】 営業アシスタントが届いた掲載紙の該当する号をスキャンし、PDFで届いたものとあわせて受領フォルダに入れる
- 【自動】 ファイルの保存をきっかけに連携の処理が動き、形式と大きさを確かめる
- 【自動】 OCRが紙面ごとの文字・段落の役割・図の位置と、文字ごとの信頼度を返す
- 【自動】 生成AIが、紙面の媒体名・発行日・面の番号と、広告らしい領域の位置・中の文字を取り出す
- 【自動】 処理が発注の管理の仕組みの掲載と照らし、掲載日・面・サイズ・原稿の版の項目ごとに
match/mismatch/not_found/unreadableを付ける - 【自動】 処理が掲載日から決まった日数を過ぎても掲載紙が届いていない掲載を、毎朝の一覧に出す
- 【人】 営業アシスタントが、
mismatch/not_found/unreadableのあるものだけ紙面を開いて確かめる - 【人】 誤りが確かなものは営業が媒体社に問い合わせ、広告主への報告をどうするかを決める
- 【人/自動】 すべての項目が
matchのものは、該当面の画像を添えた報告の下書きを作り、営業が確かめて送る
7番目が、この設計の分かれ目です。人が開くのは全件ではありません。 すべて合っているものは一覧で流し見て、合わないものと見つからなかったものだけに時間を使います。
6番目は、これまで無かった流れです。 届いた掲載紙を確かめる仕組みと、届いていない掲載紙を数える仕組みは、同じ発注の一覧から作れます。 照合の結果が書き込まれていない掲載が、そのまま未着の候補になります。
02今回想定するシステム構成
掲載紙(新聞・雑誌をスキャン、媒体社からのPDF) │ 受領フォルダへ保存 ▼【トリガー】ファイルの保存 連携の処理(Power Automate) ├──▶ 形式・大きさの確認 ▼ Azure AI Document Intelligence(レイアウトモデル+高解像度の読み取り) │ 文字・段落の役割・図の位置・信頼度 ▼ Azure OpenAI(Microsoft Foundry) ── 構造化出力 │ 媒体名・発行日・面の番号、広告の領域と中の文字 ▼ Azure Functions ── 発注との照合(日付・面・サイズ・版)/未着の検出 ▼ 確認の一覧 ──【営業アシスタントが合わないものだけ確認】 ▼ 広告主への掲載の報告の下書き
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| OCR | Azure AI Document Intelligence(レイアウトモデル、高解像度の読み取り) | Google Document AI(Enterprise Document OCR) |
| 生成AI | Azure OpenAI(Microsoft Foundry)(構造化出力で紙面と広告の項目を取り出す) | Claude API、Gemini API |
| 連携 | Power Automate(フォルダの監視と発注の管理の仕組みとのやり取り) | Make、n8n |
| 差異計算 | Azure Functions(発注との照合と未着の検出) | Python |
| 保管 | SharePoint の文書ライブラリ(掲載紙の画像と照合の記録) | 社内のファイルサーバー |
発注の管理の仕組みと入稿原稿のPDFは、新しく足すものではありません。 足すのは読み取りと照合の処理です。最初の準備は、原稿ごとに「その版にしか無い文字列」を発注の管理の仕組みに持たせることです。 価格、キャンペーンの期間、問い合わせの電話番号などで、版を見分ける手がかりにします。
読み取りには、Azure AI Document Intelligence のレイアウトモデルを使います。 文字に加えて、表・選択マーク・文書の構造を取り出すモデルで、段落ごとに見出しやページの上端の文字(pageHeader)、ページ番号(pageNumber)といった役割を付けます。新聞の紙面の上の日付や面の番号、雑誌のページ番号は、この役割から拾えます。 日本語の印刷の文字に対応しています。
図(figures)の位置も使います。 レイアウトモデルは図や画像を figures として検出し、ページの番号と輪郭の座標を返します。写真や図版を含む広告は、図として検出されることが多く、 その座標から広告の大きさを見積もれます。検出されなかった広告は、広告主の名前の位置から領域を探します。
新聞の紙面は大きいので、高解像度の読み取りの追加機能(features=ocrHighResolution)を付けます。 大きな文書の小さな文字を読むための機能で、A1・A2・A3 の文書で読み取りの質が上がるとされています。追加料金のかかる機能です。
03どうやって実装するのか
処理の起点を決める
受領フォルダに、掲載紙のファイルが保存されたことを起点にします。 届いた掲載紙は、その日のうちにスキャンしてフォルダに入れる決まりにします。束で届いた掲載紙をまとめてスキャンする必要はありません。 1部ずつ入れれば、1部ずつ照合されます。
新聞は、全部の面をスキャンします。 発注の面だけをスキャンすると、違う面に載っていたときに not_found になり、本当に載っていないのか、違う面にあったのかが分かりません。全面を読むから、「違う面に載っていた」と言えます。 スキャナーに入らない大きさの紙面は、折った半分ずつを読み込み、ファイル名に面と上下を付けます。
媒体社からPDFで届く掲載面は、メールの添付を受領フォルダへ移すところまでを連携の処理で行います。 差出人のアドレスを媒体の一覧と照らし、知らない差出人からの添付は移さずに担当へ知らせます。紙とPDFが同じ掲載について両方届いた場合は、先に届いたほうで照合し、後から届いたほうは控えとして残します。
未着の確認は、毎朝の決まった時刻に動かします。 掲載日から媒体ごとに決めた日数(新聞は数日、月刊誌は発売から2週間など)を過ぎても照合の結果が無い掲載を一覧にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 掲載紙 | 紙面の画像またはPDF。全面 | 受領フォルダ |
| 発注の内容 | 媒体名、掲載日、面(第何面・何面・表4など)、サイズ、色、原稿番号、広告主名 | 発注の管理の仕組み |
| 版の手がかり | 原稿番号ごとの、その版にしか無い文字列(価格・期間・電話番号) | 発注の管理の仕組み(入稿のときに登録) |
| 媒体の情報 | 紙面の大きさ、1段の高さ、段の数、面の呼び方、掲載紙が届くまでの日数 | 本部が作る媒体の一覧 |
質を決めるのは、3行目です。 版の手がかりが無ければ、広告の中の文字を読んでも、どの版が載ったかを決められません。 入稿の担当が原稿を入稿するときに、前の版との違いになる文字列を2〜3個登録する決まりにします。
2行目の面は、発注のときの書き方をそろえます。 「15面」「第15面」「社会面」「テレビ欄の下」のように、同じ面でも担当者によって書き方が違うと、紙面の面の番号と照らせません。媒体の一覧に面の呼び方の対応を持たせ、発注の管理の仕組みの面の欄は一覧から選ぶ形にします。
4行目の1段の高さは、媒体ごとに持たせます。 新聞の段の数と高さは媒体によって違うことがあり、同じ「5段」でも紙面の上での高さが違います。 サイズの照合は、この値で割って段の数を見積もります。
データの取得方法を決める
読み取りは、連携の処理からレイアウトモデル(prebuilt-layout)を呼びます。features=ocrHighResolution と outputContentFormat=markdown を付けます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| ページの大きさ | pages(幅・高さ・単位・向きの角度) | 広告の大きさの割合の計算 |
| 段落と役割 | paragraphs(pageHeader・pageNumber など) | 紙面の日付・面の番号・媒体名 |
| 図の位置 | figures(boundingRegions) | 広告の領域とその大きさ |
| 文字と信頼度 | pages の words(confidence と座標) | 広告の中の文字と、その読み取りの確かさ |
発注の管理の仕組みからは、媒体名と掲載日の前後数日で、照合の候補の掲載を引きます。 掲載紙の発行日を読み違えていても、候補の範囲に入るようにするためです。
AIへ渡す前に整形する
- 形式の確認 … PDF、画像(JPEG/JPG、PNG、BMP、TIFF、HEIF)であることを確かめます
- ページ数とサイズの確認 … PDF と TIFF は2,000ページまで、ファイルは有料(S0)で500MBまでです。雑誌をまるごとスキャンしても収まります
- 画像の寸法の確認 … 50×50ピクセルから10,000×10,000ピクセルの間に収めます。新聞の全面を高い解像度でスキャンすると、この上限に近づきます。 上限を超える場合は、解像度を下げるか、半分ずつに分けます
- 文字の大きさの確認 … 1024×768の画像で12ピクセルが読み取れる最小の高さで、150dpiで約8ポイントの文字にあたります。広告の中の注記の小さな文字は、この下限を下回ることがあります
- 向きの確認 … 雑誌の見開きの広告は横向きにスキャンされることがあるので、向きの角度で確かめます
- 面とファイルの対応 … 新聞を半分ずつ読んだファイルは、ファイル名の面と上下で1面に束ねます
3番目と4番目は、両方を同時に満たす必要があります。 新聞の全面を寸法の上限に収めると、広告の注記の小さな文字が読み取りの下限を下回ります。版の手がかりには、注記ではなく価格や電話番号のような大きな文字を選んで登録するのは、このためです。
AIに処理させる
させるのは、紙面1面ごとに、紙面の情報と広告らしい領域を取り出し、根拠にした文字列と座標を書き出すことだけです。
| 取り出すもの | 取り出し方 | 判断できないときの扱い |
|---|---|---|
| 媒体名・発行日 | pageHeader などの文字をそのまま | 読めなければ null と理由 |
| 面の番号・面の名前 | 「15面」「社会」「表4」などをそのまま | 読めなければ null |
| 広告の領域 | 図の座標か、広告主の名前を含む文字のまとまりの座標 | 広告と記事の区別がつかなければ ambiguous |
| 広告の中の文字 | 領域の中の文字を、座標の順に | 信頼度が低い文字は low_confidence |
| 原稿番号 | 広告の中に印刷されていればそのまま | 印刷されていなければ null |
広告主の名前は、発注の候補から渡します。 紙面には多くの広告があり、どれが自社の発注した広告かを紙面だけから決めることはできません。候補の広告主名と版の手がかりを渡し、それを含む領域を探させます。
| させないこと | 理由 |
|---|---|
| 発注と合っているかの結論 | 照合は処理の側で、項目ごとに規則で行う |
| サイズの段の数を答える | 座標と媒体の1段の高さから処理が計算する |
| 読めない数字を前後から補う | 版の照合が成り立たなくなる |
| 見つからない広告を「掲載なし」とする | 見つからないことと、載っていないことは別 |
| 媒体社への問い合わせ文の作成 | 誤りを確かめてから人が書く |
広告と記事の区別は、紙面によっては難しくなります。 記事のように組まれた広告や、記事の下に並ぶ小さな広告は、図として検出されず、周りの記事の文字とつながって返ることがあります。この場合に広告の範囲を無理に決めさせると、記事の文字を広告の中の文字として照合してしまうので、 ambiguous として人に回します。
4行目が、この構成でいちばん大事な区別です。 紙面のどこにも見つからなかったとき、AIは「掲載されていない」と書きがちです。本当は、スキャンしていない面にあるのかもしれません。 AIには「見つからなかった」までを書かせ、載っていないと判断するのは人です。
指示内容を固定する
あなたは広告会社で、新聞・雑誌の掲載紙を確かめる担当です。
OCRが返した紙面1面分の読み取り結果だけを見て、項目を取り出してください。
【探す広告の候補】
{candidates} … 広告主名、原稿番号、版の手がかりの文字列
【取り出すもの】
1. 媒体名、発行日、面の番号または面の名前(紙面の上端・下端の文字から)
2. 候補の広告主名を含む広告の領域の座標と、その中の文字
3. 広告の中に印刷された原稿番号(あれば)
4. 版の手がかりの文字列のうち、広告の中に見つかったもの
【厳守事項】
- 書かれていない値は null にしてください。推測で埋めないでください。
- 候補の広告が紙面に見つからない場合は found を false にしてください。
「掲載されていない」とは書かないでください。
- 広告か記事か区別がつかない領域は ambiguous にしてください。
- 価格・日付・電話番号は、書かれた文字をそのまま写してください。
読めない桁を補ったり、候補の文字列に合わせて直したりしないでください。
- 信頼度が 0.8 未満の文字を含む値は low_confidence に項目名を入れてください。
- 広告の大きさ(段の数やページの割合)は答えないでください。座標だけを返してください。
- 発注どおりに載っているかの結論は書かないでください。
- evidence には、値を取った元の文字列をそのまま写してください。
【読み取り結果】{layout_markdown}
【図と文字の座標】{figures_and_words}
「候補の文字列に合わせて直さない」を明記しないと、版の照合が意味を失います。 版の手がかりとして「3,980円」を渡すと、紙面の「3,480円」の「4」がかすれているとき、AIは候補に合わせて「3,980円」と読みたがります。 古い版が載っているのを、正しい版として通してしまう失敗です。手がかりを渡すのは探す場所を絞るためで、答えを渡すためではありません。
出力形式を固定する
構造化出力で、次の形のJSONを受け取ります。 スキーマのすべての項目を必須にし、additionalProperties: false を付けます。値の無い項目は null を許す型にします。
{
"page": {
"media_name": "", "issue_date": "", "page_label": "",
"evidence": "", "low_confidence": []
},
"ads": [
{
"advertiser": "", "found": true, "ambiguous": false,
"polygon": [], "text": "", "ad_code": null,
"version_keys_found": [], "low_confidence": [], "evidence": ""
}
]
}
処理はこれを発注と照らし、項目ごとの結果を出します。
| 項目 | 発注 | 掲載紙 | 結果 |
|---|---|---|---|
| 掲載日 | 2026-10-05 | 2026年10月5日 | match |
| 面 | 第15面 | 第17面 | mismatch |
| サイズ | 5段 | 約5段(高さの割合から) | match |
| 原稿の版 | 原稿番号 R-0412(手がかり「10月12日まで」) | 「10月5日まで」 | mismatch |
1つ目の理由は、項目ごとに結果を分けられることです。 面の違いは媒体社の都合で起きることがあり、広告主によっては問題にならないこともあります。版の違いは、ほぼ必ず問題になります。 項目ごとに分かれていれば、重さの違いを人がすぐに見分けられます。
2つ目は、座標をサイズの計算に使えることです。 polygon の高さをページの高さと媒体の1段の高さで割れば、段の数の見積もりになります。AIに段の数を答えさせると、見た目の印象で答えが揺れます。 計算は処理に置き、誤差の幅を超えたら mismatch ではなく unreadable として人に回します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受領フォルダ | Power Automate のトリガー | ファイルの保存を検知する |
| 発注の管理の仕組み | コネクタまたは API(読み取り) | 照合の候補の掲載と版の手がかりを引く |
| Azure AI Document Intelligence | API呼び出し | 紙面の文字・役割・図・信頼度を返す |
| Azure OpenAI | API呼び出し(構造化出力) | 紙面の情報と広告の領域を返す |
| Azure Functions | HTTPで呼ぶ | 照合、サイズの計算、未着の検出 |
| 発注の管理の仕組み | 書き込み | 照合の結果と、掲載紙を受け取った日 |
| 広告主への報告 | 下書きの作成 | 送るのは営業 |
発注の管理の仕組みへ書き込むのは、照合の結果と受け取った日だけです。 発注の内容そのものは書き換えません。掲載紙が発注と違っていたとき、直すべきは掲載の側か発注の記録の側かは、人が確かめてから決めます。
人が確認する
営業アシスタントが開くのは、match 以外の項目があるものだけです。 すべての項目が match なら、一覧で媒体と広告主を流し見て、報告の下書きに進みます。
- 版の
mismatchを先に見る … 広告の中の文字と、発注した版の原稿のPDFを見比べます。一番重い誤りなので、最初に確かめます not_foundを見る … スキャンした面が全部そろっているかを先に確かめ、そろっていれば紙面をめくって探します- 面・サイズの
mismatchを見る … 面の違いが媒体社から事前に連絡されていたかを、やり取りの記録で確かめます unreadableを見る … 紙面の画像で該当の箇所を見ます- 誤りが確かなものを営業に渡す … 媒体社への問い合わせと、広告主への説明は営業が決めます
2番目で、スキャンの不足を先に疑ってください。 not_found の多くは、面のスキャン漏れか、半分ずつ読んだ紙面の片方が抜けていることで起きます。媒体社に問い合わせる前に、自社の側を確かめます。
3番目の面の違いは、媒体社からの連絡で事前に分かっていることがあります。 紙面の都合で面が移る場合、媒体社から担当の営業に連絡が入っていることが多いので、やり取りの記録に連絡があれば、mismatch を「連絡済み」として閉じます。 連絡が無い面の違いだけを、営業に渡します。
目標は、400件をならして1件3分です。 match 以外の項目が出るのは2割前後という想定で、それより多い月は、版の手がかりの登録か、スキャンのしかたを見直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 発行日が読めない | 受け取った日と媒体名から候補を絞り、unreadable で人へ |
| 版(地域版・早版など)が違う紙面が届いた | 面の番号が版で変わることがある。面の違いを版の違いと区別して人へ |
| 広告が見開きで2面にまたがる | 2面の座標をつなげて1つの広告として扱う |
| 原稿番号が広告に印刷されていない | 版の手がかりの文字列だけで照合する |
| 版の手がかりが登録されていない | 版の照合を飛ばし、unreadable として人へ |
| 画像の寸法が上限を超える | 解像度を下げるか、半分ずつに分けて読み直す |
| 掲載日を過ぎても掲載紙が届かない | 毎朝の一覧に出し、営業アシスタントが媒体社に問い合わせる |
| PDFの掲載面だけが届き、全面が無い | 面の照合はPDFの面の表示で行い、他の面にあった可能性は確かめられないと記録する |
| OCRが応答しない | フォルダに残し、30分後にやり直す。3回続けば担当へ知らせる |
2行目は、新聞で必ず起きます。 同じ日付の新聞でも、地域や刷りの時刻によって版が分かれ、面の番号がずれることがあります。 発注した版と届いた版が違うだけなら、掲載の誤りではありません。
記録を残す
- 掲載紙の画像と、受け取った日・媒体名・号
- OCRが返したJSONの全文と、AIが返した紙面ごとのJSON
- 照合の結果(項目ごと)と、そのとき参照した発注の内容と版の手がかり
- 人が結果を覆した記録と、その理由
- 媒体社への問い合わせの日と回答
- 広告主へ報告した日と、添えた紙面の画像
3つ目で、参照した版の手がかりを残すのは、原稿は掲載の直前まで差し替わるからです。 入稿の後に差し替えがあったのに手がかりが古いままだと、正しい版の掲載を mismatch と判定します。 どの手がかりで照らしたかが残っていれば、誤った判定の理由がすぐに分かります。
5つ目の媒体社への問い合わせの記録は、媒体ごとに集計します。 同じ媒体で面の違いや掲載紙の遅れが続くなら、1件ずつ問い合わせるより、媒体社の担当と運用を相談したほうが早く片づきます。 問い合わせの件数は、その相談の材料になります。
04実装レベルの3段階
最小構成では件数がさばけません。 1面ずつ貼り付けるので、確かめるための段階です。 半自動化で、①の探す時間がほぼ無くなります。 ただし、発注との照らし合わせは人が行うので、②と③が残ります。本格構成で照合と未着の検出が処理に移り、本記事の想定の3分になります。 差が大きいのは③で、版の見比べは原稿のPDFを開いて数字を1つずつ見る作業だったものが、手がかりの文字列の有無を見るだけになるからです。 段階を飛ばさないでください。 半自動化の1か月で、どの媒体で日付や面の番号を読み違えるかと、版の手がかりの登録がどれだけ抜けているかが分かります。そこを直してから照合に進むほうが、unreadable が減ります。
05工数削減シミュレーション
導入後 400件 × 3分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 新聞・雑誌の広告を毎月数百件扱い、掲載の後に媒体社から届く掲載紙を営業や営業アシスタントが1部ずつめくって確かめている広告会社。地方紙・業界紙・フリーペーパーなど媒体の数が多く、掲載紙の届き方がまちまちな場合。広告主へ掲載紙を添えて掲載を報告しており、報告の前に掲載の誤りを見つけたい場合。発注の内容(媒体・掲載日・面・サイズ・原稿番号)をデータで持っている場合。
- 印刷の媒体の出稿が月に数件の会社。媒体社から掲載の証明をデータで受け取れており、掲載紙をめくる作業が無い場合。発注の内容が紙の申込書にしか無い場合。なお、掲載の誤りについて媒体社とどう交渉するか、広告主にどう説明するかの判断はこの構成では行いません。
07最小構成で試す方法
- 先月の掲載から20件を選ぶ(うち数件は、毎週の出稿で版が細かく変わる広告にする)
- その20件の掲載面を撮影かスキャンし、手元のAIサービスの画面に1面ずつ貼り付ける
- 「この紙面の発行日と面の番号を読み、○○(広告主名)の広告を探して、中の価格と日付を書かれたとおりに写してください。見つからなければ『見つからない』と書き、読めない数字は補わないでください」と指示する
- 出てきた結果を、発注の内容と入稿した原稿と照らす
版の違う広告を必ず混ぜてください。 毎週の出稿で価格や日付だけが違う広告は、この構成がいちばん効く場面であり、いちばん失敗しやすい場面でもあります。読み取りが候補に引きずられるかどうかは、版の違う広告でしか確かめられません。
面を絞って試してください。 最小構成では、新聞の全面ではなく、発注の面1面だけで構いません。確かめたいのは、日付と面の番号と、広告の中の数字が読めるかです。
| 出てきた内容 | 判断 |
|---|---|
| 日付・面・広告の数字が読めた | フォルダの監視と照合の処理に進む |
| 広告の数字を候補に合わせて読んだ | 指示の書き方で直る。構成は有効 |
| 注記の小さな文字が読めない | 版の手がかりを大きな文字から選ぶ。 AIの問題ではない |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 見つからない広告を「掲載なし」と判定する | found: false までにし、スキャンの不足を先に疑う |
| 広告の数字を版の手がかりに合わせて読む | 手がかりに合わせて直すことを禁じる |
| 注記の小さな文字で版を見分けようとする | 価格や電話番号のような大きな文字を手がかりにする |
| 新聞の全面が寸法の上限を超える | 解像度を下げるか、半分ずつに分ける |
| 版(地域版など)の違いを掲載の誤りとする | 面の番号のずれは版の違いを先に確かめる |
| 段の数をAIに答えさせて揺れる | 座標から処理が計算し、誤差の幅を超えたら人へ |
| 発注の面だけをスキャンする | 全面を読む決まりにする |
| 版の手がかりが古い | 差し替えのたびに入稿の担当が登録し直す |
| 未着の一覧が誰にも見られない | 毎朝、媒体の担当ごとに送る |
| 照合の結果をそのまま広告主へ送る | 報告は下書きまで。送るのは営業 |
上の2行が、この構成の失敗のほとんどです。 どちらも「AIが、無いものを有るように、違うものを同じように読む」失敗です。見つからないことと、載っていないことを分ける。読めない数字を補わない。 この2つを設計で守れば、残りは運用で直せます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 広告主の名前、出稿の媒体・日付・サイズ、入稿した原稿の内容です。掲載前の原稿の情報(価格やキャンペーンの期間)は、広告主にとって公開前の情報です。
- 版の手がかりは掲載前の情報として扱う … 次の週の価格やキャンペーンは、掲載の前に外へ出てはいけない情報です。照合の処理の外で、手がかりの一覧を共有しないでください
- Azure の中で処理を閉じる … OCR・生成AI・照合の処理を同じ Azure の契約の中に置き、生成AIのデプロイは処理する地域を選べる種類にします
- 媒体社への問い合わせを自動で送らない … 誤りを確かめてから営業が送ります。誤った問い合わせは、媒体社との関係に直接ひびきます
- 広告主への報告を自動で送らない … 報告は下書きまでにします。掲載の誤りがあったときの説明は、営業が広告主との関係を見て決めます
- 掲載紙の紙面の他の部分を使わない … 紙面には他社の広告や記事も載っています。照合に使うのは自社の広告の領域と、紙面の日付・面の番号だけです
- 掲載紙の画像の保存期間を決める … 広告主への報告と、媒体社への請求の確認に要る期間とし、それを過ぎたら消します
- 求人や不動産の広告の個人の情報に注意する … 広告の中に担当者の氏名や携帯電話の番号が載っていることがあります。照合に使うのは版の手がかりの文字列だけにし、広告の中の文字の全文を長く残さないようにします
誤りが起きた場合のリスクは、誤った掲載を見逃して広告主へ報告することと、正しい掲載について媒体社に問い合わせることの2つです。 前者は読めない数字を補うと起き、後者は見つからないことを掲載なしとすると起きます。どちらも設計で防げるので、そこだけは崩さないでください。
10まず何から始めるか
1週目:版の手がかりの登録を始める
入稿の担当が原稿を入稿するときに、前の版との違いになる文字列を2〜3個、発注の管理の仕組みに登録する決まりを作ります。今月以降の入稿から始めます。
2週目:20件で試す
先月の掲載から20件を選び、掲載面を手元のAIサービスに貼って、日付・面・広告の中の数字を読ませます。候補に合わせて数字を読み替えていないかを、最優先で見ます。
3週目:媒体の一覧と、新聞の読み込み方を決める
出稿の多い媒体から、紙面の大きさ・1段の高さ・面の呼び方・掲載紙が届くまでの日数の一覧を作ります。新聞の全面をどのスキャナーで、どの解像度で読むかを決めます。
4週目:受領フォルダから読み取りまでをつなぐ
Power Automate で受領フォルダを見張り、レイアウトモデルを呼び、紙面ごとの日付・面・広告の領域を一覧に書き出すところまで作ります。この時点では照合をせず、読み取りの精度だけを見ます。
2か月目: 発注との照合とサイズの計算を Azure Functions に書き、項目ごとの結果を出します。未着の一覧を毎朝送り始めます。3か月目以降: 1件12分が何分になったかを実測し、unreadable の多い媒体を把握します。広告主へ報告する前に、版の違いをすべて自社で見つけられるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
レイアウトモデルが文字・表・選択マーク・構造を取り出すこと。段落に title・sectionHeading・pageHeader・pageFooter・pageNumber などの役割が付くこと。figures がページの番号と輪郭の座標を返すこと。ページの幅・高さ・単位・向きの角度を返すこと。入力形式、PDF・TIFFが2,000ページまで、S0で500MB、画像が50×50〜10,000×10,000ピクセル、文字の最小高さが1024×768で12ピクセルであること。文字ごとの信頼度が返ること | Microsoft Learn: Document layout analysis | 2026-10-07 |
高解像度の読み取り(ocrHighResolution)が大きな文書の小さな文字を読むための追加機能で、A1・A2・A3 の文書で読み取りの質が上がること。追加料金のかかる機能であること | Microsoft Learn: Add-on capabilities | 2026-10-07 |
| レイアウトモデルが日本語の印刷の文字に対応していること | Microsoft Learn: Language support for Read and Layout | 2026-10-07 |
構造化出力でスキーマのすべての項目を必須にし、additionalProperties: false を付けること | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-07 |
掲載の誤りをどう扱うかは、媒体社との取り決めと広告主との契約によります。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0801)についてのご相談はこちらから。
