1. 为什么我要把AI拉进BOM管理和排版这件事里
先交代一下背景。我长期在制造业信息化这条线上干活,日常打交道最多的东西之一就是BOM——Bill of Materials,物料清单。这东西听起来就是个表格,但在真实生产环境里,它牵扯到研发、工艺、采购、生产、财务几乎每个部门。BOM数据一旦乱了,后面报价错、采购错、领料错,一环扣一环全是麻烦。
我接手过很多次这样的烂摊子:一个产品几十上百个物料,Excel表格里层级混乱,有的物料编码是文本格式,有的是数字格式,还有的直接把备注写在数量栏里。最要命的是不同供应商、不同工程师交上来的BOM格式五花八门,有的按装配层级展开,有的是一张平铺的大表,有的甚至是从ERP导出来的半截数据。每次要把这些合并成一份规范文档,基本就是人工熬夜。
后来我开始认真尝试用AI来处理这件事。不是拿AI生成一大段华而不实的文字,而是让AI真实介入到BOM的数据解析、字段对齐、层级识别、变更比对和最终排版输出这个完整链条里。做了几个月的实际项目之后,我说句实话:AI在这条路上确实能扛起一半以上的重复劳动,而且成果是能直接用于生产的,不是玩具Demo。
这篇文章我打算把这段时间的完整思路、踩坑经历和可复现的实操方法都写出来。核心聚焦三个词:AI、BOM管理、排版。适合谁看?搞制造业数字化、工艺研发、技术文档、产品数据管理的人,以及对AI落地应用有兴趣但不知道从哪下手的工程师。无论你是想省下每周一天的表格整理时间,还是想搭一套自动化的BOM处理流程,这篇都值得你耐心看完。
2. 整体方案设计与技术选型
2.1 先想清楚:AI负责什么,人负责什么
在我动手写提示词、调接口之前,我先把整个BOM管理链条拆了一遍。拆完之后结论很清楚:AI不是用来替代工程师的,而是要解决那些“眼睛看得见、脑子想得明白、但手写起来累死人”的部分。
传统BOM管理里,最耗时间的事情有三类。第一类是数据清洗和标准化,也就是把各种来源的表格字段统一成一个口径,物料编码、规格、单位、数量这些字段得对齐。第二类是层级关系的识别和重建,尤其是多级BOM,父子件关系经常被拍平在一张大表里,需要靠缩进、编号、工序说明去反推。第三类是变更管理和差异分析,ECN(工程变更通知)来了之后,得对比新旧版本,找出哪些物料增删改了。
这三类事情有一个共同特点:它们“规则里有例外,例外里又有规律”。如果写死程序去处理,规则要写几百条,遇到一个特殊格式就崩;如果完全靠人去盯,又是巨大的重复劳动。AI大模型的优势恰恰在于,它能理解上下文、能容忍格式噪声、能基于少量示例推断规则。所以我把AI定位在“解析+推断+建议”上,而把“决策+审批+入库”牢牢留给人。
具体分工是这样的:AI负责读入原始数据,把它转换成统一结构化的中间格式,比如JSON或标准化表格;AI负责生成差异报告、异常清单和排版文档的初稿;而人负责审核AI的输出、处理AI标出的异常项、确认变更结果。人机各干擅长的事,整个链条才能既快又稳。
2.2 工具链怎么搭:从数据源到输出端
方案设计阶段,我花了比较多时间在工具选型上。市面上的选择很多,但核心思路只有一个:数据流要打通,中间环节尽量少用容易断的链路。
我的工具链分成四层。第一层是数据源层,也就是各种Excel、CSV、ERP导出文本、PDF表格,甚至扫描件识别出来的文本。第二层是解析与处理层,这层我主要用Python脚本配合大模型API来做。Python负责文件的读写、格式转换、调用大模型接口、处理返回结果,这套组合已经足够灵活。第三层是校验与审核层,用Pandas来处理结构化数据,做完整性检查和规则校验。第四层是输出层,排版部分我会生成Markdown、Word、Excel或者PDF,根据下游需求来定。
这里我特别想说一下为什么中间层一定要有Python。有的朋友可能会问,直接用现成的AI在线工具,把表格粘贴进去不就行了?我实测下来,短数据、单文件确实可以,但一到批量处理、跨文件合并、结果回写这种场景,在线工具就完全不够用了,你没法在它那里做循环、做校验、做版本管理。所以我的建议是:AI负责“理解”,代码负责“搬运和校验”,而不是让AI在前面冲锋、后面一片混乱。
2.3 BOM结构化是整个链条的地基
整个BOM管理方案里,我认为最核心、最不能跳过的环节,是把所有输入数据先映射成一份统一的结构化模型。我把它定义成一个包含关键字段的JSON结构,字段包括:物料编码、物料名称、规格型号、单位、单件用量、层级编码、父项编码、所属BOM版本、备注等。
为什么一定要有这样一个中间结构?原因很简单:下游所有动作都依赖它。层级关系判断依赖层级编码和父项编码,数量汇总依赖用量字段,排版要按层级缩进,变更对比要按物料编码做Key。如果前面没有统一结构化,后面每一个环节都要重新解释一遍原始数据,效率会低到让人崩溃。
这个结构一开始不建议设计得太复杂,我吃过亏。我第一版恨不得把供应商、替代料、生效日期、料态全部塞进去,结果AI识别不准、校验规则复杂、输出文档也乱七八糟。后来我精简成上面十几个核心字段,其他信息放在扩展字段里,先跑通主干再逐步加需求,这样整个系统稳定多了。记住一句话:地基打窄一点,楼才能盖得稳。
3. 核心细节解析:从非结构化BOM到结构化数据
3.1 数据清洗与字段映射:AI解读的“第一公里”
BOM数据的解析,最头疼的往往不是数据本身,而是数据格式的“脏”。我见过一种很典型的脏数据:同一个物料的名称,在研发工程师的表里叫“六角螺栓M6×20”,到了采购的Excel里成了“螺栓 M6*20 六角”,到了ERP里又变成“M6X20 HEX BOLT”。你要让程序去匹配,正则表达式写死了也白搭,因为同一种东西的表达方式可以千奇百怪。
我的做法是用AI做字段识别和标准化映射。具体来说,把一张原始表格的前几行数据,连同我定义好的目标字段结构一起发给模型,让它推断每个原始列对应哪个目标字段。这一步非常关键,因为很多表的列名是缩写、是合并单元格、是备注式的写法,比如“料号”“Item”“P/N”“物料编码”可能指的都是物料编码列,AI能轻松识别出来。
字段识别之后,下一步是内容标准化。我会让AI做三件事:统一单位缩写、统一物料名称格式、识别并保留特殊属性。比如“个”“PCS”“EA”统一成“件”;“kg”“KG”“千克”统一成“kg”;物料名称里把规格型号和名称分开。这里要注意一个坑:AI偶尔会过度标准化,比如把本来就不同的物料名称合并成了一个,这就很危险。解决方法是让AI在标准化时遵守“名称只做格式统一、不做语义合并”的原则,同时保留原始值到扩展字段里,方便人工复核。
3.2 层级关系重建:让AI读懂父子关系
层级关系是BOM里最有价值的信息,也最容易在数据转换中丢失。多层BOM的原始表里,层级往往靠Excel的缩进、列的位置、序号点的数量(比如“1.1”和“1.1.1”)或者“层级”列来体现。AI在这块表现出乎我意料地好,因为大模型能理解“这个物料是那个总成的子件”“装配顺序暗示层级深浅”这类语义信息。
但层级识别有一个必须防住的坑:AI会把视觉上的相邻关系误判成父子关系。比如表格里同一层级的不同物料上下排在一起,AI有时候会把上面一行误认为下面一行的父项。为了规避这个问题,我在提示词里明确要求:优先依据显式的层级编码或缩进级别,不要依据行与行之间的顺序推断父子关系;如果缺少显式层级,则必须输出置信度较低并标为待人工确认。
层级字段的输出格式也很讲究。我推荐输出两个字段:一个是“层级编码”,用来定位节点在整棵树中的位置,比如“A-B-C”表示总成A下的组件B下的零件C;另一个是“父项编码”,直接指向上级物料的编码。有了这两个字段,后续做展开、汇总、排版都非常方便。实测下来,大部分层级合理的表格,AI一次识别的准确率能到90%以上,剩下的靠人工抽查和修正就够了。
3.3 变更比对:AI只做增量,不背全量
BOM管理里,变更对比是高频刚需。以前的做法是把老版本和新版本两张表并排放,人眼来回扫,看到眼花。AI介入之后,这个工作变得异常轻松。
实现方式其实就三步:第一步,把新旧两份BOM都转成统一的结构化JSON;第二步,用物料编码作为主键做全量比对;第三步,让AI解读差异,生成变更清单。变更类型无非就四种:新增物料、删除物料、数量变更、属性变更。AI能快速把同一物料编码下规格、用量、单位的变化提取出来,还能把新增和删除物料列出清单。
用得久了,我摸索出一个细节:AI应该只做增量说明,而不是把整个BOM重新描述一遍。比如你让它写变更报告,它不用重新介绍“这个产品有68个物料,其中……”这类废话,直接输出“本次变更新增3项、删除2项、数量调整5项,具体清单如下”,效率高而且人看起来也舒服。提示词里明确“只描述差异,不描述全量”,这个约束一定要写上去,不然AI特别喜欢给你来个全文复述。
4. 排版环节的AI实操:让文档自己长成该有的样子
4.1 排版不是“好看”,是“有序”
说到排版,很多人第一反应是“排版就是美化”,其实在BOM场景里完全不是这么回事。BOM文档的排版核心是有序和可读:层级关系要能在版面上直接看明白,字段要对齐,长表要分页合理,变更标记要一眼可见。这种排版要求,本质上是一种“信息秩序设计”。
我最早尝试让AI直接生成漂亮的PDF,效果一般,因为大模型对页面布局的控制力还比较弱,经常生成半截表格或者奇怪的换页。后来我调整了策略:AI负责内容和规则,模板负责外观,程序负责落版。也就是说,AI把BOM整理成结构化的Markdown或JSON,然后用模板引擎套上固定的版式,再转换成PDF或打印格式。这一套流程不仅稳定,速度也快。
4.2 提示词里如何定义排版的“规矩”
让AI参与排版,最关键的是给它定义“规矩”。你不能只说“把表格排好看一点”,这种要求在AI眼里太模糊。我的提示词一般会明确几件事:层级缩进规则(一级物料顶格、二级物料缩进两个字符、三级再缩进两个字符,按此递推);字段顺序(物料编码、物料名称、规格型号、单位、用量、备注依次从左到右排列);表头样式加粗;数量为零的物料行标记为灰色;变更新增行用“新增”标记,删除行用划线标记。
还有一个细节:告诉AI“每个表格上方必须有一个小标题,标题格式是‘产品编码+版本号+日期’”。这个规则不是为了好看,而是为了追溯。BOM文档一旦打印出来,放在车间里流转,如果每一页没有明确的标题信息,版本就会混掉,这是大忌。
我分享一段实际在用的提示词框架:
你是一个BOM排版助手。请把给定的BOM结构化数据整理成Markdown表格。规则如下:按层级编码升序排列,层级越深缩进越多;字段顺序为物料编码、物料名称、规格型号、单位、用量、备注;表头使用加粗;用量为0的行整行标记为删除态;表格上方添加标题行,格式为“产品编码|产品名称|BOM版本|日期”。只输出表格与标题,不输出其他说明文字。
这套规矩设完之后,AI输出的排版结果基本可以直接用,人工只需要调整极少数特殊情况。
4.3 模板与批量:30分钟搭一套专业排版环境
我答应过自己“坚决不用手工排版熬夜”,所以搭了一套轻量的批量排版环境。工具组合是:VS Code + LaTeX环境 + Python模板脚本。为什么选LaTeX?因为BOM表格动不动就是几十行上百行,LaTeX对长表格的分页处理非常成熟,排版出来的PDF字迹清晰、对齐规范、专业感强。VS Code只是编辑器,真正干活的是Python里的一段模板渲染脚本。
整个环境搭起来半小时以内能完成,流程是这样的:Python读取AI输出的结构化JSON → 转换成LaTeX表格代码 → 调用本地XeLaTeX编译 → 输出PDF。模板里预设了页面边距、表头样式、正文字体、缩进间距,所有BOM文档共用一套版式。之后来了新的BOM,只需要把结构化数据喂进去,按一下编译,PDF就出来了。
这套环境的好处是:不依赖在线服务、速度完全看本地性能、批量生成100份BOM也不成问题。如果你团队里有人不会用LaTeX也没关系,直接看编译出来的PDF就行,不需要他们维护模板。排版自动化这件事,说到底就是把“可重复的部分”沉淀成模板,把“需要理解的部分”交给AI。
5. 完整实操案例:一张混乱的Excel蜕变成标准BOM
很多朋友可能觉得上面讲得有点散,我干脆用一个完整的案例,把从原始数据到最终排版文档的全过程走一遍。这个案例我隐去了真实产品信息,但结构和数据样式都是按真实场景来的。
5.1 第一步:把原始数据喂给AI
原始数据是一张从供应商那边拿到的Excel表,列有:Item No.、Part Description、Qty、Unit、Ref Des、Level。其中“Part Description”这一列信息非常杂,把名称、规格、备注全部堆在一起了,比如“RES, 10K OHM 1/10W 5% 0805, ROHS”;“Ref Des”是装配位号;“Level”是层级数字,1表示顶层,2表示子件。
我先把Excel读成文本片段,按行拆开,把前面几行数据作为样例发给了AI,并要求它把数据映射成我指定的结构化JSON字段。我特别在提示词里说明了样例规则和例外情况,让AI先输出映射方案,再逐行转换。
5.2 第二步:AI辅助解析与校验
这一步是整个流程里工作量最大、也最能体现AI价值的环节。AI把“Part Description”里的内容拆成了三个部分:元件类型(RES)、电气参数(10K OHM 1/10W 5% 0805)、环保属性(ROHS),并给出了结构化字段“物料名称=电阻;规格型号=10K OHM 1/10W 5% 0805;环保要求=ROHS”。Qty列里有的是数字,有的是“2-3”这样的范围值,AI按规则处理成最小用量和最大用量两个字段。
解析结果出来后,我没有直接放行,而是用Python脚本做了一次规则校验。重点检查了几个容易出问题的点:所有物料编码是否唯一、层级编码是否正确、父项编码是否指向存在的节点、用量是否为有效数字。大约有七八条数据被标记为异常,比如有一行Qty写的是“N/A”,还有两行的Level数字明显倒挂。我把这些异常项单独抽出来,让AI给出处理建议,然后人工确认后修正。
5.3 第三步:生成排版文档
数据校验通过后,我让AI把结构化JSON整理成一版Markdown表格,套用前面设定好的排版规则。AI输出之后,我用模板脚本把Markdown转成LaTeX,一键编译成PDF。最终PDF的效果是:标题清晰标注“产品编码、版本、日期”,表格按层级缩进,每个子件都挂在正确的父件下面,总行数加了一个合计行,异常项在备注里标了黄底提示。
整个流程走下来,从拿到原始Excel到交付PDF,我一个人大概花了半个下午。其中真正的思考时间很少,大部分是等AI处理和跑脚本,手工操作基本集中在审核异常项上。换成以前人工做同样的事,我估计得两天起步,而且眼睛会花到怀疑人生。
6. 常见问题与排查技巧实录
6.1 常见问题速查表
我用表格整理一下这段时间遇到的典型问题和对应的解决方向,方便你以后直接对照查。
| 问题现象 | 可能原因 | 解决思路 |
|---|---|---|
| AI把不同物料名称合并成同一个 | 提示词中没有禁止语义合并 | 在提示词中明确“只做格式统一,不做语义合并” |
| 解析后的层级关系错乱 | 原表没有显式层级编码,AI只能靠视觉推断 | 先让人工补充层级列,或把缺失层级的数据单独处理 |
| 数量字段被识别成文本 | 原Excel中单元格格式是文本 | 在处理脚本里增加字段类型强制转换 |
| 排版表格超宽,PDF换行乱 | 列数太多或某列文本过长 | 精简输出列,规格型号单独设一列并限制宽度 |
| 变更报告里出现全量描述 | 提示词没有约束“只写增量” | 补充“只描述新增、删除、修改项,不重复全量” |
| AI输出结果不一致 | 同样输入多次生成有随机性 | 在提示词中要求输出JSON并固定字段顺序,代码端做二次校验 |
| 大批量处理时接口超时 | 单次请求数据量过大 | 把大表拆成多个小批次处理,最后再合并 |
6.2 我踩过的坑和绕过的弯
第一个大坑是我曾经迷信AI能直接出最终交付物。最早的时候我尝试让AI直接从原始Excel内容生成一份完美的PDF,结果生成出来要么缺字段,要么排版全乱,而且每次结果还不一样。后来我认识到问题不在AI能力上,而在流程设计上——中间缺失了“结构化中间层”和“模板层”。现在我的习惯是:AI只做内容理解和初步组织,永远用确定性脚本处理中间数据,用模板控制最终输出。这条原则帮我省掉了大量返工。
第二个大坑是过度依赖AI的“聪明”,忽视了校验。AI在处理BOM数据时偶尔会出现一种很隐蔽的错误:编造一个看起来合理的物料编码,或者把两行相似的数据合并时弄丢了其中一行。这种事如果发生在正式发布的BOM上,后果很严重。所以我的流程里必然有一道自动化校验关卡,哪怕是最简单的“行数对比”也绝不跳过。
第三个经验是:让AI处理BOM时,尽量让它一次性输出完整JSON结构,而不是分段对话。分段对话有个问题,AI容易忘记前面的约定,把字段名改了或者遗漏字段。一次请求、完整输出、结构化验证,这条路径最可靠。如果数据太长,就分批处理但保持字段结构一致,最后在代码层合并。
最后一个实用的技巧分享给大家:当你不确定提示词写得好不好时,拿一小段真实数据先做测试。用20行左右的数据跑一遍,看AI理解是否正确,再逐步加数据量。我几乎所有提示词都是这么迭代出来的,投入时间不多,但效果提升非常明显。
7. 说几句真心话
这套AI + BOM管理 + 排版的方案,我实际跑了大半年,最大的收获不是省了多少时间,而是我终于可以把精力放回到真正需要人判断的事情上——比如评估物料选型是否合理、确认变更影响范围、跟供应商对齐规格。那些“眼睛看得见、脑子想得明白、但手写起来累死人”的活,交给AI和脚本之后,我的心态都变得不一样了。
我也得提醒一句,AI不是万能的。BOM数据里那种“规则之外还有规则”的复杂场景,AI现在还不能做到百分之百准确,特别是在接近自然语言描述的多属性混排数据上,人工审核这一关绝对不能省。但只要你把流程设计成“AI先做、人审关键、模板控版式”的三角结构,整个体系完全能扛起生产级别的需求。
如果你正准备在自己的团队里推进类似的事,我建议从小范围试点开始,挑一个品类数据最规范的产品做验证,跑通后再扩展。罗马不是一天建成的,但BOM结构化这条路,每天走一小步,很快就能看到明显的成果。