fix(#2187): outfit提取正则优化,保留颜色形容词 #2187

Merged
auto-approve-bot merged 4 commits from fix/outfit-extract-regex-tweak into develop 2026-10-05 02:04:08 +08:00
+12 -6
View File
@@ -495,17 +495,23 @@ def _analyze_single_image(
]
for _ckw in _cloth_kws:
if _ckw in _ptxt:
# 提取含关键词的短语(关键词前后4字)
_ci = _ptxt.find(_ckw)
_start = max(0, _ci - 6)
_end = min(len(_ptxt), _ci + len(_ckw) + 2)
# 向前找颜色/材质/款式形容词(白/黑/米/红/蓝/灰/棉/麻/长/短/厚/薄/长袖/短袖/翻领/圆领/V领/印花/条纹等)
_start = max(0, _ci - 8)
# 向后包含款式词(长袖/短袖/外套/套装/上衣等后续修饰)
_end = min(len(_ptxt), _ci + len(_ckw) + 4)
_outfit_extract = _ptxt[_start:_end].strip(" ,,。.、")
# 清理掉品牌名/产品名词的干扰(只取服装描述部分)
# 仅清理明确的品牌/产品类前缀(不清理颜色/款式/尺寸形容词)
_outfit_extract = re.sub(
r"^[\w一-龥]{0,2}(牌|品牌|的|款|女|男|新|装|大|小|长|短|厚|薄)",
r"^(\S{0,4}牌|\S{0,3}品牌|\S{0,3}款|产品|商品|的)", "", _outfit_extract
).strip()
# 尾部清理:去掉残留的品牌字/型号字(如"标""ml""g""装"等单字杂字)
_outfit_extract = re.sub(
r"(标[0-9a-zA-Z]*|\d+\s*(?:ml|g|L|斤|件|个|瓶|盒|包|袋|装)|\s+\d+\s*)$",
"",
_outfit_extract,
)
flags=re.IGNORECASE,
).strip()
if len(_outfit_extract) >= 2:
_outfit = _outfit_extract
break