做电商这几年,最烦的事情不是什么大促备战,而是上架前那堆商品资料包。标题、卖点、详情页、参数表、资质证书、价格说明,动不动就是五六份文档配一张主图,人工逐字核对眼睛都能看花。前阵子我实在受不了这种机械劳动,直接用 Qwen3.8-Max 搭了个电商商品资料包体检助手,拿一批 6 份资料加 1 张商品图的真实数据跑了一次,一次就查出了 27 个问题,其中有几个是平台审核绝对会打回的硬伤。这篇文章就把这套东西从设计思路到实操代码全部拆开讲清楚。
这个助手适合谁?适合每天要处理大量商品上架素材的运营、负责店铺合规审核的同学,也适合想搞清楚大模型在垂直业务场景里到底怎么落地的开发者。你不需要有很深的技术底子,但如果你能看懂 Python 基础语法,那这套流程你完全可以自己复现。
1. 这个体检助手到底在查什么
1.1 电商商品资料包的真实构成
在做任何自动化工具之前,先把"资料包"这三个字拆开看。电商平台上架一个商品,尤其是有一定客单价、需要走正规审核的商品,通常需要下面这堆东西:
- 商品标题文档:一般由运营拟稿,包含品牌词、品类词、卖点词和规格信息
- 五点描述/卖点文案:也就是详情页最上面的那几条短描述,通常4到6条
- 详情页长文案:包含场景介绍、功能说明、材质工艺、售后承诺等
- 参数规格表:从标题、卖点、详情页里抽出来的结构化参数,如尺寸、重量、材质、颜色
- 价格与促销说明:日常价、活动价、优惠券门槛、赠品信息
- 资质证书:质检报告、3C认证、品牌授权书等,多为扫描件或照片
外加一张主图或详情页合成图,图上会有文案、参数标注、促销标签。
这堆资料看似各管各的,实际上有大量信息是交叉重复的。标题里写了"30000mAh",参数表里写"3000mAh",详情页里又写"30000mAh"——这种低级矛盾,人工看一遍根本发现不了,因为没人会把这六份文档并排逐字比对。
体检助手做的事情就是把这些文档全部喂给大模型,让模型以合规审核员的视角,跨文档逐项核对,把所有可疑点一次性列出。
1.2 人工审核的痛点在哪里
这套工具并不是为了炫技,而是因为人工审核有四个绕不过去的坑:
第一,效率低。一份资料包完整核对一遍,快则20分钟,慢则40分钟。如果是新品上架高峰期,一天200个SKU,光审核就要耗尽一个组的人力。
第二,标准不统一。同样是标题里的"顶级""极致""第一"这类词,有的审核员认为没问题,有的认为有广告法风险。人工判断受个人经验影响太大。
第三,跨文档一致性查不动。人脑适合做"点对点"的检查,比如看看标题有没有错别字。但要做"多点交叉比对",比如标题、卖点、参数表、详情页四处信息是否完全一致,这是反人性的。
第四,资质时效性没人盯。很多资料包里附带质检报告,但报告的有效期、送检单位、检测项目是否匹配,运营往往不看,审核员也不一定逐份核对。
这四点正好是大模型擅长的事。Qwen3.8-Max 这类模型有很长的上下文窗口,能把多份文档一次性吃进去,再加上多模态理解能力,图片上的文字信息也能抽取出来参与比对。这本质上不是技术驱动做工具,而是业务需求驱动选技术。
2. 技术选型:为什么是 Qwen3.8-Max 而不是本地小模型
2.1 模型能力与任务的匹配度
技术圈有个误区,觉得凡是做个工具就应该本地部署开源模型,防止数据外泄,省API费用。但在商品资料包审核这个场景下,本地小模型其实很难胜任。
原因在于任务复杂度。这不是简单的关键词匹配或文本分类,而是多文档联合推理。你需要让模型同时读完六份文档,理解每一处描述的业务含义,再去做交叉一致性判断。这考验的是长文本建模能力和逻辑推理能力,而不是单纯的"分词+意图识别"。
我用 Qwen3.8-Max 做了一次对比实验。同样一份资料包,用 7B 量级的本地量化模型跑,结果就是灾难性的——模型记住了标题里有"30000mAh",参数表里也有数据,但就是没意识到两个数值不一致。它更擅长"这一段文本说了什么",而不是"这几段文本之间是否有逻辑冲突"。
而 Qwen3.8-Max 之所以表现好,首先是上下文窗口足够大,完整吞下六份文档加一张图没有压力;其次是模型的指令跟随能力强,只要告诉它按照什么标准、什么格式输出,它就能严格照办。这对需要结构化结果的应用场景非常关键。
2.2 关于数据安全与成本控制的平衡
有人会问,把商品资料包传给云上API,数据安全怎么办?这个问题要分情况看待。
对于一般电商商家,商品标题和卖点文案算哪门子机密?平台审核员每天看的内容比这多得多。真正需要担心的不是资料本身,而是用户数据和内部系统日志。所以我在设计这个助手时,只把商品相关文档发给模型,全程不传会员信息、订单数据,从源头规避隐私问题。
成本方面我实测过,一份资料包大约消耗 6000 到 9000 个 token,按 Qwen3.8-Max 的定价算,单次成本在几分钱到一毛多钱。相比人工审核的时间和精力成本,这几乎可以忽略不计。如果你一天要跑几百个 SKU,一天的成本也就十几二十块,完全在可接受范围内。
当然如果你对数据安全要求极其严格,且预算充足,可以用私有化部署的 Qwen 系列模型走同样的提示词流程。但那是另一个量级的投入,对大部分团队来说,API 方案是性价比最优解。
3. 提示词设计与输出结构:决定工具能不能用的关键
3.1 提示词模板
整个工具最核心的部分不是代码,而是提示词。我在迭代过程中发现,提示词写得越流程化,模型输出就越稳定。下面直接放出我打磨过几版的模板。
你现在是一名资深电商合规审核专家,拥有5年平台商品审核经验,熟悉广告法、电商平台规则及商品资质要求。 我会给你一份商品资料包,包含标题文档、卖点描述、详情页文案、参数规格表、价格说明、资质证书文字版以及商品主图上的文字信息。 请按以下检查项逐一核对,输出最终结果: 1. 广告法违禁词检查:标题和卖点中是否存在"最"、"第一"、"顶级"、"极致"、"绝对"等极限化用语 2. 参数一致性检查:对比全文档中的同一个参数在不同位置的数值是否一致 3. 标题规范性检查:标题是否包含品牌词、品类词、核心卖点、规格参数,是否有堆砌或语病 4. 卖点可验证性检查:卖点描述中的功能承诺是否在参数表中有对应支撑 5. 资质匹配检查:质检报告或认证证书的检测项目、产品名称、型号是否与商品一致 6. 价格逻辑检查:日常价、活动价、优惠券之间的关系是否合理,是否存在立减后反而更贵的情况 7. 图片与文档一致性检查:主图上的参数、促销文案是否与文档中的描述一致 输出要求: - 以JSON数组格式返回,不要输出任何其他内容 - 每个问题对象包含字段:check_type(检查项类型)、level(问题等级:critical/warning/suggestion)、location(发现问题的具体位置,如"标题文档")、issue(问题描述)、evidence(依据原文片段)、suggestion(修改建议) - 如果某项没问题,不要输出该项这个模板的核心设计思路,是把"审核标准"显式地写进去,而不是让模型自己发挥。你必须在提示词里告诉模型"什么算问题",它才知道怎么找问题。比如广告法违禁词,如果你只写"检查违禁词",模型可能会漏掉"级别"这类需要结合上下文判断的词。把具体词例列出来,召回率会明显提升。
3.2 输出格式约束的精妙之处
可能有人问,为什么非要 JSON 格式?直接让模型用自然语言写报告不就行了吗?
自然语言报告有两个问题。第一,格式不统一,有的问题描述很详细,有的问题描述很潦草,后续程序解析全靠正则匹配,极其痛苦。第二,不利于生成 Excel 表格或自动统计问题数量。JSON 结构化输出之后,每个问题都有明确的类型和等级,代码可以直接按等级筛选、按类型分组。
我实测过,加了"只输出 JSON"这句话之后,模型的输出稳定性大幅度提升。偶尔还是会出现 JSON 里夹杂解释文字的情况,但整体可靠性已经足够日常使用。
3.3 多模态图片信息的处理方式
上面提到商品主图也要参与检查。Qwen3.8-Max 支持图片输入,但我在实践中发现,直接把图片作为多模态输入传给模型,识别结果偶尔会丢细节,尤其是图片上一堆小字的情况。
为了保险起见,我会先用 OCR 能力把图片中的文字抽取出来,整理成纯文本,和文档一起传入模型。这一方面降低了模型处理多模态输入的负担,另一方面也让图片中的关键词能被明确地定位到"图片位置",后续如果发现问题,可以直接追溯到图上的某个角落。
抽取完的文字会加上一行前缀:"以下内容来自商品主图OCR识别结果,位置信息包含左上、右上、居中、下方等标识。" 这样模型就知道这段文字是图片上的内容,而不是文档的一部分,比对时不会混淆来源。
4. 实操过程:从原始资料到27个问题
4.1 数据准备与文件解析
我拿一个真实的移动电源商品资料包做测试,里面有6份文档和1张主图。这6份文档分别是标题文档、五点描述、详情页文案、参数规格表、价格促销说明、质检报告信息页。
第一步先把这些文件统一处理成纯文本。Excel 和 Word 文件用 Python 的 openpyxl 和 python-docx 库读取,PDF 文件用 pdfplumber 提取文字。处理完之后,给每份文档加一个文件标识前缀,方便模型在输出问题位置时能准确指认。
import openpyxl from docx import Document def read_excel(path): wb = openpyxl.load_workbook(path, data_only=True) ws = wb.active rows = [] for row in ws.iter_rows(values_only=True): row_text = " | ".join([str(c) for c in row if c is not None]) if row_text.strip(): rows.append(row_text) return "\n".join(rows) def read_docx(path): doc = Document(path) return "\n".join([p.text for p in doc.paragraphs if p.text.strip()])4.2 文件命名规范
这只是读取逻辑,真正麻烦的是文件命名。第一次跑的时候,我把所有文件命名为"1.docx"、"2.xlsx"这种,喂给模型之后发现有些输出根本没法用,模型只能模糊地提到"文档1里有问题",但它自己也分不清文档1到底是标题还是参数表。
后来我改成"标题文档.txt"、"参数规格表.txt"这种含义清晰的名字,模型的表现立刻好了很多。这背后其实是给模型提供了更明确的定位锚点。在输出问题位置时,模型会直接写"参数规格表:容量参数与标题文档不一致",人工确认时可以秒定位。
4.3 提示词的微调过程
第一轮跑完,输出结果虽然结构正确,但问题出在"粒度"上。模型把一些我认为不算问题的问题也列了出来,比如"标题文档中使用了感叹号,可能不符合部分平台风格"。这种建议本身没错,但没什么用,因为运营根本不会因为一个感叹号去改标题。
于是我在提示词里加了一句话:"仅报告可能影响审核通过率、消费者信任度或合规风险的问题,轻微格式问题不要报告。" 调整之后再跑,输出质量明显提升,留下来的基本都是值得改的问题。
4.4 最终输出:27个问题的完整拆解
这一轮跑完,模型一口气输出了27个问题。我按等级和类型做了分类,真实性截图就不放了,直接看表格:
| 问题等级 | 数量 | 典型问题 |
|---|---|---|
| critical(严重) | 6 | 广告法违禁词"第一"出现2次;标题中容量"30000mAh"与参数表"3000mAh"不一致;质检报告产品名称与商品名称不一致 |
| warning(警告) | 9 | 卖点描述"支持华为快充"在参数表中没有对应协议说明;价格描述"立减100元"但未标明原价;主图上"二年质保"与文档中的"一年质保"不一致 |
| suggestion(建议) | 12 | 标题关键词堆砌;参数表缺少无线充电标准;详情页部分句式重复;资质证书有效期即将到期需更新 |
这27个问题里,最典型的莫过于容量参数冲突。标题文档里写的是"30000mAh",参数规格表里写的是"3000mAh",详情页文案里又写了一次"30000mAh"。如果是人工审核,你得把三份文档放在一起才能发现,而且稍不留神就会漏掉。模型交叉比对后直接指出这个冲突,效率完全是另一回事。
另外质检报告的问题也比较有意思。报告上的产品名称写的是"便携式移动电源",而商品标题里用的是"充电宝",模型判断这两个名称在电商审核语境下并不完全等价,建议确认是否需要提供补充材料。这种判断能力已经超出了简单的关键词比对,是真正理解了业务场景之后才能给出的建议。
5. 常见问题与排查技巧实录
5.1 模型输出 JSON 格式不稳定的问题
最大的坑就是模型偶尔会在 JSON 之外输出额外文字,比如"根据您的要求,以下是检查结果:"。虽然这是少数情况,但一旦出现,程序解析就会报错。
我的解法分两层。第一层在提示词里强调"只输出 JSON,不要输出任何其他内容";第二层在代码里做防御性处理,用正则把 JSON 部分截取出来。
import json import re def extract_json(text): match = re.search(r"\[.*\]", text, re.DOTALL) if match: try: return json.loads(match.group()) except json.JSONDecodeError: return None return None正则没匹配到就重试一次,重试时把"只输出JSON"的约束再强化一遍。实际跑下来成功率在95%以上,完全够用。
5.2 长文档被截断导致的漏检
商品详情页如果写得比较详细,各种段落加起来可能超过一万字。虽然模型的上下文窗口很大,但如果同时塞入多份文档,偶尔也会出现长文本处理不完整的情况。
我试过把详情页拆成两段分两次跑,结果发现拆开之后模型容易丢失前后文联系,比如前面的卖点承诺和后文的技术参数相互呼应,拆开后就对不上了。
最优方案是:优先保证标题文档、参数规格表、卖点描述这三份核心文档完整输入,详情页长文案如果有截断风险,就删减掉重复的场景描写段落,保留与参数、功能、资质相关的关键段落。实测下来信息丢失很小,一致性检查的效果基本不受影响。
5.3 模型幻觉问题
大模型有时候会"脑补"出一些文档里不存在的问题。比如有一轮跑的时候,模型说"标题文档中写了100%纯棉,但参数表中材质显示为聚酯纤维",结果我打开两份文档检查,发现参数表里根本没有材质这个字段,参数表压根没写材质。
这就是典型的模型幻觉。解决办法是要求模型在输出 evidence 字段时,必须原样引用文档中的真实文本,不能转述或改写。我在提示词里加了一句话:"所有证据必须逐字引用原文,如果找不到原文支撑,不要报告该问题。" 加了这条之后,幻觉概率大幅下降。
另外在代码里可以加一道校验:把模型输出的每个 evidence 和原文做关键词匹配,匹配度低于阈值的自动过滤掉。
5.4 资质证书扫描件识别精度不达标
质检报告通常是一张扫描图片,里面的文字角落会有褶皱或反光,直接丢给大模型识别,效果确实不如专业的 OCR 服务稳定。
我在实际操作中把资质证书先跑一遍高精度的 OCR 识别,识别出来的文本和商品资料一起喂给模型做逻辑判断。比如 OCR 识别出"送检单位"、"产品型号"、"检测结论"等字段,模型就能快速比对商品信息是否匹配。这一步其实是在做信息提取和逻辑校验的分离——OCR 负责把图变成文字,大模型负责理解文字之间的逻辑关系,各干各的活儿,效率最高。
6. 进阶玩法:从体检到自动整改
6.1 一键生成整改报告
既然模型能输出 JSON 格式的问题列表,那就可以进一步做自动化处理,把这些问题渲染成一份结构化的 Excel 整改报告,直接发给运营同学。
我在实际项目里用 openpyxl 生成了一个表格,包含序号、问题等级、检查项类型、具体位置、问题描述、原文证据、修改建议、处理状态八个字段。运营同学拿到表格之后,逐条确认修改即可。这个表格同时也可以作为审核留痕记录,后续如果需要向平台申诉,直接就能调出当时的证据链。
6.2 自动改写违规文案
进阶玩法是把"体检"升级成"诊疗"。当模型发现标题里包含"第一"这种违禁词时,直接让它给出三个改写版本。
我在测试中发现,模型的改写质量相当不错。比如原文标题"全网第一轻薄移动电源",改写后变成"轻至200g的便携移动电源",不仅去掉了违禁词,还保留了具体数字支撑卖点。
自动改写不能完全替代人工确认,因为品牌调性和运营风格还是需要人工把关,但它至少能把"从零开始改"变成"从三选一",效率提升同样很明显。
6.3 后续扩展方向
这个工具目前只做了文字维度的检查,后续还可以加入更多能力。比如接入商品知识库,让模型知道某个品类有哪些合规红线;或者接入平台规则更新提醒,动态拉取最新审核规则注入提示词。
我自己接下来准备把流程做成一个定时任务,每天自动扫描当天要上架的商品资料包,输出体检报告后推送到飞书群。这样运营同学早上到公司打开飞书就能看到哪些商品有风险、风险在哪、怎么改,一整个流程就完全跑起来了。
最后再分享一点我的个人体会。这类工具刚做出来的时候,第一次跑出的27个问题里,真正严重的只有6个,大部分人可能觉得"准确率也不高嘛"。但你要想的是,它帮你省掉了逐份文档翻找的时间,而且它永远不累、永远按统一标准执行。工具的意义不是替代人的判断,而是把人的精力从低级重复劳动里解放出来,让人能专注于更重要的决策。这个思路放在电商资料审核上适用,放在其他任何需要大量核对与交叉比对的场景里,同样适用。