印刷会社が入稿データのメールを n8n で受け、PDFの解像度・塗り足し・フォントの埋め込みを注文の仕様と照らして判定し、不備の連絡をお客に返す
入稿用のアドレスに届いたPDFを n8n で受け、ページの大きさ・塗り足し・画像の解像度・フォントの埋め込み・ページ数を機械で測ります。AIがその値を注文の仕様と照らして判定し、不備があればお客に返す文面の下書きを作ります。
- 生成AI
- ChatGPT/Claude
- 連携・自動化
- Make/n8n/Zapier
- 対象業界
- 広告/製造
- 対象部門
- 営業/生産
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 入稿用のアドレスに届いたメールを開き、本文から注文番号を探す
- 受注の管理表で、その注文の品目・仕上がりサイズ・ページ数を見る
- 添付のPDFを閲覧ソフトで開き、ページの大きさとページ数を見る
- 塗り足しがあるか、画像が粗くないか、フォントが埋め込まれているかを確かめる
- 不備があれば、お客に連絡のメールを書く
- 問題が無ければ、製版のフォルダにファイルを置き、管理表の状態を「入稿済み」にする
- 自動入稿用のアドレスにメールが届くと、n8n の Email Trigger(IMAP)が添付ごと受け取る
- 自動本文と件名から注文番号を拾い、受注の管理表から注文の仕様を引く
- 自動添付がPDFかを確かめ、PDFなら社内の検査サーバーに送る
- 自動検査サーバーが、ページの大きさとボックス、ページ数、フォントの埋め込み、画像の解像度と色の種類を測って返す
- 自動AIが、測った値を注文の仕様と入稿ガイドに照らし、項目ごとに判定する。不備があればお客向けの説明を下書きする
- 自動判定と下書きを、DTPの担当に Slack で送る
- 人担当が判定を確かめ、「このまま送る」「直して送る」「製版へ回す」を選ぶ
- 自動選んだとおりに、お客へ連絡のメールを送るか、製版のフォルダへ置いて管理表の状態を変える
各工程の詳しい説明を読む
- 入稿用のアドレスに届いたメールを開き、本文から注文番号を探す
- 受注の管理表で、その注文の品目・仕上がりサイズ・ページ数を見る
- 添付のPDFを閲覧ソフトで開き、ページの大きさとページ数を見る
- 塗り足しがあるか、画像が粗くないか、フォントが埋め込まれているかを確かめる
- 不備があれば、お客に連絡のメールを書く
- 問題が無ければ、製版のフォルダにファイルを置き、管理表の状態を「入稿済み」にする
(a)1件ずつ開いて目で見ている。 閲覧ソフトの機能で解像度やフォントを調べるには、いくつも画面をたどります。忙しい日は、拡大して見た目が粗くないかで済ませます。
(b)担当によって見る項目が違う。 見落とした不備は、製版や刷り出しの段で見つかります。 そこから連絡すると、納期の前日にお客へ作り直しを頼むことになります。
(c)不備の連絡が伝わらない。 「塗り足しが3mm足りません」と書いても、お客には何をすればよいか分かりません。聞き返しの電話が来て、同じ説明を何度もします。 説明の上手な担当に、連絡の仕事が集まります。
(d)注文番号の無いメールがある。 本文に「先日電話した○○です」としか書かれていないと、管理表で注文を探すところから始まります。
- 【自動】 入稿用のアドレスにメールが届くと、n8n の Email Trigger(IMAP)が添付ごと受け取る
- 【自動】 本文と件名から注文番号を拾い、受注の管理表から注文の仕様を引く
- 【自動】 添付がPDFかを確かめ、PDFなら社内の検査サーバーに送る
- 【自動】 検査サーバーが、ページの大きさとボックス、ページ数、フォントの埋め込み、画像の解像度と色の種類を測って返す
- 【自動】 AIが、測った値を注文の仕様と入稿ガイドに照らし、項目ごとに判定する。不備があればお客向けの説明を下書きする
- 【自動】 判定と下書きを、DTPの担当に Slack で送る
- 【人】 担当が判定を確かめ、「このまま送る」「直して送る」「製版へ回す」を選ぶ
- 【自動】 選んだとおりに、お客へ連絡のメールを送るか、製版のフォルダへ置いて管理表の状態を変える
7番目が、この設計の分かれ目です。 担当は1件ずつPDFを開く代わりに、判定の一覧と下書きを読みます。 不備の連絡がお客に届くのは、担当が承認したものだけです。
4番目と5番目を分けているのも、意図してのことです。 数字を出すのは道具で、AIはその数字を読むだけです。数字が先に固まっているので、判定がぶれても、どの数字から何を判定したかを後から追えます。
02今回想定するシステム構成
【トリガー】入稿用のアドレスにメールが届く(Email Trigger(IMAP)、添付を取得) ▼ n8n ├─ Code ── 注文番号を拾う、添付の形式を見る ├─ Data Table ── 受注の管理表の写し(注文番号、品目、仕上がりサイズ、ページ数) ├─ HTTP Request ──▶ 社内の検査サーバー │ pdfinfo(ボックス・ページ数) │ pdffonts(埋め込み) │ pdfimages -list(解像度・色) ▼ Basic LLM Chain + Anthropic Chat Model + Structured Output Parser │ 注文の仕様・入稿ガイドとの照合、お客向けの説明の下書き ▼ Slack(Send and Wait for Response:承認) ├─ 送る ──▶ Send Email(SMTP)── お客へ └─ 製版へ ──▶ 製版のフォルダ、管理表の状態の更新
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Zapier |
| 生成AI | Claude(n8n の Anthropic Chat Model ノード) | OpenAI API |
| 検査 | poppler-utils(pdfinfo・pdffonts・pdfimages)を載せた社内の検査サーバー | n8n の Execute Command ノード(2.0 から既定で無効) |
| 保管 | n8n の Data Table(受注の写し、測った値、判定、担当の選択) | PostgreSQL |
| 承認 | Slack(n8n の Slack ノード) | Microsoft Teams |
| メール | 入稿用のアドレス(IMAP で受信、SMTP で送信) | Gmail |
新しく足すのは、n8n と小さな検査サーバーです。 受注の管理表、入稿用のアドレス、Slack は今あるものを使います。
PDFを測るのは、poppler-utils の3つの命令です。 pdfinfo の -box は各ページの MediaBox・CropBox・BleedBox・TrimBox・ArtBox を出し、pdffonts はフォントごとに埋め込まれているか(emb)を出し、pdfimages -list は画像ごとにページに置かれたときの解像度(x-ppi・y-ppi)と色の種類を出します。3つとも数字と yes/no を返すだけで、判断はしません。 判断を後段に置けるので、この構成に合います。
検査サーバーを n8n の外に置くのは、Execute Command ノードを使わないためです。 公式ページでは、このノードは n8n 2.0 から既定で無効で、n8n Cloud では使えず、Docker で動かす場合は n8n のコンテナの中で命令が動くとされています。命令を動かす場所を n8n から切り離し、HTTP で呼ぶ形にします。 自前の n8n で Execute Command を有効にして使うこともできますが、その場合はコンテナに poppler-utils を入れる管理が要ります。
03どうやって実装するのか
処理の起点を決める
Email Trigger(IMAP)で、入稿用のアドレスにメールが届くたびに動かします。 公式ページでは、受け取るメールボックスを指定でき、添付をダウンロードする設定と、添付をバイナリとして持つ形式(Resolved)があります。添付の取得は処理を重くするので必要なときだけ有効に、とされていますが、この構成は添付が主役なので有効にします。
受け取ったメールは「既読にする」設定にします。 公式ページでは、受け取ったメールを既読にするかを選べます。既読にしておけば、同じメールを二度処理しません。 あわせて、処理したメールの Message-ID を Data Table に残し、二重に動いたときに弾きます。
1日の締めでまとめて動かすことはしません。 入稿は納期の直前に集中し、連絡が数時間遅れるだけで作り直す時間が無くなります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| メール | 差出人、件名、本文、受信日時、添付ファイル | Email Trigger(IMAP) |
| 注文の仕様 | 注文番号、品目、仕上がりサイズ、ページ数、片面/両面、色数、製本の方法、納期 | Data Table(受注の管理表の写し) |
| 測った値 | ページごとのボックスの大きさ、ページ数、フォントと埋め込みの有無、画像ごとの解像度と色の種類 | 検査サーバー |
| 入稿ガイド | 品目ごとの塗り足しの幅、必要な解像度、受け付ける形式、フォントの扱い | Data Table(ガイドを表にしたもの) |
| 過去の連絡 | 同じお客への過去の不備の連絡と、その後の再入稿 | Data Table |
質を決めるのは、いちばん下から2つ目の入稿ガイドの表です。 Webに文章で載っているガイドを、品目ごとの数値の表に直します。名刺・チラシ・冊子・ポスターそれぞれの塗り足しの幅と、必要な解像度。この表が無いと、AIは一般論の数字で判定します。
受注の管理表は、毎晩 Data Table に写します。 管理表の列の変更でワークフローが止まらないよう、写すときに必要な列だけをそろえます。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 添付のPDF | Email Trigger のバイナリ | 検査サーバーへ送る |
| 注文番号 | 件名と本文を Code ノードで探す | 注文の仕様を引く |
| 注文の仕様 | Data Table の Get | 照らす相手 |
| 測った値 | HTTP Request で検査サーバーへ POST | 判定の材料 |
| 入稿ガイド | Data Table の Get | 品目ごとの条件 |
注文番号は、まず決まった形で探します。 「W-」で始まる7桁、のように自社の番号の形を正規表現で探し、見つからなければAIに探させず、人へ回します。 本文の「先日電話した○○です」から注文を推測させると、別のお客の注文に結び付きます。
検査サーバーには、PDFをそのまま送ります。 公式ページでは、HTTP Request の本文に Form-Data を選び、受け取ったバイナリのファイルを入れられます。検査サーバーは3つの命令を動かした結果を JSON で返します。
| 命令 | 返すもの | 判定に使う項目 |
|---|---|---|
pdfinfo -box -f 1 -l <最終ページ> | ページ数、ページごとの MediaBox・TrimBox・BleedBox | 仕上がりの大きさ、塗り足しの幅、ページ数 |
pdffonts | フォント名、種類、emb、sub | 埋め込まれていないフォント |
pdfimages -list | ページ、type、width、height、color、x-ppi、y-ppi | 解像度の足りない画像、RGB の画像 |
pdfinfo には最初と最後のページを指定します。 公式の説明では、-f と -l で複数のページを指定するとページごとの大きさとボックスを出し、指定しなければ1ページ目だけを調べるとされています。冊子の途中のページだけ大きさが違うPDFを見逃さないためです。
pdfimages -list の解像度は、ページに置かれたときの値です。 公式の説明では、width と height は埋め込まれた画像の大きさで、描かれる大きさではないとされ、x-ppi と y-ppi はページに描かれたときの解像度です。判定には x-ppi と y-ppi を使います。 透過のための mask・smask の行は、type の列で除きます。
AIへ渡す前に整形する
- 添付の形式を見る … PDF以外(ai、psd、jpg、zip など)は検査に回さず、「形式」の項目を判定の材料にします
- 大きすぎる添付 … メールに付けられない大きさのデータは、ファイル転送のサービスのリンクで届きます。リンク先からは自動で取りに行かず、人へ回します
- パスワード付きのPDF … 検査サーバーが開けなければ、その旨を判定の材料にします
- 複数のPDF … 表紙と本文のように分かれて届くものは、ファイルごとに測り、注文の仕様とは合計のページ数で照らします
- ボックスを大きさに直す … 検査サーバーの側で、ボックスの値を幅と高さのミリに直し、仕上がりサイズとの差と、TrimBox と BleedBox の差を出します
- 規則で先に決まる項目 … フォントの emb が no のものがある、ページ数が注文と違う、は規則で先に印を付けます
2番目でリンクを取りに行かないのは、送り主の確かめが要るからです。 メールに書かれたリンクを自動で開く仕組みは、偽のメールからのリンクも開きます。 入稿のメールの差出人が、注文のお客と同じかも分かりません。
5番目で、TrimBox が無いPDFも扱えるようにします。 自分で作ったPDFには、MediaBox しか無いものが少なくありません。MediaBox が仕上がりサイズと同じなら「塗り足しなし」、仕上がりサイズに塗り足しの幅を足した大きさなら「塗り足しあり」、どちらでもなければ「人が見る」とし、トンボ付きのPDFもこの3つ目に入れます。
AIに処理させる
させるのは、測った値と注文の仕様と入稿ガイドを突き合わせ、6つの項目それぞれに判定を付けることと、不備のある項目をお客向けの言葉で説明することです。
| 項目 | 判定の仕方 | 判断できないときの扱い |
|---|---|---|
| 形式 | 受け付ける形式か | 形式が分からなければ needs_human |
| 仕上がりの大きさ | ボックスの大きさが仕上がりサイズと合うか | ボックスが仕上がりサイズと塗り足しのどちらとも合わなければ needs_human |
| 塗り足し | 品目に塗り足しが要るか、その幅があるか | 品目のガイドに塗り足しの定めが無ければ needs_human |
| 画像の解像度 | 品目ごとの必要な解像度を下回る画像があるか | 解像度が出ない画像の種類なら needs_human |
| フォント | 埋め込まれていないフォントがあるか | 測れなければ needs_human |
| ページ数 | 注文のページ数と合うか、製本の方法の条件を満たすか | 注文にページ数が無ければ needs_human |
判定は ok(問題なし)・ng(不備)・warn(注意)・needs_human(人が見る)の4つです。 warn は、刷れるがお客に伝えておくべきもので、RGB の画像が入っているときの色の変わり方が典型です。どこまでを ng にし、どこからを warn にするかは、入稿ガイドの表に品目ごとに書いておきます。
| させないこと | 理由 |
|---|---|
| PDFの画像を見て解像度を推し量る | 測った値だけを使う |
| デザインの良し悪し、誤字の指摘 | この構成の範囲外。お客の意図を変えうる |
| ファイルを直す | 塗り足しを足す、画像を差し替えるのはお客か担当の仕事 |
| 注文の仕様の推測 | 管理表に無い仕様を、PDFの大きさから決めない |
| 刷ってよいかの結論 | 担当が決める |
4行目がいちばん起きやすい失敗です。 注文が A4 なのにPDFが B5 なら、それは不備です。AIに「PDFが B5 なので、B5 の注文と思われます」と判断させると、不備が消えます。
指示内容を固定する
Basic LLM Chain のシステムメッセージに、次のように書きます。
あなたは印刷会社のDTP担当として、入稿データの点検の結果を判定します。
入力の数値だけを使ってください。PDFの見た目は判断材料にしません。
【入力】
- 注文の仕様(品目、仕上がりサイズ、ページ数、片面/両面、色数、製本の方法)
- 入稿ガイドのうち、その品目の条件(塗り足しの幅、必要な解像度、受け付ける形式、ng と warn の区分)
- 測った値(ファイルごとのボックスの大きさ、ページ数、フォントと emb、画像ごとの x-ppi・y-ppi・color)
- 規則で付いた印(フォントの emb=no、ページ数の不一致)
【判定する6項目】
format / trim_size / bleed / image_resolution / fonts / page_count
【status の選び方】
- ok ........... 条件を満たす
- ng ........... 条件を満たさない。お客に直してもらう
- warn ......... 刷れるが、お客に伝えておく(入稿ガイドで warn とされたもの)
- needs_human .. 入力だけでは決められない
迷ったときに ok を選ばないでください。
【厳守事項】
- 注文の仕様と測った値が食い違うときは、注文の仕様を正として ng にしてください。
PDFの大きさに合わせて注文を読み替えないでください。
- 解像度は x-ppi と y-ppi の小さいほうで判定してください。
type が mask または smask の行は判定に使わないでください。
- 入稿ガイドに条件が無い項目は needs_human にしてください。一般的な数値で補わないでください。
- デザイン、文字の内容、誤字には触れないでください。
- 刷ってよいかの結論を書かないでください。
- customer_message は、ng と warn の項目だけを、専門用語を避けて説明してください。
「何が」「どのページで」「どう直せばよいか」を1項目ずつ書き、
直し方が分からない場合の連絡先として担当の窓口を書いてください。
入稿ガイドのページの URL を添えてください。
- 全項目が ok なら customer_message は空にしてください。
【入力】{order}{guide}{measured}{flags}
「注文を正として ng に」が要の一文です。 書かないと、AIは食い違いを「どちらかの誤り」として、数字のそろっているPDFの側に寄せて説明しようとします。 注文の受け付けの段で決まったことは、点検の段で変えません。
「一般的な数値で補わない」も効きます。 ガイドの表に冊子の表紙の条件が無いとき、AIは印刷で一般によく言われる数値を持ち出します。自社の条件ではない数字で ng を出すと、お客は直さなくてよいものを直します。
出力形式を固定する
Structured Output Parser で、次の形に決めます。 公式ページでは、JSON の例から生成するとすべての項目が必須として扱われ、JSON Schema で書くこともでき、$ref には対応しないとされています。
{
"order_no": "",
"files": ["front.pdf"],
"checks": [
{ "item": "image_resolution", "status": "ok | ng | warn | needs_human",
"pages": [2], "measured": "", "required": "", "note": "" }
],
"verdict": "ready | return_to_customer | needs_human",
"customer_message": ""
}
checks には6つの項目を並べます。measured は測った値(「x-ppi 142」など)、required は入稿ガイドの条件をそのまま写します。
1つ目の理由は、verdict を規則で決め直せることです。
checks の中身 | verdict |
|---|---|
すべて ok、または ok と warn だけ | ready(warn があれば連絡も添える) |
ng が1つ以上 | return_to_customer |
needs_human が1つ以上 | needs_human |
ワークフローは、AIが書いた verdict を使わず、checks からこの表で決め直します。 AIが ng を書きながら ready と結論しても、製版のフォルダには置かれません。
2つ目は、measured と required で担当の確認が速くなることです。 担当はPDFを開く前に、どの数字がどの条件に足りないかを一覧で読めます。
3つ目は、pages で「2ページ目の写真」と具体的に書けることです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 入稿用のアドレス | Email Trigger(IMAP) | メールと添付の受信 |
| 検査サーバー | HTTP Request | PDFを送り、測った値を受け取る |
| Anthropic のモデル | Anthropic Chat Model ノード | 判定と説明の下書き |
| Slack | Slack ノードの Send and Wait for Response | 判定と下書きを示し、担当が選ぶ |
| お客 | Send Email(SMTP) | 承認された連絡を送る |
| 製版のフォルダ・管理表 | 既存の受け渡しの方法 | ready のファイルを置き、状態を変える |
担当の確認には、Slack の Send and Wait for Response を承認の形で使います。 公式ページでは、Slack の中で承認・却下でき、承認できる人を限ることができ、誰が応じたかが出力に残るとされています。n8n が公開の HTTPS で届くこと、Slack のアプリで Interactivity の受け口を設定すること、資格情報に Signing Secret を入れることが要るとされています。
お客への連絡は、Send Email で送ります。 公式ページでは、SMTP の資格情報で送り、Reply To を指定できます。ただし、このノードは In-Reply-To と References のヘッダーを付けられず、メールがスレッドにならないとされています。件名に注文番号と「入稿データの確認」を入れ、お客の受信箱で元のメールと結び付けられるようにします。スレッドにしたい場合は、公式ページが示す Gmail ノードの返信の操作を使います。
人が確認する
DTPの担当が、Slack に届いた判定を確かめます。
needs_humanを先に見る … 注文番号が無い、ボックスが合わない、ガイドに条件が無い。PDFを開いて自分で判断しますreturn_to_customerの下書きを読む …measuredとrequiredを見て、不備が本当かを確かめ、説明がお客に伝わる言い方かを直しますreadyでwarnのあるものを見る … RGB の画像の色の変わり方を伝えるか決めますreadyを流し見る … 製版へ回します
2番目の言い方は、担当が最後に見ます。 不備が続くお客に電話を勧める一文を足す、といった判断は担当がします。
目標は、1,200件をならして1件1分です。 ready は流し見るだけで数秒、return_to_customer と needs_human は数分かかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 注文番号が見つからない | 推測させずに needs_human。担当が管理表で探す |
| PDF以外の形式で届く | 「形式」を ng とし、入稿ガイドの形式の説明を添えた下書きを作る |
| ファイル転送のリンクで届く | 自動で取りに行かない。担当がリンクを確かめて取得する |
| パスワード付きでPDFが開けない | 開けない旨を下書きにし、担当が確かめて送る |
| 検査サーバーが応答しない | 1回だけやり直し、だめなら判定をせずに担当へ。入稿の受付は止めない |
| TrimBox が無く、MediaBox もどちらとも合わない | トンボ付きか、大きさの誤り。needs_human |
| 出力が決めた形に合わない | 1回だけやり直し、だめなら担当へ |
| 同じ注文で再入稿が届く | 過去の判定と並べて送り、前回の ng が直ったかを担当が見る |
| 担当が承認しないまま時間がたつ | 納期の近い注文から順に再通知する |
3行目は、仕組みを作る前に決めておいてください。 大きいデータほど転送のリンクで届き、リンクを自動で開く仕組みは、入稿を装ったメールのリンクも開きます。 手間でも、ここは人が開きます。
記録を残す
- 受信したメールの Message-ID、差出人、受信日時、添付のファイル名と大きさ
- 結び付けた注文番号と、そのとき引いた注文の仕様
- 検査サーバーが返した測った値の全文
- AIの判定(
checks、customer_message)と、規則で決め直したverdict - 担当の選択(送る/直して送る/製版へ)と、応じた人と時刻、直した後の文面
- 再入稿との対応と、前回の
ngが直ったか - 製版や刷り出しの段で見つかった不備(点検で見落としたもの)
最後の行が、点検の答え合わせです。 製版で見つかった不備が、測った値にあったのに判定で ok になったのか、そもそも測っていない項目だったのか。前者なら指示かガイドの表を、後者なら測る項目を足します。
04実装レベルの3段階
最小構成では、件数がさばけません。 1件ずつ命令を流して貼るので、確かめるための段階です。 半自動化で、1件5分が2分程度になります。 注文を引く作業とPDFを開いて調べる作業は無くなりますが、測った値をガイドと照らす判断と、連絡を書く作業が残ります。本格構成で1分になり、この段階が本記事の想定です。 差が出るのは、連絡の文面を一から書く作業が、下書きを直す作業になるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、ガイドの表に足りない条件が先に分かります。
05工数削減シミュレーション
導入後 1,200件 × 1分 ÷ 60 = 20 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 名刺・チラシ・冊子などの小ロットの印刷をWebや電話で受け、入稿データの多くがPDFでメールに添付されて届く印刷会社。DTPの担当が1件ずつPDFを開いて、塗り足しや解像度やフォントを目で確かめている場合。不備の連絡が担当ごとに違う言い方になり、お客から聞き返される場合。入稿ガイド(塗り足しの幅、必要な解像度など)が文書になっている場合。
- 入稿の大半が Illustrator などの元データで、PDFにしてから検査する流れを作れない場合。すでに専用のプリフライトのソフトを製版の工程に組み込み、受付の時点で不備を返せている場合。デザインの良し悪しや誤字まで機械に見させたい場合(この構成は印刷の条件だけを見る)。なお、刷ってよいかの最終の判断と、お客との仕様の取り決めはこの構成では代替できません。
07最小構成で試す方法
- 先月の入稿データから50件を選ぶ(当時不備で返したもの、製版の段で不備が見つかったもの、問題の無かったものを混ぜる)
- 手元のパソコンで
pdfinfo -box・pdffonts・pdfimages -listを50件に流し、結果を表にする - 入稿ガイドを、品目ごとの数値の表に直す
- 手元の生成AIの画面に、注文の仕様とガイドの表と測った値を貼り、「6項目を判定してください。条件が無い項目は人が見るとしてください。注文の仕様を正としてください」と指示する
- 当時の判断と突き合わせる
50件は必ずやってください。 n8n を組む前に、測った値だけで当時の不備が拾えるのかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時返した不備と、製版で見つかった不備が出た | n8n で組む段に進む |
| ガイドの表に無い条件で ng が出る | ガイドの表を足す。構成は有効 |
| 製版で見つかった不備が、測った値に出ていない | 測る項目が足りない。何で見つかったかを製版に聞く |
3行目の不備は、塗り足しの中に文字が寄っている、といった種類が多いはずです。 それは数値では測れないので、担当の目に残す項目として切り分けます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 冊子の途中のページの大きさの違いを見逃す | pdfinfo に -f と -l を付ける。 付けないと1ページ目だけ |
| 解像度が実際より高く出る | width・height ではなく x-ppi・y-ppi で判定する |
| 透過の mask の行で解像度が低く出る | type が mask・smask の行を除く |
| TrimBox の無いPDFで塗り足しを判定できない | MediaBox と仕上がりサイズの差で3通りに分ける |
| 注文と違う大きさのPDFが ok になる | 注文を正とする。 PDFに合わせて読み替えさせない |
| ガイドに無い条件で ng が出る | 一般的な数値で補わせない。ガイドの表を足す |
| Execute Command が見当たらない | 2.0 から既定で無効。検査サーバーを HTTP で呼ぶ |
| お客への返信がスレッドにならない | SMTP では付けられない。件名に注文番号を入れる |
| 転送のリンクを自動で開いてしまう | 開かない。担当が確かめて取る |
| 同じメールを二度処理する | 既読にし、Message-ID を残す |
| 製版で見つかる不備が減らない | 製版に何で見つけたかを聞き、測る項目か担当の目に分ける |
上の3行が、この構成でいちばん起きやすい失敗です。 どれも命令の使い方の細部で、エラーにはならず、不備が ok で通るだけです。 最小構成の50件で、当時の不備が拾えるかを必ず確かめてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: お客の入稿データ(社名・氏名・電話番号の入った名刺や、未発表の商品のチラシ)、メールの差出人と本文、注文の仕様です。入稿データには、刷られる前の情報が載っています。
- 入稿データを生成AIに渡さない … AIに渡すのは測った値と条件の数字だけです。PDFの中身、名刺の氏名や電話番号は渡しません
- 検査サーバーを社内に置く … PDFは社内のネットワークの中で測り、測ったら一時ファイルを消します
- 不備の連絡を自動で送らない … お客に届くのは、担当が承認したものだけです
- メールのリンクを自動で開かない … 入稿を装ったメールのリンクも開いてしまいます
- 刷ってよいかの判断を代替しない … 判定は点検の結果で、刷る決定は担当がします
- Slack の承認できる人を限る … DTPの担当だけが承認できるように設定します
誤りが起きた場合のリスクは、不備を見落として刷ることと、不備でないものをお客に直させることの2つです。 前者は「迷ったら ok を選ばない」と規則での verdict の決め直しで、後者は「ガイドに無い条件で ng を出さない」と担当の承認で防ぎます。
10まず何から始めるか
1週目:入稿ガイドを表にする
Webの入稿ガイドを、品目ごとの塗り足しの幅、必要な解像度、受け付ける形式、ng と warn の区分の表に直します。曖昧な書き方の条件は、この機会にDTPの3名で決めます。
2週目:50件で試す
先月の入稿データ50件に3つの命令を流し、生成AIの画面で判定させて、当時の判断と突き合わせます。製版で見つかった不備が測った値に出ているかを最優先で見ます。
3週目:検査サーバーを置く
社内のサーバーに poppler-utils と、3つの命令を動かして JSON で返す小さな受け口を置きます。
4週目:受信から測るところまでをつなぐ
n8n でメールを受け、注文番号で注文の仕様を引き、検査サーバーで測った値を一覧に書き出すところまで作ります。この時点では、お客へは何も送りません。
2か月目: AIの判定とお客向けの下書き、Slack での承認を足し、送信を始めます。3か月目以降: 製版で見つかった不備を毎週数え、1件5分が何分になったかを実測します。製版の段で見つかる不備が減り、どの担当が受けても同じ説明でお客に返るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
-box で MediaBox・CropBox・BleedBox・TrimBox・ArtBox を出すこと。-f と -l で複数ページを指定するとページごとの大きさを出し、指定しなければ1ページ目だけを調べること | Debian manpages: pdfinfo | 2026-10-26 |
| 出力の列(name・type・encoding・emb・sub・uni)と、emb が埋め込みの有無を示すこと | Debian manpages: pdffonts | 2026-10-26 |
-list の列(type・width・height・color・x-ppi・y-ppi など)、width と height は埋め込まれた画像の大きさで描かれる大きさではないこと、x-ppi・y-ppi はページに描かれたときの解像度であること、mask・smask の行 | Debian manpages: pdfimages | 2026-10-26 |
| 添付をダウンロードする設定、添付をバイナリとして持つ Resolved の形式、既読にする設定 | n8n Docs: Email Trigger (IMAP) | 2026-10-26 |
| Execute Command ノードが n8n 2.0 から既定で無効で、n8n Cloud では使えず、Docker では n8n のコンテナの中で動くこと | n8n Docs: Execute Command | 2026-10-26 |
| HTTP Request の本文に Form-Data を選び、n8n のバイナリのファイルを入れて送れること | n8n Docs: HTTP Request | 2026-10-26 |
SMTP の資格情報で送り Reply To を指定できること、In-Reply-To と References を付けられずスレッドにならないこと | n8n Docs: Send Email | 2026-10-26 |
| Slack の中で承認・却下でき、承認できる人を限れ、誰が応じたかが残ること。公開の HTTPS、Interactivity、Signing Secret が要ること | n8n Docs: Approvals in Slack | 2026-10-26 |
| Basic LLM Chain のシステムメッセージと出力のパーサー | n8n Docs: Basic LLM Chain | 2026-10-26 |
JSON の例から生成するとすべての項目が必須になり、$ref に対応しないこと | n8n Docs: Structured Output Parser | 2026-10-26 |
| Data Table ノードの行の操作(追加・取得・Upsert など) | n8n Docs: Data table | 2026-10-26 |
塗り足しの幅や必要な解像度は、自社の入稿ガイドと製版の条件で決めてください。 本記事は poppler-utils と n8n の公開ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1887)についてのご相談はこちらから。
