先把当时的情况摆出来。印刷稿是 CMYK 的 tif,转成 jpg 直接送模型问主色调,模型答深蓝,实际是墨绿,取色值发现文件里还是 0,80,100,40 的 CMYK 通道。

排查方向其实有限,先把可能性排一排。CMYK 没有转成 sRGB 就送去识别。还有一种是ICC 配置在导出时被丢弃。

另外,模型只接受 8 位 RGB,通道被当灰度。少数情况下是透明通道被当成黑色叠加。

第一件事是确认色彩空间和位深

magick identify -verbose art.tif | grep -E 'Colorspace|Depth|Profile'

带 ICC 转成 sRGB 再导出

magick art.tif -profile sRGB.icc -depth 8 -quality 92 art_srgb.jpg

取几个点核对转换后的色值

magick art_srgb.jpg -format '%[pixel:p{100,200}]' info:

等前面都确认过,再重新提问并记录模型判断

python vision.py --image art_srgb.jpg --prompt "主色调是什么,给出近似色值"

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

别只看报错消失,验证要多做一步。转换后的图色彩空间是 sRGB,取色值与设计稿一致,模型给出的主色调和色值都能对上。

这里还有个坑。色彩空间不对时模型看到的是通道错位后的假颜色,问题不在识别能力,转换时把 ICC 一起带上。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189