Media > AI活用ユースケース > 営業 > 印刷会社が入稿データのメールを n8n で受け、PDFの解像度・塗り足し・フォントの埋め込みを注文の仕様と照らして判定し、不備の連絡をお客に返す

印刷会社が入稿データのメールを n8n で受け、PDFの解像度・塗り足し・フォントの埋め込みを注文の仕様と照らして判定し、不備の連絡をお客に返す

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

入稿用のアドレスに届いたPDFを n8n で受け、ページの大きさ・塗り足し・画像の解像度・フォントの埋め込み・ページ数を機械で測ります。AIがその値を注文の仕様と照らして判定し、不備があればお客に返す文面の下書きを作ります。

サマリー
生成AI
ChatGPT/Claude
連携・自動化
Make/n8n/Zapier
対象業界
広告/製造
対象部門
営業/生産
対象業務
内容確認・チェック/書類作成
主な課題
人手が足りない/属人化している/確認ミスが多い
AIで行う処理
判定
主な効果
品質標準化/対応スピード向上/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
100h/月
AI導入後
20h/月
想定削減
80%
年間削減
960h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 入稿用のアドレスに届いたメールを開き、本文から注文番号を探す
  2. 受注の管理表で、その注文の品目・仕上がりサイズ・ページ数を見る
  3. 添付のPDFを閲覧ソフトで開き、ページの大きさとページ数を見る
  4. 塗り足しがあるか、画像が粗くないか、フォントが埋め込まれているかを確かめる
  5. 不備があれば、お客に連絡のメールを書く
  6. 問題が無ければ、製版のフォルダにファイルを置き、管理表の状態を「入稿済み」にする
導入後(After)
  1. 自動入稿用のアドレスにメールが届くと、n8n の Email Trigger(IMAP)が添付ごと受け取る
  2. 自動本文と件名から注文番号を拾い、受注の管理表から注文の仕様を引く
  3. 自動添付がPDFかを確かめ、PDFなら社内の検査サーバーに送る
  4. 自動検査サーバーが、ページの大きさとボックス、ページ数、フォントの埋め込み、画像の解像度と色の種類を測って返す
  5. 自動AIが、測った値を注文の仕様と入稿ガイドに照らし、項目ごとに判定する。不備があればお客向けの説明を下書きする
  6. 自動判定と下書きを、DTPの担当に Slack で送る
  7. 人担当が判定を確かめ、「このまま送る」「直して送る」「製版へ回す」を選ぶ
  8. 自動選んだとおりに、お客へ連絡のメールを送るか、製版のフォルダへ置いて管理表の状態を変える
各工程の詳しい説明を読む
  1. 入稿用のアドレスに届いたメールを開き、本文から注文番号を探す
  2. 受注の管理表で、その注文の品目・仕上がりサイズ・ページ数を見る
  3. 添付のPDFを閲覧ソフトで開き、ページの大きさとページ数を見る
  4. 塗り足しがあるか、画像が粗くないか、フォントが埋め込まれているかを確かめる
  5. 不備があれば、お客に連絡のメールを書く
  6. 問題が無ければ、製版のフォルダにファイルを置き、管理表の状態を「入稿済み」にする

(a)1件ずつ開いて目で見ている。 閲覧ソフトの機能で解像度やフォントを調べるには、いくつも画面をたどります。忙しい日は、拡大して見た目が粗くないかで済ませます。

(b)担当によって見る項目が違う。 見落とした不備は、製版や刷り出しの段で見つかります。 そこから連絡すると、納期の前日にお客へ作り直しを頼むことになります。

(c)不備の連絡が伝わらない。 「塗り足しが3mm足りません」と書いても、お客には何をすればよいか分かりません。聞き返しの電話が来て、同じ説明を何度もします。 説明の上手な担当に、連絡の仕事が集まります。

(d)注文番号の無いメールがある。 本文に「先日電話した○○です」としか書かれていないと、管理表で注文を探すところから始まります。

  1. 【自動】 入稿用のアドレスにメールが届くと、n8n の Email Trigger(IMAP)が添付ごと受け取る
  2. 【自動】 本文と件名から注文番号を拾い、受注の管理表から注文の仕様を引く
  3. 【自動】 添付がPDFかを確かめ、PDFなら社内の検査サーバーに送る
  4. 【自動】 検査サーバーが、ページの大きさとボックス、ページ数、フォントの埋め込み、画像の解像度と色の種類を測って返す
  5. 【自動】 AIが、測った値を注文の仕様と入稿ガイドに照らし、項目ごとに判定する。不備があればお客向けの説明を下書きする
  6. 【自動】 判定と下書きを、DTPの担当に Slack で送る
  7. 【人】 担当が判定を確かめ、「このまま送る」「直して送る」「製版へ回す」を選ぶ
  8. 【自動】 選んだとおりに、お客へ連絡のメールを送るか、製版のフォルダへ置いて管理表の状態を変える

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)── お客へ
   └─ 製版へ ──▶ 製版のフォルダ、管理表の状態の更新
役割想定する製品代替候補
ワークフローn8nMake、Zapier
生成AIClaude(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どうやって実装するのか

Step1

処理の起点を決める

Email Trigger(IMAP)で、入稿用のアドレスにメールが届くたびに動かします。 公式ページでは、受け取るメールボックスを指定でき、添付をダウンロードする設定と、添付をバイナリとして持つ形式(Resolved)があります。添付の取得は処理を重くするので必要なときだけ有効に、とされていますが、この構成は添付が主役なので有効にします。

受け取ったメールは「既読にする」設定にします。 公式ページでは、受け取ったメールを既読にするかを選べます。既読にしておけば、同じメールを二度処理しません。 あわせて、処理したメールの Message-ID を Data Table に残し、二重に動いたときに弾きます。

1日の締めでまとめて動かすことはしません。 入稿は納期の直前に集中し、連絡が数時間遅れるだけで作り直す時間が無くなります。

Step2

入力データを集める

データ中身取得元
メール差出人、件名、本文、受信日時、添付ファイルEmail Trigger(IMAP)
注文の仕様注文番号、品目、仕上がりサイズ、ページ数、片面/両面、色数、製本の方法、納期Data Table(受注の管理表の写し)
測った値ページごとのボックスの大きさ、ページ数、フォントと埋め込みの有無、画像ごとの解像度と色の種類検査サーバー
入稿ガイド品目ごとの塗り足しの幅、必要な解像度、受け付ける形式、フォントの扱いData Table(ガイドを表にしたもの)
過去の連絡同じお客への過去の不備の連絡と、その後の再入稿Data Table

質を決めるのは、いちばん下から2つ目の入稿ガイドの表です。 Webに文章で載っているガイドを、品目ごとの数値の表に直します。名刺・チラシ・冊子・ポスターそれぞれの塗り足しの幅と、必要な解像度。この表が無いと、AIは一般論の数字で判定します。

受注の管理表は、毎晩 Data Table に写します。 管理表の列の変更でワークフローが止まらないよう、写すときに必要な列だけをそろえます。

Step3

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

取るものどこから何に使うか
添付のPDFEmail 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 の列で除きます。

Step4

AIへ渡す前に整形する

  1. 添付の形式を見る … PDF以外(ai、psd、jpg、zip など)は検査に回さず、「形式」の項目を判定の材料にします
  2. 大きすぎる添付 … メールに付けられない大きさのデータは、ファイル転送のサービスのリンクで届きます。リンク先からは自動で取りに行かず、人へ回します
  3. パスワード付きのPDF … 検査サーバーが開けなければ、その旨を判定の材料にします
  4. 複数のPDF … 表紙と本文のように分かれて届くものは、ファイルごとに測り、注文の仕様とは合計のページ数で照らします
  5. ボックスを大きさに直す … 検査サーバーの側で、ボックスの値を幅と高さのミリに直し、仕上がりサイズとの差と、TrimBox と BleedBox の差を出します
  6. 規則で先に決まる項目 … フォントの emb が no のものがある、ページ数が注文と違う、は規則で先に印を付けます

2番目でリンクを取りに行かないのは、送り主の確かめが要るからです。 メールに書かれたリンクを自動で開く仕組みは、偽のメールからのリンクも開きます。 入稿のメールの差出人が、注文のお客と同じかも分かりません。

5番目で、TrimBox が無いPDFも扱えるようにします。 自分で作ったPDFには、MediaBox しか無いものが少なくありません。MediaBox が仕上がりサイズと同じなら「塗り足しなし」、仕上がりサイズに塗り足しの幅を足した大きさなら「塗り足しあり」、どちらでもなければ「人が見る」とし、トンボ付きのPDFもこの3つ目に入れます。

Step5

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 の注文と思われます」と判断させると、不備が消えます。

Step6

指示内容を固定する

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 を出すと、お客は直さなくてよいものを直します。

Step7

出力形式を固定する

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ページ目の写真」と具体的に書けることです。

Step8

システムへ連携する

つなぎ先方式内容
入稿用のアドレスEmail Trigger(IMAP)メールと添付の受信
検査サーバーHTTP RequestPDFを送り、測った値を受け取る
Anthropic のモデルAnthropic Chat Model ノード判定と説明の下書き
SlackSlack ノードの 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 ノードの返信の操作を使います。

Step9

人が確認する

DTPの担当が、Slack に届いた判定を確かめます。

  1. needs_human を先に見る … 注文番号が無い、ボックスが合わない、ガイドに条件が無い。PDFを開いて自分で判断します
  2. return_to_customer の下書きを読む … measured と required を見て、不備が本当かを確かめ、説明がお客に伝わる言い方かを直します
  3. ready で warn のあるものを見る … RGB の画像の色の変わり方を伝えるか決めます
  4. ready を流し見る … 製版へ回します

2番目の言い方は、担当が最後に見ます。 不備が続くお客に電話を勧める一文を足す、といった判断は担当がします。

目標は、1,200件をならして1件1分です。 ready は流し見るだけで数秒、return_to_customer と needs_human は数分かかります。

Step10

例外に対処する

起きること対応
注文番号が見つからない推測させずに needs_human。担当が管理表で探す
PDF以外の形式で届く「形式」を ng とし、入稿ガイドの形式の説明を添えた下書きを作る
ファイル転送のリンクで届く自動で取りに行かない。担当がリンクを確かめて取得する
パスワード付きでPDFが開けない開けない旨を下書きにし、担当が確かめて送る
検査サーバーが応答しない1回だけやり直し、だめなら判定をせずに担当へ。入稿の受付は止めない
TrimBox が無く、MediaBox もどちらとも合わないトンボ付きか、大きさの誤り。needs_human
出力が決めた形に合わない1回だけやり直し、だめなら担当へ
同じ注文で再入稿が届く過去の判定と並べて送り、前回の ng が直ったかを担当が見る
担当が承認しないまま時間がたつ納期の近い注文から順に再通知する

3行目は、仕組みを作る前に決めておいてください。 大きいデータほど転送のリンクで届き、リンクを自動で開く仕組みは、入稿を装ったメールのリンクも開きます。 手間でも、ここは人が開きます。

Step11

記録を残す

  • 受信したメールの Message-ID、差出人、受信日時、添付のファイル名と大きさ
  • 結び付けた注文番号と、そのとき引いた注文の仕様
  • 検査サーバーが返した測った値の全文
  • AIの判定(checks、customer_message)と、規則で決め直した verdict
  • 担当の選択(送る/直して送る/製版へ)と、応じた人と時刻、直した後の文面
  • 再入稿との対応と、前回の ng が直ったか
  • 製版や刷り出しの段で見つかった不備(点検で見落としたもの)

最後の行が、点検の答え合わせです。 製版で見つかった不備が、測った値にあったのに判定で ok になったのか、そもそも測っていない項目だったのか。前者なら指示かガイドの表を、後者なら測る項目を足します。

04実装レベルの3段階

最小構成:手元で3つの命令を流し、結果を生成AIの画面に貼って判定させる / 測ることと判定の確かめ
半自動化:上記+n8n でメールを受け、検査サーバーで測った値と注文の仕様を一覧に書き出す / 受信、注文との結び付け、測ること
本格構成:上記+AIの判定、お客向けの下書き、Slack での承認、送信と製版への受け渡し / 受信から連絡と受け渡しまで

最小構成では、件数がさばけません。 1件ずつ命令を流して貼るので、確かめるための段階です。 半自動化で、1件5分が2分程度になります。 注文を引く作業とPDFを開いて調べる作業は無くなりますが、測った値をガイドと照らす判断と、連絡を書く作業が残ります。本格構成で1分になり、この段階が本記事の想定です。 差が出るのは、連絡の文面を一から書く作業が、下書きを直す作業になるからです。 段階を飛ばさないでください。 半自動化の一覧を1か月見ると、ガイドの表に足りない条件が先に分かります。

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

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

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

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

AI活用について相談する

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

向いている
  1. 名刺・チラシ・冊子などの小ロットの印刷をWebや電話で受け、入稿データの多くがPDFでメールに添付されて届く印刷会社。DTPの担当が1件ずつPDFを開いて、塗り足しや解像度やフォントを目で確かめている場合。不備の連絡が担当ごとに違う言い方になり、お客から聞き返される場合。入稿ガイド(塗り足しの幅、必要な解像度など)が文書になっている場合。
向いていない
  1. 入稿の大半が Illustrator などの元データで、PDFにしてから検査する流れを作れない場合。すでに専用のプリフライトのソフトを製版の工程に組み込み、受付の時点で不備を返せている場合。デザインの良し悪しや誤字まで機械に見させたい場合(この構成は印刷の条件だけを見る)。なお、刷ってよいかの最終の判断と、お客との仕様の取り決めはこの構成では代替できません。

07最小構成で試す方法

  1. 先月の入稿データから50件を選ぶ(当時不備で返したもの、製版の段で不備が見つかったもの、問題の無かったものを混ぜる)
  2. 手元のパソコンで pdfinfo -box・pdffonts・pdfimages -list を50件に流し、結果を表にする
  3. 入稿ガイドを、品目ごとの数値の表に直す
  4. 手元の生成AIの画面に、注文の仕様とガイドの表と測った値を貼り、「6項目を判定してください。条件が無い項目は人が見るとしてください。注文の仕様を正としてください」と指示する
  5. 当時の判断と突き合わせる

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ガバナンス上の注意点

この構成で扱うデータ: お客の入稿データ(社名・氏名・電話番号の入った名刺や、未発表の商品のチラシ)、メールの差出人と本文、注文の仕様です。入稿データには、刷られる前の情報が載っています。

  1. 入稿データを生成AIに渡さない … AIに渡すのは測った値と条件の数字だけです。PDFの中身、名刺の氏名や電話番号は渡しません
  2. 検査サーバーを社内に置く … PDFは社内のネットワークの中で測り、測ったら一時ファイルを消します
  3. 不備の連絡を自動で送らない … お客に届くのは、担当が承認したものだけです
  4. メールのリンクを自動で開かない … 入稿を装ったメールのリンクも開いてしまいます
  5. 刷ってよいかの判断を代替しない … 判定は点検の結果で、刷る決定は担当がします
  6. 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技術仕様の確認日・参考情報

技術仕様確認日:2026-10-26/最終更新:2026-10-27
確認した内容情報源確認日
-box で MediaBox・CropBox・BleedBox・TrimBox・ArtBox を出すこと。-f と -l で複数ページを指定するとページごとの大きさを出し、指定しなければ1ページ目だけを調べることDebian manpages: pdfinfo2026-10-26
出力の列(name・type・encoding・emb・sub・uni)と、emb が埋め込みの有無を示すことDebian manpages: pdffonts2026-10-26
-list の列(type・width・height・color・x-ppi・y-ppi など)、width と height は埋め込まれた画像の大きさで描かれる大きさではないこと、x-ppi・y-ppi はページに描かれたときの解像度であること、mask・smask の行Debian manpages: pdfimages2026-10-26
添付をダウンロードする設定、添付をバイナリとして持つ Resolved の形式、既読にする設定n8n Docs: Email Trigger (IMAP)2026-10-26
Execute Command ノードが n8n 2.0 から既定で無効で、n8n Cloud では使えず、Docker では n8n のコンテナの中で動くことn8n Docs: Execute Command2026-10-26
HTTP Request の本文に Form-Data を選び、n8n のバイナリのファイルを入れて送れることn8n Docs: HTTP Request2026-10-26
SMTP の資格情報で送り Reply To を指定できること、In-Reply-To と References を付けられずスレッドにならないことn8n Docs: Send Email2026-10-26
Slack の中で承認・却下でき、承認できる人を限れ、誰が応じたかが残ること。公開の HTTPS、Interactivity、Signing Secret が要ることn8n Docs: Approvals in Slack2026-10-26
Basic LLM Chain のシステムメッセージと出力のパーサーn8n Docs: Basic LLM Chain2026-10-26
JSON の例から生成するとすべての項目が必須になり、$ref に対応しないことn8n Docs: Structured Output Parser2026-10-26
Data Table ノードの行の操作(追加・取得・Upsert など)n8n Docs: Data table2026-10-26

塗り足しの幅や必要な解像度は、自社の入稿ガイドと製版の条件で決めてください。 本記事は poppler-utils と n8n の公開ページで確認できた範囲だけを扱っています。

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

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

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

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