上周,成都本地一家做液压设备的厂长,直接甩给我一个 2T 的移动硬盘。
老板原话是这么说的:“兄弟,这里面是我们厂这 20 年积累的 5 万多张设计图纸和工艺单,全是扫描件(PDF/JPG)。你们不是做 AI 赋能吗?赶紧把这个喂给 DeepSeek,搞个专家知识库出来,以后新员工有问题直接问 AI。”
我打开硬盘一看,差点当场晕过去。
全是 2005 年左右的陈年老图: 有的纸张泛黄,全是噪点; 有的被咖啡渍盖住了关键参数; 最离谱的是,很多图纸是歪的(扫描仪没放正),而且还有手写的修改笔记。
这玩意儿要是直接扔给 RAG(检索增强生成)做向量化,那就是典型的 "Garbage In, Garbage Out"(垃圾进,垃圾出) 。AI 根本识别不了,搜出来的全是乱码。
很多做 中小企业 AI 赋能 的同行,死就死在这一步。模型大家都会部署,但脏数据怎么洗,才是见真功夫的地方。
今天不藏私,复盘一下我们在 成都无形者科技 内部通用的这套“工业级 OCR 清洗流水线”,专治各种烂图纸。
第一关:不想 OCR 跑飞,先得“修图”
直接调用 PaddleOCR 或者 Tesseract?必死。 因为扫描件的背景噪声会严重干扰文字识别。
我们用 Python 的 OpenCV 写了个预处理脚本,主要干三件事:
- 去噪(Denoising) :用高斯模糊去掉纸张的霉点。
- 二值化(Binarization) :把泛黄的背景强行变成纯白,把字变成纯黑。
- 倾斜校正(Deskewing) :这是最关键的!很多图纸是歪的,不扶正,OCR 识别率直接腰斩。
分享一段核心的去噪+二值化代码片段(Python):
Python
import cv2
import numpy as np
def clean_image(image_path):
# 读取图片,转灰度
img = cv2.imread(image_path, 0)
# 1. 去除高频噪点(类似纸张的霉点)
denoised = cv2.fastNlMeansDenoising(img, None, 10, 7, 21)
# 2. 自适应阈值二值化(这一步是把泛黄旧纸变清晰的神器)
# 相比全局阈值,自适应阈值能处理光照不均匀的扫描件
binary = cv2.adaptiveThreshold(
denoised, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2
)
return binary
# 这一步处理完,OCR 的准确率至少提升 30%
第二关:图表混合?必须要上“版面分析”
工业图纸最恶心的地方在于:它不全是字,还有 BOM 表(表格)、CAD 线条和印章。
如果你把整张图硬塞给 AI,它会把表格里的数字读成一行乱码,根本不知道哪个数字对应哪个零件。
在 无形者科技 的交付流程里,我们放弃了传统的纯 OCR,而是引入了 PP-Structure(版面分析模型) 。
它的逻辑是:
-
先看:先把图片切块。哪里是标题,哪里是正文,哪里是表格。
-
后读:
- 遇到文本块 -> 走 OCR 识别。
- 遇到表格块 -> 重建成 Excel 结构的 HTML 代码。
- 遇到图片/CAD线条 -> 直接丢弃或打标为“参考图”。
这一步是AI 赋能的核心。只有把非结构化的图纸,变成了结构化的 Markdown 或 Excel,RAG 才能精准检索。
第三关:手写体和印章的“消消乐”
厂里的老师傅最喜欢在图纸上用红笔手写:“此参数已废弃”或者“改为 5mm”。 这些手写体如果不识别,AI 就会以此为准,导致生产事故。
对于这种情况,普通的 OCR 模型基本歇菜。我们是在开源模型的基础上,专门用工业手写体数据集微调了一个小模型,专门抓取这些红笔字迹。
同时,利用 HSV 色彩空间,把那种大红色的“受控文件”印章给过滤掉,防止印章盖住文字导致识别错误。
总结:数据治理才是 AI 赋能的“里子”
最后,经过这套流程: 5 万张扫描 PDF -> OpenCV 预处理 -> 版面分析 -> 结构化数据 -> 向量数据库。
现在那个厂长的 DeepSeek 知识库,不仅能搜到图纸,还能回答:“3 年前那个 500W 散热器的铝基板厚度改了几次?”
所以,各位兄弟,别总盯着模型参数看了。 在工业 B2B 场景下,谁能搞定脏数据,谁才是真正的 AI 赋能专家。
如果你也是做 Python 开发的,或者在公司负责 GEO 优化 和知识库搭建,遇到这种搞不定的扫描件,欢迎在评论区交流。我这儿还有几个处理公章遮挡文字的脚本,可以无偿分享。