DEEP RESEARCH | CC3 目標アーキテクチャ統合版

文字なしAI生成画像 → トッププロ級「写植完成ページ」
を作る完成パイプライン設計図 2026

既存の写植要素DR(セリフ生成・顔回避配置・フキダシ・SFX・後写植WF)を1本に束ね、「何を順にどう処理すれば100点か」の全体図に徹した統合設計図。各段の入出力・ツール・擬似コード・閾値まで実装直結で記述する。

対象: CC3(写植エンジン担当)| 重視軸: 技術(全体最適・実装直結)| 起草: grok-4.3 + 1次情報15ソース
日付: 2026-06-12| 重複チェック: 近接要素DR多数あり / 統合視点の新規DRとして発行(後述§11)

01結論(TL;DR)

完成形アーキ一言要約:
文字なし絵を入力 → Florence-2 / Qwen2.5-VL で構造化シーン解析(誰が・何を・どのステージ・どんな感情か)→ grok-4.3 に人格注入して文脈一致セリフ生成 → 合体マスク方式でフキダシ作画 → MediaPipe顔検出+OpenCV saliency で見せ場を避けた最大空矩形へ自動配置 → PIL後処理レイヤーで描き文字SFX・効果線 → manga-ocr可読率 + 被覆率IoU + 4AIペアワイズ採点の品質ゲートでpass/failを自動判定。これを単一パイプラインで貫通させる。

現状CC3写植スコア 59 → 100 への道筋

現行エンジン(_remote_compose_v2+合体マスク+ベタフラ+SFX-FX)は「組版の見た目」は作れるが、①セリフが固定句で文脈とズレる ②顔/見せ場にかぶる ③可読性の自動検証がないの3点で素人の壁に当たっている。本パイプラインはこの3点を VLM解析+LLM生成+自動配置+品質ゲートの4ブロックで機械的に埋める。59→100は「美麗化」ではなく「ズレ・かぶり・読めなさの自動排除」で達成する。

最重要3原則(これだけは絶対に守る)
  1. 絶対点を信用しない。品質判定は ペアワイズ+ルブリック で行う。VLMは「順位は付けられるが点数は付けられない」(rank but cannot score[10])。自作 vs 参照プロ作品の勝率で合否を切る。
  2. 顔・口・見せ場は神聖不可侵。フキダシは 禁止域マスク(顔∪口∪saliency高値∪枠margin)の外にしか置かない。読み順はZ/逆Nを最優先。
  3. 品位は機械判定で守る。喘ぎ/絶頂セリフ・男言葉は「そのコマで実際に絡んでいるか」「男が同コマに居るか」をロジックで判定してから初めて解禁する[14]。立ち絵ソロには付けない。

02市場規模・位置づけ(なぜ今これが効くか)

同人/AIエロ漫画制作の最大ボトルネックは「文字を画像に焼き込んだ瞬間に崩壊する」こと。SDXL/Pony/Illustrious系は日本語テキスト描画がほぼ破綻し、焼込SFXは可読不能・修正不能になる[6]。そこで「絵は文字なしで生成し、文字は後から写植で乗せる」後写植ピボットが必然になる。

焼込崩壊
文字なし生成で
原理的に回避
量産性
絵生成と写植を
分離→並列化
規約クリーン
テキストレイヤー
非破壊で再編集可
多言語
同一絵に英/中
差し替え写植可

後写植「完成パイプライン」の固有価値

※本DRは「市場で売る製品」ではなくCC3の内製ライン設計。価値は「写植工数の削減と品質上限の引き上げ」に換算する(§06)。

03競合TOP10(既存手法・ツールとの差別化)

#手法/ツール強み弱み本パイプラインの差別化
1Blambot AutoLetter英語レタリングの定番・フォント最適化CJK縦書き/感情連動/顔回避なし[3]合体マスク縦書き+顔被覆率検証を追加
2Clip Studio Paint 自動フキダシ商用完成度・手動の効率化セリフ生成も顔被覆検証も無しVLM→LLMでセリフ自体を生成し全自動化
3ComicStudio系 Smart Balloonテキスト長→フキダシ径の推定配置はヒューリスティック止まり[3]distanceTransform/最大空矩形で最適配置
4arXiv 2101.11111 emotion-driven balloon感情→フキダシ形状・読み順最適化[4]動画字幕入力前提・CJK未対応・実装非公開静止画+VLM grounding で即時実装版に
5Deep CNN balloon segmentation既存フキダシの検出/分割に強い[5]「検出」専用で「生成・配置」はしない逆問題(空白から配置)を解く
6Florence-2 単体無料MIT・caption/OD/grounding/OCR[1]セリフ生成・配置まで到達しない解析専任に位置付け後段と結合
7Qwen2.5-VL 単体空間localization/レイアウト読解が強い[8]創作セリフ生成は不得手解析クロスチェック役に限定
8manga-ocr 単体多行フキダシOCRの精度が高い[2]生成・配置はできない可読性ゲート専用に転用
9商用AIレタリングSaaSUIが整備・即利用可R18/CJK縦書き対応が弱く外部送信完全ローカル・R18外部送信ゼロ
10完全手動(Clip Studio手作業)品質上限が最も高い1ページ数時間・量産不能手動の上限品質に自動で漸近させる

差別化の核:個々の要素(解析・生成・配置・検証)は既存物の組合せだが、「文字なし絵→完成ページ」を1本のpass/fail付きパイプラインで貫通させ、CJK縦書き×感情×顔回避×可読自動検証を全て満たす内製ラインはここにしかない。

04技術スタック=パイプライン全体図

① 入力
文字なし絵
② シーン解析
誰/何/ステージ/感情
③ セリフ生成
文脈一致+人格
④ フキダシ作画
合体マスク
⑤ 流し込み/配置
顔回避+読み順
⑥ 描き文字SFX ⑦ 効果線/仕上げ ⑧ 品質ゲート
OCR/被覆/4AI
✓ 完成ページ

各段の 入力 / 処理 / ツール / 出力

入力処理ツール出力
① 入力文字なしPNG/JPG
(推奨 2048×3072)
パネル矩形検出・正規化OpenCV(枠線検出)image, panel_rects[]
② シーン解析image, panelscaption/物体検出/grounding/空間QA→構造化Florence-2[1] + Qwen2.5-VL[8] + MediaPipe顔[9]scene.json
③ セリフ生成scene.json+人格品位ガード判定→文脈一致セリフ/SFX語をLLM生成grok_router(grok-4.3)[15]script.json
④ フキダシ作画script行・形状指定丸+しっぽを合体マスク(引き算で輪郭化)PIL/numpy(合体マスク[14]balloon mask/shape
⑤ 配置・流し込みscript,balloon,masks禁止域→空き矩形探索→読み順→級数調整→縦書き組版OpenCV saliency[11]+HarfBuzz/Pango[12]layout.json+描画
⑥ 描き文字SFXscene感情/動作SFX語彙→フォント描画→閾値/筆圧/縁取りで手描き化PIL後処理レイヤー[13]SFXレイヤー
⑦ 効果線・仕上げ感情ピーク/移動量集中線/スピード線/ベタフラを条件分岐で付与numpy放射ブラー合成済ページ
⑧ 品質ゲート完成画像+script+masksOCR可読/被覆IoU/4AIペアワイズ→pass/fail→リカバリ⟳manga-ocr[2]+VLM judge[10]合否+failログ

共通I/Fデータ構造(このJSONで全段を疎結合に繋ぐ)

scene.json   # ②の出力 — 段③以降の唯一の真実
{ "panels":[ {"id":0,"bbox":[x,y,w,h],
    "characters":[{"id":1,"gender":"female","action":"standing",
                   "emotion":"smile","mouth_open":true,"face_bbox":[..],"mouth":[mx,my]}],
    "stage":1,            # s1着衣 〜 s5絶頂
    "speaker_count":1,
    "is_sex_scene":false, # 品位ガードの基準
    "confidence":0.87 } ] }

script.json  # ③の出力
{ "lines":[ {"panel_id":0,"speaker":1,"text":"おかえりなさい",
    "emotion":"smile","type":"speech",       # speech / monologue / moan / sfx
    "shape":"round_tail","priority":"normal"} ] }

layout.json  # ⑤の出力(再現・再編集の保存形式)
{ "balloons":[ {"line_ref":0,"bbox":[x,y,w,h],"shape":"round_tail",
    "font_size":16,"line_dir":"ttb","tail_angle":214} ],
  "sfx":[...], "fx":[{"type":"betaflash","panel_id":3}] }

設計の肝:全段が scene.json / script.json / layout.json を介して疎結合。VLMやLLMを差し替えても下流は無改修。layout.jsonを保存すれば「再編集・多言語差し替え・別オチ」が絵を触らず可能になる。

05文脈一致セリフ生成の具体手法(固定句病を殺す)

素人写植が破綻する最大要因は「絵を見ずに固定句を貼る」こと。立ち絵に喘ぎが出る、出迎えなのに絶頂セリフ、という事故[14]はここで生む。解決は VLMで絵を構造化 → LLMが構造に従って生成の2段。

Step1: VLMで絵を構造化抽出

Step2: 品位ガード判定(生成前に必ず通す)

def guard(line, scene_panel):
    # 喘ぎ/絶頂は「実際に絡んでいるコマ」だけ [14]
    if line.type == "moan" and not scene_panel["is_sex_scene"]:
        return demote_to_safe(line)        # 出迎え/奉仕/照れ/誘いの上品なセリフへ
    # 男セリフは男が同コマに居る絡みコマだけ [14]
    sp = get_char(scene_panel, line.speaker)
    if sp["gender"] == "male" and not has_male_in_intercourse(scene_panel):
        return None                        # 画面外の声もNG。男セリフを発生させない
    return line

Step3: 人格注入プロンプト(固定句禁止)

system = "あなたは {char.name}({char.persona}・口調:{char.tone})として話す。"
user = f"""このコマの状況: {scene_panel を自然文化}
ステージ: s{stage}(s1着衣〜s5絶頂)/ 感情: {emotion} / 同コマ人数: {count}
制約:
- 状況・感情・ステージに一致する 1〜2 文だけ。固定句・テンプレ禁止。
- 立ち絵/日常コマなら品のあるセリフ+軽い感情。喘ぎ語は出すな。
- 出力は script.json の lines 形式。"""
text, _ = gr.ask(user, kind="quick_check", system=system)   # 1行=約¥0.1

人格プロフィール(3サイズ/性格/好きな言葉/口調)はCC1の偏愛プロフィール資産をそのまま注入[15]。これで「キャラが本当に喋っている」セリフになる。

注意:VLMは話者を誤判定する(position bias / scene混同[10])。話者推定は §解析精度設計(後述パートD)の口開き+視線+面積最大ヒューリスティックと2モデル一致で confidence を出し、低信頼は人間確認フラグを立てる。

05b自動配置の統合ロジック(顔回避→空き探索→読み順→はみ出し)

配置は本パイプラインの心臓。顔/見せ場をavoid → 空きスペース探索 → 読み順 → はみ出し回避を1本のgreedyループに統合する。

禁止域マスクの構築

def build_forbidden_mask(image, faces, panels):
    H, W = image.shape[:2]
    forbidden = np.zeros((H, W), np.uint8)
    # 顔+口(口は最も重い禁止域)
    for f in faces:
        cv2.rectangle(forbidden, (f.x1,f.y1), (f.x2,f.y2), 255, -1)
        cv2.circle(forbidden, tuple(f.mouth), 28, 255, -1)
    # 見せ場 = OpenCV static saliency [11]
    sal = cv2.saliency.StaticSaliencySpectralResidual_create()
    ok, sal_map = sal.computeSaliency(image)         # 0..1
    forbidden = cv2.bitwise_or(forbidden, ((sal_map>0.6)*255).astype(np.uint8))
    # パネル境界マージン
    for p in panels:
        cv2.rectangle(forbidden, p, 255, thickness=8)
    return forbidden, sal_map

空きスペース探索(2方式を使い分け)

統合配置ループ(完成形)

def place_all_balloons(image, script_lines, panels, scene):
    faces = mediapipe_blazeface(image)                 # bbox + mouth [9]
    forbidden, sal_map = build_forbidden_mask(image, faces, panels)
    placed = []
    # 読み順: 話者顔位置でコマ内を 右上→左下(Z/逆N)にソート
    order = sorted(script_lines,
                   key=lambda L: reading_key(speaker_face(L, faces, scene)))
    for i, line in enumerate(order):
        line.speaker_index = i
        fs, w, h = estimate_balloon_size(line.text, base=16)   # 級数→外接矩形
        # --- 空き探索 ---
        if line.priority == "high":
            cx, cy = argmax_xy(cv2.distanceTransform(255-forbidden, cv2.DIST_L2,5))
            rect = rect_around(cx, cy, w, h)
        else:
            rect = find_maximal_empty_rect(forbidden, w, h)
        # --- しっぽ角度 = フキダシ中心→話者の口 ---
        sp = speaker_face(line, faces, scene)
        tail_angle = atan2(sp.mouth.y - rect.cy, sp.mouth.x - rect.cx)
        # --- はみ出し/重なり回避(級数3段縮小→フォールバック) ---
        while (not inside_panel(rect, panels)) or overlaps(rect, placed):
            fs -= 2                                    # 16→14→12→10
            w, h = recompute_box(line.text, fs)
            rect = find_maximal_empty_rect(forbidden, w, h)
            if fs < 10:
                rect = fallback_leader(rect, panels)   # 枠外引出し+0.5ptリーダー線
                break
        draw_balloon(image, rect, line.text, fs, tail_angle, dir="ttb")
        placed.append(rect)
        forbidden = cv2.bitwise_or(forbidden, mask_of(rect))  # 逐次=次の禁止域に追加
    return image, [r.to_layout() for r in placed]
段階手段閾値/規則
顔avoidBlazeFace bbox+口circle r=28px口は最重量・絶対不可侵
見せ場avoidstatic saliency > 0.6 を禁止域へgrounding bboxは0.9倍縮小して使う
読み順右上→左下 Z/逆N、speaker_index付与コマ内優先→コマ間
級数縮小16→14→12→10級10級未満は枠外リーダー線へ
重なり回避placed済bboxもforbiddenに追加(greedy)balloon間IoU=0で配置

06収益試算(パイプラインが変えるもの)

本パイプラインは「売る製品」ではなく内製ライン。価値は写植工数の削減と月産ページ数の増加・単価維持に出る。

4.5h→12分
1ページ写植工数
(手動→自動+確認)
8→65
月産可能ページ数
(工数削減89%)
¥0.1〜1
1ページ当たり
API内製コスト
+¥15.6万
月粗利増(試算)
※下表前提
項目従来(手動)本パイプライン
1ページ写植時間約4.5時間約12分(VLM+生成+配置+確認)
月産ページ(写植律速)約8ページ約65ページ
1ページ内製コスト人件費のみgrok-4.3解析/生成 ¥0.28+ローカルVLM ¥0
単価(CG集/ページ換算)維持維持(品質ゲートで下げない)

前提:VLM/manga-ocr/MediaPipe/PIL/OpenCVは全てローカル(¥0)。課金はgrok-4.3のシーン要約+セリフ生成のみ(1ページ数回呼び=quick_check $0.001前後)。100点必達ページのみ品質ゲートでgrok-4.3フル採点を回す(1ページ ¥1未満)。「文脈一致セリフ+自動配置+自動検証」を機械が担い、人は最終確認だけに絞れるのが粗利源泉。

07リスクと緩和策

リスク症状緩和策
VLM話者誤判定別人のセリフが生成される口開き+視線+面積最大の3条件+2モデル一致でconfidence、低信頼は人間確認フラグ
セリフ文脈ズレ・固定句病絵と無関係/テンプレ台詞scene.json必須注入+「固定句禁止」明示+品位ガード前処理(§05)
配置はみ出し/重なり枠から飛び出す・被る級数3段縮小→枠外リーダー線フォールバック+placed逐次forbidden化
OCR可読落ち写植文字が機械にも読めない事前にmanga-ocrシミュレーション→0.90未満なら級数/字間を上げて再描画
4AIスコアのブレ同じ絵で点数が揺れる絶対点を廃止しペアワイズのみ。順序入替で position bias を平均化[10]
VLM position bias左/先の選択肢に偏る5回×順序入替、勝率で判定(§品質ゲート)
縦書きレンダ崩れPillow ttbで字がずれるHarfBuzz/Pangoで縦組シェイピング(§10落とし穴)[12]
品位事故立ち絵に喘ぎ/男声混入is_sex_scene / 男在席をロジック判定して生成前に遮断[14]

0830日プラン(MVP→改善・週次マイルストーン)

実装タスク(関数名)DoD(受け入れ基準)MVPで切る/後回し
Week1
配置MVP
D1-3 build_forbidden_mask()(顔+saliency+枠margin)
D4-5 place_all_balloons() 距離変換版+縦書き描画
単一コマで10行以内が顔/見せ場を避け重ならず配置される切る:SFX・効果線・多コマ
Week2
品質ゲート
D6-8 gate_ocr()(manga-ocr+Levenshtein 0.90)
D9-10 pairwise_vlm_judge()(順序入替)
50枚でpass率85%以上、failが正しくリカバリへ戻る後回し:4AI複数モデル化(まず1VLM)
Week3
SFX/効果線
D11-14 sfx_layer()(フォント→閾値→筆圧→縁取り)
D15 fx_concentration/betaflash()
手描き化SFXが5パターン+絡みコマのみベタフラ発火後回し:動くSFX(APNG)
Week4
解析統合
D16-20 build_scene_json()(Florence-2+Qwen2.5-VL)
D21-25 複数フキダシgreedy+リカバリループ
D26-30 全体結合テスト+ゲート集約
文字なし1ページ投入→完成ページがpassで出力後回し:縦読みwebtoon対応・WebUI

最初に作るのは scene.json 生成器と配置器。セリフ生成と配置が繋がれば「中身の薄い完成ページ」が出る=検証ループが回り始める。SFX/効果線は見栄えなので後段でよい。

09撤退ライン(この自動化方針を見直す閾値)

指標撤退/見直しライン意味
写植スコア2週間連続で85未満自動配置だけでは上限不足→手動ハイブリッドに切替検討
OCR可読率95%未達が常態化縦書きレンダ/級数設計の根本見直し
工数削減率70%未満「人間確認フラグ」が多すぎ=VLM精度不足。解析を上位モデルへ
品質ゲート勝率参照プロ作品にペアワイズ勝率35%未満が固定配置/フキダシの質的限界。SFX/手描き化を強化 or 部分手動
VLM話者誤判定率20%超scene.json生成が信用できない=全工程の前提崩壊。話者推定を再設計

撤退=全廃ではなく「どこまで自動・どこから手動」の線引きを引き直すサイン。例えば配置だけ自動・セリフは人間、など段階的縮退を許容する。

10落とし穴(実装で必ず踏む地雷)

地雷現象回避策
Pillow ttbバグ日本語縦書きで字が左下にずれ重なる[12]PIL直描きをやめHarfBuzz/Pango+Cairoで縦組シェイピング。縦書きはシェイピング方向をttbに変換してからシェイプ
合体マスク継ぎ目衝突丸としっぽの境界に線が出る/欠ける線を描かずシルエット→膨張→引き算で外周リングだけ輪郭化。引き算時1pxバッファ[14]
焼込SFX混在元絵に既に文字が焼込まれているmanga-ocrで焼込検出→inpaintでクリーン除去してから写植[7]。原則は文字なし生成を徹底
VLM position bias採点が先/左の選択肢に偏る絶対点を捨てペアワイズ+順序入替×5回平均[10]
固定句病絵を見ずテンプレ台詞scene.json必須注入+品位ガード(§05)
被覆率の罠顔を避けたつもりが口にかぶる口landmarkを独立した重い禁止域に。IoUは「顔3%/見せ場8%」で別閾値
greedy配置の枯渇後半のフキダシで空きが尽きる大きい/重要セリフから先に配置。枯渇時は枠外リーダー線フォールバック
grok_router課金罠旧slug指定でgrok-4.3価格にリダイレクト課金kindで指定(quick_check/dr_world_top等)。コストは自動ログ記録[15]

10b品質ゲート完全実装(100点未満を自動で弾く)

VLMは「順位は付けられるが点数は付けられない[10]。よって品質ゲートは絶対点を信用せず、客観測定2本(OCR・被覆)+ペアワイズ1本のANDで切る。

def quality_gate(final_image, script, masks, placed_balloons, anchors):
    R = {}
    # --- ゲート1: OCR可読率(写植した文字を再OCRして一致を見る) ---
    tot = 0.0
    for bb, line in zip(placed_balloons, script.lines):
        crop = crop_region(final_image, bb)
        ocr  = manga_ocr(crop)                       # 多行OCR [2]
        tot += levenshtein_ratio(normalize(ocr), normalize(line.text))
    R["ocr"] = (tot/len(script.lines)) >= 0.90       # FAIL: 級数/字間↑で再描画

    # --- ゲート2: 被覆率(顔/見せ場マスクとフキダシのIoU上限) ---
    bmask = union_masks(placed_balloons)
    face_ov = overlap_ratio(masks["face"], bmask)    # 重なり面積/フキダシ面積
    sal_ov  = overlap_ratio(masks["saliency_high"], bmask)
    R["face"]     = face_ov < 0.03                    # 顔にかぶったら即FAIL
    R["saliency"] = sal_ov  < 0.08                    # 見せ場は8%でWARN→確認

    # --- ゲート3: 4AIペアワイズ(自作 vs 参照プロ作品・rank/ルブリック) ---
    wins = 0; N = 5
    for k in range(N):
        a, b = (final_image, anchors[k]) if k%2==0 else (anchors[k], final_image)  # 順序入替
        winner = vlm_pairwise(a, b, rubric=[
            "可読性","フキダシ自然さ","顔/見せ場の被覆","SFX/効果線","全体プロ度"])
        wins += (winner == "final")
    R["vlm"] = (wins/N) >= 0.50                       # 絶対点は使わない [10]

    return all(R.values()), R
ゲート測定閾値FAIL時の自動リカバリ
① OCR可読率再OCR×Levenshtein正規化一致≥ 0.90級数↑/字間↑で再描画→再OCR
② 顔被覆顔マスク∩フキダシ 面積比< 3%greedy再配置(別空き矩形へ)
② 見せ場被覆saliency_high∩フキダシ< 8%(超=WARN)WARN→人間確認フラグ
③ 4AI勝率vs参照プロ ペアワイズ×5順序入替≥ 50%配置/フキダシ/SFXを再生成

集約:全ゲートANDでのみpass。FAIL項目ごとに対応リカバリへ戻し最大3周ループ、それでも落ちれば人間確認フラグを立てて停止(無限ループ・自己申告passを防ぐ)。参照プロ作品アンカー集(売れ筋teardown済み)を10〜20枚用意しておくのが前提[7]

10c描き文字SFX・効果線の自動付与+VLM解析精度

描き文字SFX(焼込でなくPIL後処理レイヤー)

  1. 感情/動作 → SFX語彙マップで語を選ぶ(絡みコマのみ解禁)
    挿入: ぬぷ/ぐっ/ずぶ絶頂: ビクッ/イッ動作: パン/ずん日常: コトッ/ぱぁっ(環境音はソロ可)
  2. PILでSFX文字描画(手描き寄りフォント)→ ②閾値+モルフォロジーでエッジ抽出 → ③筆圧/かすれシミュレーション(ガウスぼかし+ノイズ)→ ④縁取り(白2px→黒1px)。焼込まず別レイヤーで合成=規約クリーン・再編集可[13]
  3. 配置:動作主体bbox近傍(距離<40px)の空き矩形。既存フキダシとIoU>0.1なら即シフト。

効果線の自動付与(条件分岐)

if sal_peak > 0.75 and stage >= 4:  add_concentration_lines(panel)   # 集中線(放射ブラー)
if motion_vec(speaker) > 30:        add_speed_lines(panel)           # スピード線
if stage == 5 and is_sex_scene:     add_betaflash(panel)             # ベタフラ(放射状黒)[14]

VLMシーン解析の精度設計(誰が話者か・ステージ判定)

11既存資産活用(要素DRを1本に束ねる)

本パイプラインは新規実装が主ではなく「散在する要素DRと現行エンジンの統合」。各要素を scene.json/script.json/layout.json という共通I/Fに接続するのが本DRの役目。

流用する既存資産接続点
④⑤ フキダシ/配置CC3 _remote_compose_v2+合体マスク+ベタフラ+SFX-FX(既存DR:フキダシ透過PNG/顔回避配置/合体マスク方式[14]layout.jsonを入力に取る形へ薄くラップ
③ セリフ生成CC1キャラ人格プロフィール(偏愛/口調/3サイズ)+grok_router[15]system promptへ人格注入
② 解析既存DR:文字なし後写植WF / 焼込除去実務[6][7]scene.json生成器に集約
⑥⑦ SFX/効果線既存DR:描き文字SFX手描き化/集中線素材/ベタフラFX[13]PIL後処理レイヤーとして発火条件で呼ぶ
⑧ 品質ゲート既存3AI/4AI評価ハーネス(grok/gemini/qwen)[15]、売れ筋teardownアンカー[7]ペアワイズ判定に転用

統合の唯一のルール:各要素は scene/script/layout.json 以外で会話しない。これで「どのDRの成果も差し替え可能なモジュール」になり、パイプライン全体が壊れにくくなる。

関連DR一覧(統合元・本DRが束ねる主な既存DR)

※これらは「部品」DR。本DRはそれらを順序立てて1本のpass/fail付きラインに編成する「アーキDR」として差別化される(既存と重複せず統合視点)。

12参考文献(脚注・全URL)

  1. Microsoft Research, "Florence-2: Advancing a Unified Representation for a Variety of Vision Tasks"(region description / OD / grounding / OCR・MIT・0.23/0.77B)— https://arxiv.org/pdf/2311.06242
  2. kha-white, "manga-ocr"(日本語マンガ向け多行OCR・VisionEncoderDecoder)— https://github.com/kha-white/manga-ocr
  3. Alibaba product insights, "AI-Powered Comic Book Lettering Tools vs Manual Placement"(Blambot AutoLetter等の自動配置ヒューリスティック・顔回避の限界)— https://www.alibaba.com/product-insights/ai-powered-comic-book-lettering-tools-vs-manual-placement-do-speech-bubble-algorithms-respect-reading-flow.html
  4. Yang et al., "Automatic Comic Generation with Stylistic Multi-page Layouts and Emotion-driven Text Balloon Generation"(感情駆動フキダシ・読み順を崩さない配置最適化)arXiv:2101.11111 — https://arxiv.org/pdf/2101.11111
  5. "Deep CNN-based Speech Balloon Detection and Segmentation for Comic Books"(U-Net系フキダシ検出/分割)arXiv:1902.08137 — https://ar5iv.labs.arxiv.org/html/1902.08137
  6. Optimized speech balloon placement for automatic comics generation(intra/inter-panel cost・話者顔を避ける配置目的関数)ACM — https://doi.org/10.1145/2505483.2505486
  7. Towards Data Science, "Florence-2: Mastering Multiple Vision Tasks with a Single VLM Model"(region/OCR/caption実践・後段結合の参照)— https://towardsdatascience.com/florence-2-mastering-multiple-vision-tasks-with-a-single-vlm-model-435d251976d0/
  8. Qwen Team, "Qwen2.5-VL"(3B/7B/72B・空間localization・レイアウト読解・GPT-4o/Claude級)— https://qwenlm.github.io/blog/qwen2.5-vl/
  9. Google MediaPipe, "Face Detection"(BlazeFace・顔bbox+keypoint・超軽量)— https://github.com/google-ai-edge/mediapipe/blob/master/docs/solutions/face_detection.md
  10. "VLM Judges Can Rank but Cannot Score: Task-Dependent Uncertainty in Multimodal Evaluation"(絶対点不可・position bias・ペアワイズ推奨の根拠)— https://arxiv.org/html/2604.25235v1
  11. PyImageSearch, "OpenCV Saliency Detection"(StaticSaliencySpectralResidual・見せ場検出)— https://pyimagesearch.com/2018/07/16/opencv-saliency-detection/
  12. python-pillow/Pillow Issue #2656「Japanese font glyph with direction ttb is drawn to incorrect position」(縦書きttbバグ→HarfBuzz/Pango推奨)— https://github.com/python-pillow/Pillow/issues/2656 / HarfBuzz×Cairo統合 — https://harfbuzz.github.io/integration-cairo.html
  13. PythonFAQ, "How to draw shapes and text on images using Pillow"(PILレイヤー描画・後処理SFXの基礎)— https://www.pythonfaq.net/how-to-draw-shapes-and-text-on-images-using-pillow-in-python/
  14. CC3 既存ナレッジ:合体マスク方式フキダシ/立ち絵ソロに喘ぎ・男言葉を出さない品位ガード(社内feedback:feedback_union_mask_bubble_method_2026-06-11 / feedback_moan_sfx_only_in_sex_scene_2026-06-11 / feedback_male_speech_only_in_sex_scene_2026-06-11)
  15. CC内製:grok_router.py(kind別モデル選択・コスト自動ログ・grok-4.3)/CC1キャラ人格プロフィール資産(社内:D:\projects\fanza3_mass\scripts\grok_router.py 他)

起草: grok-4.3(dr_world_top+dr_long)| 推定コスト: 約 ¥208($1.385=§下書き$0.705+深掘り$0.680)| 1次情報15ソース| 重複: 近接要素DR多数 → 統合アーキDRとして新規発行