去年秋天,苏州一家电子元器件厂的品质部经理找到我们。他们厂做PCB连接器和接插件,客户都是汽车电子和工业设备厂家——博世、大陆、施耐德这些。品质管理的要求很高,每批出货都要附带完整的检验报告。

问题在于:这些检验报告全部是纸质的。IQC来料检验、IPQC过程检验、OQC出货检验——每天产生约200-300份纸质记录,全按日期捆起来塞进文件柜。3年下来,5个文件柜塞得满满当当。

"上周有个客户审核,要翻出去年12月一批N型连接器的拉力测试报告。我和两个同事翻了一整个下午,最后发现是当初放错柜子了。"品质经理说这话的时候一脸无奈。"审核的人就在旁边等着,场面很尴尬。"

这事我记得很清楚,因为当时我跟他说了一句:你这个问题的根子不在"翻不到",而在"根本没有被翻的机制"。纸质文件一旦归档,就等于进了黑洞——你再也没办法按"产品批次""检测项目""责任人"或"检测日期范围"去搜。能搜到的唯一方式是"记得放在哪个柜子第几层"。人脑的记忆力靠不住,更何况是3年前的事。

这篇文章记录我们帮这家厂用AI Agent + 边缘网关搭建"质检文档智能处理系统"的完整过程。不吹效果,只说做了什么、遇到了什么麻烦、最后效果如何。

一、现场情况摸底

去厂里蹲了两天,先把情况摸清楚。

纸质文档的规模

文档的内容结构

不同环节的记录格式略有不同,但共同点是——大部分是手写体,少部分是用Excel打印出来再手填的表格。

每份记录中最核心但也最头痛的部分是:检验员手写的测量数值和备注文字。有些人的字工整,有些人的字像天书——尤其是40多岁的老检验员,写的数字"7"像"1"、"4"像"9"、"0"像"6"。

真正的痛点排序

跟品质经理、IQC主管、客户审核对接人分别聊了一圈,痛点按严重程度排列:

  1. 客户审核翻查太慢——审核员在会议室等着,翻几小时找不到报告,直接影响客户对品质体系的评价
  2. 不良追溯基本靠"记得"——某批产品在客户那边出了问题,想查当时的检验记录,如果当事人不记得放在哪里,几乎不可能找到
  3. 统计报表纯手工——每月要交品质月报(不良率趋势、主要不良类型分布),品质部的人要从一堆记录里手动统计,每月花3-5天
  4. 文件柜空间不够——按这个速度,再过1年半文件柜就要加一排
教训:很多工厂觉得"纸质记录也在存档,没问题"。但"存档"和"可检索"是两回事。纸质文档一旦超出人脑记忆的范围,就变成纯粹的沉没成本——你花了时间填它、装订它、存它,但再也不会去用它。

二、方案设计

目标很清晰:把这些纸质检验记录数字化,让品质部能按任意条件(产品批次、检测项目、日期范围、不良类型)快速检索到原始记录。

为什么选边缘网关+RAG Agent,而不是传统OCR服务

讨论时有人提议直接买个商用OCR系统。我否决了,原因有两个:

最终方案分了四层:

采集层:高速扫描仪 + 文档工作站

处理层:边缘AI网关做OCR+信息提取

核心处理模块全部跑在边缘AI网关(标准型S200)上:

知识层:RAG Agent构建可检索的知识库

这是整个系统的"大脑":

应用层:查询看板 + 审核快速通道

三、实施过程

第一阶段:存量文档扫描(第1-4周)

这个阶段比想象中慢。3年约18万页文档,每天扫描+质检,平均只能处理1500页。主要时间不花在扫描上(扫描本身很快),而花在:

最后花了整整4周才把3年的存量文档全部扫完。总共约17.8万页,占用了约85GB存储空间(JPG压缩格式)。

踩坑小插曲:第二周扫描仪进纸轮磨损了,每扫50-60页就会卡纸。之前没买备用进纸组件,修一次耽误了1天。后来多买了一套易损件备着。

第二阶段:OCR管线搭建和调优(第2-5周,与第一阶段重叠)

扫描开始后第2周,我就开始在边缘网关上搭OCR管线了。

第一次跑OCR——结果惨不忍睹

直接用PaddleOCR标准模型跑了一遍。印刷体效果还行(约95%准确率),但手写体的数字和汉字识别率只有60-70%。最糟糕的是检验员手写的数字——"7"和"1"、"4"和"9"、"0"和"6"经常搞混。还有检验员的签名字迹潦草到OCR完全认不出。

手写体数字的专项优化

解决办法是从已扫的文档里抽了约5000个手写数字样本,标注后做了一次增量训练。我把这个叫做"数字专训"——只针对0-9十个数字,模型结构用轻量的MobileNetV3。训练后的准确率从70%提升到约92%。

还有一个发现:表格结构检测比手写体识别更容易出问题。尤其是一些检验单,表格线是手画的、歪的、不闭合的,版面分析模型经常把相邻列的内容合并成一行。后来改用了一个基于OpenCV的规则式表格检测器(检测水平线和垂直线交点来还原单元格),比纯AI方案更鲁棒。

字段提取Agent的精度迭代

OCR完成后的下一步是从文本中提取结构化字段。这个环节踩了最大的坑。

我用了一种轻量方案:把OCR文本+预先定义的字段模板传给一个本地跑的小模型,让模型提取字段。但同一个检验单在不同月份有不同版本——抬头位置变了、表格列宽调整了、甚至"检验项目"改成了"检测内容"。模板不匹配,提取精度在40-60%之间打转。

后来改了策略:不做全局模板匹配,而是基于规则+模糊匹配做定位

# 简化后的检测项提取逻辑
def extract_inspection_items(ocr_result):
    items = []
    # 找到表格区域
    tables = detect_tables(ocr_result.bboxes)
    for table in tables:
        # 找到"检验项目"所在的行列
        header_row = find_row_containing(table, ["检验项目","检测内容","检查项目"])
        # 找到"判定结果"所在的行列
        result_row = find_row_containing(table, ["判定","结果","合格"])
        if header_row and result_row:
            # 遍历每一行数据
            for row in table.rows_between(header_row, result_row):
                item = {
                    "name": row.cells[header_row.col_idx].text.strip(),
                    "spec": row.cells[header_row.col_idx + 1].text.strip(),
                    "measurement": row.cells[header_row.col_idx + 2].text.strip(),
                    "result": row.cells[result_row.col_idx].text.strip()
                }
                items.append(item)
    return items

这套规则+模糊匹配的方案,把字段提取精度从40-60%提升到了约85%。剩下的15%靠界面上的"手动校正"功能——操作人员确认一下,提取错误的数据会被收集起来,定期做规则改进。

第三阶段:RAG知识库搭建(第5-6周)

所有存量文档完成OCR和信息提取后,向量化建库。

一开始我犯了另一个错误:把整页OCR文本直接切段做向量化。结果用户搜"去年12月N型连接器拉力测试",出来的结果经常是"某份检验单的标题行里面有'拉力'这两个字,但内容完全不相关"。

改进方法:以检验项目为单位做切分。每份检验单的每一个"检验项目"(比如"端子拉力测试")作为一个独立的检索单元,元数据带上批次、日期、产品型号。这样用户搜"拉力测试 N型连接器"时,系统直接命中对应的检测明细,精度大幅提升。

Embedding模型选了BGE-small-zh(量化版),在边缘网关上推理速度约50ms/次,足够了。向量库用FAISS存本地,单机检索延迟在100ms以内。

第四阶段:查询看板上线和并行测试(第7-8周)

Web查询界面花了一周搭建,基本功能:

  • 搜索框(自然语言搜索 + 关键词搜索)
  • 筛选器(日期范围、文档类型、产品型号、供应商)
  • 搜索结果卡片(摘要+元数据+缩略图)
  • 详情页(原始扫描件 + OCR文本对照 + 提取的结构化数据)
  • "审核模式"一键切换(字体放大、高亮关键词、快速翻页)

上线后并行测试了2周——品质部的人继续用原来的纸质方式,同时在新系统上查。对比两种方式的效率和准确率。

四、实际效果

文档检索时间:从40分钟到2分钟
客户审核时找一份历史检验报告,以前平均要40分钟(运气不好翻一两个小时)。用新系统后,输入批次号+产品型号+日期范围,2分钟内就能找到并展示原始扫描件。
品质月报:从3天到10分钟
以前品质部每月花3-5天手动统计不良数据。新系统每月1号自动生成品质月报,10分钟更新完毕。品质经理说"月初解脱了"。
不良追溯成功率提升
以前客户投诉某批产品有问题,能追溯到当年检验记录的概率不到30%。现在只要知道批次号,系统100%能找到对应记录。上线后两个月里,成功追溯了7次客户投诉的原始检验数据,有2次查出来确实是出厂时就有问题,5次查出是客户使用不当造成的——帮厂里省了5次不必要的赔偿。

但也有一些不太理想的地方:

  • 手写体识别还不是100%——有个老检验员的字特别潦草,他的记录OCR识别率只有75%左右。我们让他写了一份标准字体的"样本对照表",用来做二次校对
  • 扫描端工作量不低——尤其是存量文档,4周扫描17.8万页,需要专人负责。如果新建工厂从一开始就用电子记录,能省掉大量后补工作
  • 字段提取仍有约15%需要人工校正——操作员每天花约30分钟在界面上做校对,这是可以接受的,但离"完全自动化"还有距离

五、踩坑汇总

整个项目跑下来,踩了这么些坑:

  1. 扫描仪进纸轮是易耗品,提前备好备件——扫了不到3万页就磨损了,停工1天等配件
  2. 手写数字比想象中难识别得多——尤其是中国工人写的"7"带一横,跟"1"太像。需要专项训练数字识别模型,不能用通用OCR
  3. 表格结构检测不要指望纯AI——手画表格线不闭合、歪斜、甚至没线(空格排版),规则式检测器更可靠
  4. 字段提取用"模板匹配"会死在版本变化上——检验单格式改了3次。规则+模糊匹配比模板灵活得多
  5. 向量化切分以检验项目为单位,不要以页面为单位——细粒度检索精度更高
  6. 扫描前的文档预处理(拆订、分类、去污)占了一半时间——不要低估这个环节的工作量
  7. 存量文档扫描需要专人全职投入——品质工程师自己扫效率低,最好外包或招临时工
  8. 不要一开始就追求"全自动化"——15%的人工校正率在工厂场景下是可接受的,比100%人工翻档案已经好一个数量级

六、我的思考

做完这个项目,几点感受:

"文档数字化"在工厂里被严重低估了。很多工厂愿意花几十万买一台检测设备,但不愿意花几万块钱把一堆纸质的检验报告数字化。他们看不到"翻不到文档"的隐形成本——客户满意度下降、审核评分降低、不良追溯失败导致的赔偿。这些成本不显眼,但实实在在流失了。

OCR+RAG的组合很适合工厂内网的私有化部署。不需要云,不需要GPU(边缘网关的CPU+NPU足够跑PaddleOCR和BGE-small),数据不出厂区,满足大客户的审计要求。整套方案的成本(硬件+开发+部署)远低于商用文档管理系统——而后者通常不支持手写体、不能做语义检索、不支持定制字段提取。

最让我意外的是:"自动出月报"这个我开始觉得是锦上添花的功能,反而是品质经理用下来评价比较高的。他说:"以前每个月那几天我都要加班统计数据,现在一号早上到公司,报告已经自己生成了。哪天要是系统突然停了,我可能都不知道怎么交差了。"这说明一个道理:帮用户省掉他们最讨厌的重复劳动,比给一个炫酷的技术功能更有价值。

也有一个没解决的问题:纸质文档的防篡改。数字化之后,电子数据可以改,但纸质原件是唯一的法律证据。我们现在保留原始扫描件作为底稿,但未来如果遇到法律纠纷(比如产品责任索赔),扫描件本身的证据效力还需要跟客户的法务确认。这个留给了厂里后续跟客户沟通。

更多案例和实际项目经验分享,可以在 www.bycims5g.cn/cases/ 上找到。

七、给你的建议

如果你也在考虑把工厂的纸质质量记录数字化,几点实在的建议:

  1. 先搞清楚你真正的痛点——是客户审核翻查慢?是不良追溯困难?还是统计报表太费时?不同的痛点对应不同的方案侧重点。我们这个项目最大的驱动力不是"数字化"本身,而是"客户审核太难看了"
  2. 存量文档分批处理,别想一口吃成胖子——我们做的是近3年的,但建议先做最近1年的,跑通流程后再回溯。18万页4周扫完,天天像搬家
  3. 手写体识别要专项优化——不要指望通用OCR能搞定工厂检验员的手写数字。先收集一批样本单独训练数字识别,成本不高但收益明显
  4. 表格结构检测用规则比用AI更稳——至少作为兜底。工厂的检验单表格变化多,不闭合、不对齐是常态
  5. 留好人工校正入口——找个实习生每天花半小时校对OCR提取结果,比花两周调模型精度更划算
  6. 保留原始扫描件作为底稿——电子数据可被质疑,原始扫描件的管理(存储、备份、防篡改)也要纳入方案
  7. 自动报表功能别忽视——它可能是用户觉得最有价值的功能,尽管它在技术层面上最简单

这套方案的完整部署脚本、OCR模型微调脚本、字段提取规则和Web看板代码,我都打包整理好留在厂里了。遇到类似问题也欢迎交流。