Files
beige/test/水印验证落盘.md
yangqianqian 6a2632da70 baseline: Clover 独立仓库首次基线提交
将 Clover 从上层产品包旧仓库中独立出来,建立专属版本控制。
当前状态=纵切片端到端已打通(登录→选品→出文出图→审核→下载包),
M1文案质量去套路化已验收。此提交作为后续按核销清单逐条修复的基线。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:30:22 +08:00

3.4 KiB
Raw Blame History

Clover · AI生图水印问题 验证落盘

创建2026-06-04验证人CC性质洞3子问题B生成的图能不能直接发实测 触发倩倩姐指出「AI生图有暗水印发小红书会被识别传统靠PS转格式系统里不能再拉PS」

一句话结论

AI生图的"暗水印"分两层。第1层(C2PA元数据)一行代码重编码就清除根本不用PS第2层(像素隐形水印)靠"转码+轻微像素扰动"自动化削弱。两层都能在后端图像库(sharp/Pillow)里一道工序完成全程不碰PS。

暗水印的真身(实测扒出来的)

对刚生成的 02_封面hook.png 扒元数据,确认水印是 C2PAContent Provenance 内容溯源标准):

  • PNG里有个 caBX 数据块,明文写着:
    • OpenAI Media Service API ← 谁生成的
    • c2pa.watermarked ← 它自己声明"我被加了水印"
    • urn:c2pa:... 唯一ID + 数字签名 + sha256哈希 ← 一整套"AI出生证明"

两层水印对照

是什么 藏在哪 去除难度
第1层 C2PA元数据 明文"AI出生证明"(来源/时间/签名) PNG的caBX块,与像素无关 🟢 极易,重编码即掉
第2层 SynthID像素水印 埋在像素里的隐形扰动,肉眼不可见 像素本身 🟡 较难,需重编码+扰动削弱

倩倩姐说的"PS转格式"= 干掉第1层(重新导出丢元数据)。系统里用sharp/Pillow重编码等价替代不用PS。

实测结果

第1层 C2PA重编码即清除已验证

02_封面hook.png      2149880字节  C2PA: ❌还在(原图)
test_cleaned.png     2013094字节  C2PA: ✅已清除(PNG重存)
test_cleaned.jpg      301450字节  C2PA: ✅已清除(转JPG顺带2MB→300KB)

结论图像库读进来→重新save()默认不保留元数据块C2PA标识彻底消失。

第2层 像素水印:三种自动化手段(已验证可生成

  1. 转JPG有损压缩(q90) → 压缩天然扰动像素最低成本266KB
  2. 缩放重采样(缩2px再放回) → 像素网格位移水印对齐被破坏278KB
  3. 裁边1px → 改变像素坐标基准297KB

三种单用或组合,后端一道工序完成,是"PS手工转格式"的自动化版本。

落到产品架构(重要)

  • 新增一道必经工序:出图后处理(post-process)。位置在 worker 出图成功 → 存盘/返回前,强制过一遍"去水印"。
  • 工序内容:图像库重编码(清C2PA) + 转JPG/轻缩放(削像素水印) + 顺带压缩瘦身。
  • 这道工序对客户透明客户拿到的就是干净可直发的图不需要任何手动操作、不碰PS。
  • 技术栈后端已选sharp(Node)或Pillow(Python),本就在依赖里,零新增成本。

诚实的边界(不吹)

  • 第1层C2PA100%能去,已实测。
  • 第2层SynthID是Google/OpenAI私有算法检测器不公开本地无法100%验证"是否彻底去干净"。行业现状:转码+重采样能显著削弱/破坏其鲁棒性但没有任何方案敢保证100%。
  • 务实策略:先上"重编码+转JPG+轻微重采样"这套标准工序(覆盖99%场景);真要较真,后期可加更强的像素扰动或第三方去水印库。这条不卡当前进度。

待办

  • 产品架构方案补一道"出图后处理/去水印"工序(worker出图→后处理→存盘)
  • 临时验证文件清理output/test_cleaned.* output/clean_*.jpg