工程材料价格匹配的AI实现:从SKU标准化到供应商推荐
前言
在工程成本核算中,材料价格匹配是最耗人的环节之一。一份清单几百上千项材料,逐项查市场价、对比历史采购记录、选品牌、定价格,一套流程下来少则几天,多则十几天。
更麻烦的是,同一材料不同品牌价格差几倍,信息价滞后,历史数据难以复用。价格不准,成本就算不准,报价就没有底气。
这篇文章从技术实现角度,聊一下工程材料价格匹配的完整链路:从清单中的非结构化材料描述,到标准化SKU,再到供应商推荐和价格匹配。结合工程速算狮小程序开发过程中的实践,拆解每个环节的设计思路和实现要点。
一、整体链路
先看完整流程:
text
非结构化清单 → 材料名称识别 → SKU标准化 → 供应商匹配 → 价格推荐 → 异常项标记
每个环节解决一个具体问题:
| 环节 | 解决的问题 | 输出 |
|---|---|---|
| 材料名称识别 | 清单里的材料名写法不统一 | 结构化的材料名称+规格+参数 |
| SKU标准化 | 同一材料有多个叫法 | 统一的标准SKU编码 |
| 供应商匹配 | 同一SKU有多个供应商和品牌 | 候选供应商列表 |
| 价格推荐 | 多个供应商价格不同 | 推荐价格+推荐理由 |
| 异常项标记 | 匹配不到或价格异常 | 标记出来供人工处理 |
二、材料名称识别:从非结构化到结构化
2.1 问题
工程清单的格式五花八门。同一材料,有的写全称,有的写简称,有的用行业习惯叫法,有的用厂家型号。比如:
-
“镀锌钢管 DN100”
-
“镀锌管 100”
-
“热镀锌钢管 DN100 国标”
-
“天津友发 镀锌钢管 DN100”
这四种写法,指的是同一种材料。但直接拿去做价格匹配,系统会认为是四种不同的材料。
2.2 实现思路
材料名称识别的核心是语义解析+实体抽取。具体做法:
第一步:分词与实体识别
用NLP模型对材料名称进行分词,识别出关键实体:
text
输入:热镀锌钢管 DN100 国标 输出: - 材质:镀锌 - 品类:钢管 - 规格:DN100 - 标准:国标
第二步:属性归一化
把不同写法归一化到统一属性:
| 原始写法 | 归一化后 |
|---|---|
| DN100 | 公称直径100mm |
| 100 | 公称直径100mm |
| 4寸 | 公称直径100mm |
第三步:缺失属性补全
有些清单只写了材料名,没写规格。这时候需要根据上下文补全,或者标记为待人工确认。
2.3 实测效果
在工程速算狮的实测中,消防安装项目的材料名称识别率在90%以上,暖通项目有的能到100%。识别不了的,系统会标记为异常项,由人工补充。
三、SKU标准化:从多个叫法到一个编码
3.1 问题
材料名称识别之后,还是有多个叫法对应同一材料的问题。比如“镀锌钢管 DN100”和“热镀锌钢管 DN100”,材质描述不同,但实际是同一种材料。
3.2 实现思路
第一步:建立标准SKU库
为每种材料建立标准SKU,包含:
-
SKU编码
-
标准名称
-
品类
-
材质
-
规格
-
单位
-
所属系统
第二步:相似度匹配
把识别后的材料与标准SKU库做相似度匹配。匹配算法可以组合:
-
字符串相似度:编辑距离、Jaccard相似度
-
属性匹配度:品类、材质、规格是否一致
-
语义相似度:用预训练模型计算语义向量相似度
第三步:阈值判断
-
相似度高于高阈值:直接匹配
-
相似度介于高低阈值之间:进入候选列表,由人工确认
-
相似度低于低阈值:标记为未识别,由人工补充
3.3 关键设计点
SKU库需要持续维护。 新材料的出现、旧材料的淘汰、行业标准的变化,都会影响SKU库的有效性。系统需要支持SKU的新增、修改、合并。
匹配阈值需要可配置。 不同项目的清单质量不同,阈值太严会漏匹配,太松会错匹配。系统应该允许根据项目类型调整阈值。
四、供应商匹配:从SKU到候选供应商
4.1 问题
SKU标准化之后,需要找到这个SKU对应的供应商和价格。但同一SKU可能有多个供应商、多个品牌,价格各不相同。
4.2 实现思路
第一步:建立供应商-材料关联库
记录每个供应商能提供的材料SKU、品牌、历史价格、报价有效期。
第二步:候选供应商筛选
根据SKU,从关联库中筛选出能提供该材料的供应商列表。
第三步:规则排序
对候选供应商进行排序,排序规则可以包括:
-
历史采购优先:优先展示历史采购过的供应商
-
白名单优先:白名单内的供应商优先
-
黑名单排除:黑名单内的供应商直接排除
-
价格优先:总价最低优先
-
前N家优先:取前六家供应商
-
不足N家时逐步放宽条件补足
4.3 规则引擎设计
规则引擎需要支持:
-
规则配置:规则可以动态增删改,不需要改代码
-
规则优先级:多条规则冲突时,按优先级执行
-
规则解释:每条推荐结果要能说明“为什么推荐这家”
比如推荐结果是“供应商A,价格100元”,需要能解释:
推荐理由:历史采购优先 + 白名单供应商 + 价格在候选供应商中最低
五、价格推荐:从候选到最终价格
5.1 问题
候选供应商有了,价格也有了,但最终推荐哪个价格?
5.2 实现思路
第一步:价格归一化
不同供应商的报价可能包含不同的费用项(含税/不含税、含运费/不含运费)。需要归一化到统一口径。
第二步:价格推荐
根据规则引擎的排序结果,推荐最终价格。推荐逻辑可以是:
-
取排序第一的供应商价格
-
取候选供应商的中位数价格
-
取历史采购均价
具体用哪种,取决于业务规则。
第三步:兜底机制
如果以上规则都匹配不到,默认取该材料最近一次人工录入的单价;还没有,就置0由用户自行录入。
5.3 异常项标记
匹配不到的项,明确标出来:
-
未识别的系统名、材料名,用黄色背景标记
-
价格显示为0的项,代表AI识别失败或未检索到市场价
这样设计的好处是:人只需要处理异常项,正常项自动通过,整体效率反而更高。
六、数据闭环:让匹配越来越准
6.1 问题
AI匹配不可能100%准确。人工处理的异常项,如果不沉淀下来,下次还会遇到同样的问题。
6.2 实现思路
第一步:记录人工处理结果
人工处理异常项时,系统记录:
-
原始材料名称
-
人工指定的标准SKU
-
人工选择的供应商和价格
-
处理时间
第二步:回写规则库
人工处理结果可以回写到SKU库和供应商关联库:
-
新材料名称 → 新增SKU映射
-
新供应商 → 新增供应商关联
-
新价格 → 更新历史价格
第三步:下次匹配时优先使用
下次遇到同样的材料名称,系统优先使用已记录的映射关系,不需要再人工处理。
6.3 数据闭环的价值
这个闭环让系统越用越准:
-
用的项目越多,SKU库越丰富
-
人工处理越多,规则库越完善
-
匹配率越高,人工处理量越少
七、和传统定额组价的关系
需要说清楚的是,这套自动化方案不是要取代定额组价,而是在定额组价的基础上,解决“材料单价怎么来”这个环节的效率问题。
定额消耗量、组价逻辑仍然可以沿用,但材料询价、品牌选择、历史数据复用这些环节,可以交给系统自动完成。两者是互补关系,不是替代关系。
八、实践中的注意点
1. 识别准确率依赖知识图谱覆盖度
常规材料识别率高,非标材料可能需要人工补充。建议将AI核算结果作为参考,最终报价由专业造价人员复核确认。
2. 异常项显式化是关键设计
与其追求全自动,不如把不确定的项标出来让人快速处理,整体效率反而更高。
3. 规则引擎要可配置
不同项目、不同企业的规则不同,规则引擎需要支持动态配置,而不是硬编码。
4. 数据闭环要建立
人工处理的结果要回写到规则库,让系统越用越准。
九、总结
工程材料价格匹配的AI实现,核心是四个环节:
-
材料名称识别:从非结构化清单中提取结构化材料信息
-
SKU标准化:把多个叫法归一到一个标准编码
-
供应商匹配:按规则筛选和排序候选供应商
-
价格推荐:根据规则推荐最终价格,异常项显式标记
这套链路在工程速算狮小程序中已有落地实践。该工具目前聚焦四川地区的消防安装、暖通、水电项目,用于工程清单的AI识别与成本核算。如果你正好做这类项目,可以在微信中搜索“工程速算狮”小程序了解具体实现效果。
更多推荐

所有评论(0)