别信什么“一键导入”!工厂几万张扫描版旧图纸,我是怎么清洗喂给 DeepSeek 的?(附 Python 脚本思路)

19 阅读4分钟

上周,成都本地一家做液压设备的厂长,直接甩给我一个 2T 的移动硬盘。

老板原话是这么说的:“兄弟,这里面是我们厂这 20 年积累的 5 万多张设计图纸和工艺单,全是扫描件(PDF/JPG)。你们不是做 AI 赋能吗?赶紧把这个喂给 DeepSeek,搞个专家知识库出来,以后新员工有问题直接问 AI。”

我打开硬盘一看,差点当场晕过去。

全是 2005 年左右的陈年老图: 有的纸张泛黄,全是噪点; 有的被咖啡渍盖住了关键参数; 最离谱的是,很多图纸是歪的(扫描仪没放正),而且还有手写的修改笔记。

这玩意儿要是直接扔给 RAG(检索增强生成)做向量化,那就是典型的 "Garbage In, Garbage Out"(垃圾进,垃圾出) 。AI 根本识别不了,搜出来的全是乱码。

很多做 中小企业 AI 赋能 的同行,死就死在这一步。模型大家都会部署,但脏数据怎么洗,才是见真功夫的地方。

今天不藏私,复盘一下我们在 成都无形者科技 内部通用的这套“工业级 OCR 清洗流水线”,专治各种烂图纸。

第一关:不想 OCR 跑飞,先得“修图”

直接调用 PaddleOCR 或者 Tesseract?必死。 因为扫描件的背景噪声会严重干扰文字识别。

我们用 Python 的 OpenCV 写了个预处理脚本,主要干三件事:

  1. 去噪(Denoising) :用高斯模糊去掉纸张的霉点。
  2. 二值化(Binarization) :把泛黄的背景强行变成纯白,把字变成纯黑。
  3. 倾斜校正(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(版面分析模型)

它的逻辑是:

  1. 先看:先把图片切块。哪里是标题,哪里是正文,哪里是表格。

  2. 后读

    • 遇到文本块 -> 走 OCR 识别。
    • 遇到表格块 -> 重建成 Excel 结构的 HTML 代码。
    • 遇到图片/CAD线条 -> 直接丢弃或打标为“参考图”。

这一步是AI 赋能的核心。只有把非结构化的图纸,变成了结构化的 Markdown 或 Excel,RAG 才能精准检索。

第三关:手写体和印章的“消消乐”

厂里的老师傅最喜欢在图纸上用红笔手写:“此参数已废弃”或者“改为 5mm”。 这些手写体如果不识别,AI 就会以此为准,导致生产事故。

对于这种情况,普通的 OCR 模型基本歇菜。我们是在开源模型的基础上,专门用工业手写体数据集微调了一个小模型,专门抓取这些红笔字迹。

同时,利用 HSV 色彩空间,把那种大红色的“受控文件”印章给过滤掉,防止印章盖住文字导致识别错误。

总结:数据治理才是 AI 赋能的“里子”

最后,经过这套流程: 5 万张扫描 PDF -> OpenCV 预处理 -> 版面分析 -> 结构化数据 -> 向量数据库。

现在那个厂长的 DeepSeek 知识库,不仅能搜到图纸,还能回答:“3 年前那个 500W 散热器的铝基板厚度改了几次?”

所以,各位兄弟,别总盯着模型参数看了。 在工业 B2B 场景下,谁能搞定脏数据,谁才是真正的 AI 赋能专家。

如果你也是做 Python 开发的,或者在公司负责 GEO 优化 和知识库搭建,遇到这种搞不定的扫描件,欢迎在评论区交流。我这儿还有几个处理公章遮挡文字的脚本,可以无偿分享。