标签缺失和批次分组
批量精修文件分组,用Counter定位材质标签缺失
选择 AI 批量精修商品图工具前,可以先问一批图片有没有明确的材质标签。磨砂、透明与金属表面需要不同的观察点,文件随意混在一起,就容易用同一条要求处理全部对象。本文用 Counter 写一个本地标签统计器,列出类别数量与缺少标签的文件。它只定位分组资料,不评估图像,不向生图接口提交任务。
输入是一组字典,每项有 file 和 material。文件名负责定位记录,材质值由编辑根据可靠资料填写;不能靠生成后的画面反推材质。Counter 会按标签计数,缺少或仅含空白的标签进入 missing 列表[2]。函数会去掉标签两端空格,但不会将不同大小写、同义词或不同语言自动合并,因为这些映射需要团队事先确定。
例如 glass 与玻璃是否同一类,应由项目词表决定;透明玻璃与磨砂玻璃是否分开,也取决于处理要求。统计器不替你做这个分类判断。文件字段缺失时直接报错,避免出现无法定位的异常;材质缺失则列为待补,这样两种资料问题得到不同处理。本文的输入契约使用非空文件标识,是否真有对应文件需要另一项检查。
from collections import Counter
def group_material(rows):
counts=Counter();missing=[]
for row in rows:
if not isinstance(row,dict) or not row.get('file'): raise ValueError('file required')
tag=row.get('material')
if not isinstance(tag,str) or not tag.strip(): missing.append(row['file'])
else: counts[tag.strip()]+=1
return {'counts':dict(counts),'missing':missing}
返回值 counts 描述当前记录,不描述实际库存数量。某张图片重复出现会被再次计数,本例不做文件去重;需要去重时,应先明确按文件名、内容哈希还是商品编号比较。缺少材质标签也不意味着商品未知,只说明这份交接记录不完整。将统计结果用于排队前检查更准确,不把它包装成自动识别商品材质的功能。
本地验证使用合成记录,检查两端空格处理、空标签进入待补和缺少文件字段报错。结果只说明代码在这些输入下的行为,没有上传任何商品,也没有对图像生成结果评分。复杂的多材质对象,例如带金属盖的玻璃瓶,应拆成部位说明或例外记录;单一标签可能不够,这需要在批次规划中解决,不靠扩展 Counter 的数字来掩盖。
Picset 产品精修页当前提供多张产品图上传、精修要求和背景等字段[1]。标签统计器可以在它之前帮助整理批次:同类对象共享一段有依据的要求,多材质与特殊结构进入单独队列。公开页面的批量入口不能推导出本文的标签检查器或自动分组能力,也不能证明整批输出都达到同一质量;分组正确只是输入关口。
制作候选后,仍要按材质观察。磨砂表面看颗粒有没有被磨平,透明物体看内外边缘与透光,金属物体看反射有没有遮住结构。一个标签对应的是观察方法,不是保真承诺。若某张商品有明显例外,不因同批其他图片通过而一起放行;保留异常图位与来源,让负责人知道需要改的是要求、底稿还是候选。
给团队交接时,把标签统计、采用图与未核项分开存。修改词表之后重新统计,避免旧标签与新要求不一致。对批量精修工具的选择,也应考察结果命名、例外修订和失败记录是否便于接回本地流程。程序负责让缺少标签的文件显出来,编辑负责材质依据,制作工具负责候选,验收再回到每件商品的实际结构。若文件来自多个目录,先采用稳定的文件标识,再统计标签;同名文件不能靠计数结果判断是否同一张。
参考资料
[1] Picset 当前公开工作室页面