AI生成画像を原寸で検品してはいけない|1000×1500で読めた文字が、一覧の240pxで潰れた

🧭 この記事の前提
記事の執筆はClaude Code、画像の生成は別のAI(CODEX)という分業をしています。Claude側は画像を生成できないので、指示書をリポジトリに置いて発注し、納品された画像をこちらで検品して取り込む形です。
困ったのは、納品物を原寸(1000×1500px)で開いて検品していたこと。読めると判断して投稿しかけた画像が、実際に人が見る一覧の幅(約240px)では文字が完全に潰れていました。
持ち帰れるもの:AIに画像を作らせている人向けに、「どのサイズで検品すれば嘘をつかないか」と、機械では検出できなかった不良の実例を出します。画像を自分で撮っている人には不要です。
結論:検品は「実際に表示される幅」でしかできない
📌 先に結論 ① 原寸で見た検品は、検品ではない。 縮小してから1枚ずつ見る ② 一律のルールで合否を決めない。 縮小して見たら判定が割れた ③ 機械のチェッカーは万能ではない。 実際に、最も読めなかった1枚がスコア上位に入らなかった
① 原寸1000×1500で読めた文字が、240pxで消えた
Pinterestのピン画像は 1000×1500px で作っています。ところが利用者が実際に目にするのは、フィードやボード一覧に並んだ状態で、幅はおよそ240pxです。縦横比を保ったまま、**面積で約4%**まで縮みます。
このズレを意識せずに原寸で開いて「文字は読める」と判断していました。縮小した瞬間に破綻したのは、文字の大きさではなく、文字と背景の関係のほうでした。
② 縮小してから見たら、判定が割れた
最初は原因を「文字の位置」だと決めつけて、左下に置いた見出しと半透明の白帯を一律で禁止しようとしました。ところが1枚ずつ240pxに縮めて見たら、そう単純ではありませんでした。
同じバッチの6枚を検品した結果が、投稿してよいもの2枚・作り直し4枚に割れたのです。
不合格になった4枚は、それぞれ壊れ方が違いました。
| 画像 | 240pxで何が起きていたか |
|---|---|
| フックの記事のピン | 「指示ではなく設定」の**「定」が真鍮の南京錠に埋もれる**。文字と被写体が同じ明度になっていた |
| 指示ファイルの記事のピン | 見出しが画像の右端まで伸び、ノートと付箋に重なる。1行が長すぎた |
| 量産の記事のピン | 「出たのは3本」が紙束とトレイに重なる |
| 1年レビューのピン | ファイル自体が存在しなかった(記事78本に対してピン77枚) |
4件のうち1件は画像の問題ですらなく、そもそも納品されていなかったものでした。原寸で1枚ずつ開いて確認する運用だと、「無いもの」は目に入りません。
③ 割れた判定から出てきた基準
6枚を見比べて、合否の軸が1つに絞れました。文字の位置でも大きさでもなく、文字が乗っている面の明度です。
| 条件 | 判定 |
|---|---|
| 濃い被写体(金属・木・黒い機器)に文字が乗る | 不合格。 240pxで確実に潰れる |
| 明るい/透明な被写体(白紙・ガラス・布)に軽く接触 | 合格。 縮小しても読める |
これが分かってから、構図そのものを変えました。被写体は画面の下側に置き、上0〜45%を物が無い面として空ける方式です。
副産物がありました。文字の下に敷いていた半透明の白帯が、まるごと不要になりました。 帯は「濃い被写体の上に文字を置く」ことを前提にした対症療法だったからです。文字が乗る場所を空ければ、帯そのものが要らなくなります。
⚠ 覚えておく一行 可読性の問題に見えていたものは、構図の問題でした。 帯を濃くする・文字を太くするという方向で2回直そうとして、2回とも失敗しています。
④ 機械のチェッカーでは検出できなかった
念のため書いておくと、可読性を機械判定するスクリプトは作ってありました。文字領域の背景の**標準偏差(σ)**を測り、ばらつきの大きい=ごちゃついた背景に文字が乗っている画像を上位に並べるものです。
このスクリプトは、最も読めなかった1枚を上位8枚に入れませんでした。 南京錠の上に「定」が乗っていた画像です。金属の面は明度こそ近いものの、面としては平坦なのでσが小さく出るからでした。
σは「背景がごちゃついているか」を測る指標であって、「文字が読めるか」を測る指標ではありません。
一方で、目視でなければ絶対に分からないわけでもありませんでした。後日、別の不良は機械で検出できています。
⑤ 目視でも見落とした不良(行間が0だった)
240pxの目視検品を通したはずのピンに、別の不良が77枚中58枚ありました。見出し2行の行間が字面と同じで、1行目の下部と2行目の上部が接触していたのです。
| バッチ | 行間 ÷ 字面 | 状態 |
|---|---|---|
| 最初の20枚 | 0.70〜0.76 | 正常 |
| 46枚の一括再生成 | 0.00(2行が融合) | 不良 |
明朝体の全角文字は仮想ボディいっぱいまで使うので、行送りが字送りと同程度だと必ず衝突します。元は正しく組めていたのに、46枚を一気に作り直したときに行間だけが失われていました。
これは「行が2本に分かれているか」を測ることで機械判定できました。σのチェッカーでも240pxの目視でも見つからず、専用の観点を1つ足して初めて出てきた不良です。予約投稿に9枚積んだ後に発覚し、8枚を削除しました(未公開なので削除しても失うものはありません)。
📌 ここだけ持ち帰るなら 検品は「良さそうか」を見る作業ではなく、不良の種類ごとに観点を1つずつ用意する作業です。目視と機械は代替関係ではなく、それぞれ見つけられる不良の種類が違います。
⑥ 最悪の失敗:「残す」判断を検品なしでやった
重複してしまったピンについて、「公開済みのほうを残す」判断をしたことがあります。このときサムネイルを見比べて「同じ画像だ」と確認しただけで、240pxの検品をしていませんでした。
実際には同じ画像ですらありませんでした。 公開済みのものは 736×1104 の別版で、手元のファイル(1000×1500)とは構図が違っていました。両方とも不合格でしたが、それは検品して初めて分かったことです。
規則: 「残す」判断も、投稿と同じ検品を通す。 残すことは、その画像をもう一度選ぶことと同じです。サムネイルの見比べは検品ではありません。
自分でやる手順
- 納品物の枚数を先に数える。 「作られていない」は目視の検品では見つかりません
- 実際に表示される幅に縮小してから開く。 Pinterestなら240px、記事一覧のカードなら自サイトで実測する
- 1枚ずつ見る。 バッチ単位で「この方式は駄目」と決めない。今回は同じ方式の6枚で判定が2対4に割れました
- 不合格の理由を1行で書く。 「読みにくい」ではなく「何が何に埋もれたか」。ここから基準が出ます
- 同じ不良が2回出たら、機械で測れる形にする。 ただし測っている指標が本当に症状に対応しているかを確認する
- 公開済みを「残す」判断も、同じ手順を通す
やりがちな失敗
| 失敗 | 何が起きるか | 直し方 |
|---|---|---|
| 原寸で検品する | 実際の表示幅で潰れる文字を見逃す | 表示幅に縮小してから見る |
| 一律のルールで合否を決める | 使える画像まで捨てる(今回は6枚中2枚が合格だった) | 1枚ずつ見る |
| 機械のスコアを信じ切る | 指標と症状が対応していないと素通りする | 何を測っている指標かを確認する |
| 症状を対症療法で潰す | 帯を濃くする・文字を太くする方向は2回失敗した | 構図の側を疑う |
| サムネイルの見比べで判断する | 別の画像を「同じ」と誤認する | 残す判断も検品を通す |
同じ「AIの出力を見ているのに、確認しやすいほうだけを見ていた」構図は、配色を目視で問題なしとしていたら実測では基準未達だった件でも踏んでいます。出力があること自体は、正しさの証拠になりません。 検証の経路が落ちて出力が0になっても気づかなかった件は自動化は静かに壊れるにまとめました。
まとめ
- 原寸で読めることは、何の保証にもならない。 検品は実際の表示幅で行う
- 判定は割れる。 一律のルールで決めると、使える画像を捨てる
- 可読性の問題に見えたものが、構図の問題だった。 文字が乗る面を空けたら帯が不要になった
- 機械と目視は、見つけられる不良の種類が違う。 σでは南京錠に埋もれた文字を検出できず、目視では行間0を58枚見逃した
画像そのものの作り方(記事ごとに何を写すか)はAIの記事画像が全部「机にノートPC」になる問題に、量産全体で何が壊れたかはAIに74本書かせた結果にまとめています。