很多团队做完 OCR 才发现,拿到的是一堆没有归属的散字。真正可用的图纸数据,必须先理解版面结构,再把文字回填到标题栏、明细表与说明区对应的业务字段。

工程图纸数字化这件事,最容易被低估的一点是:识别文字和拿到可用数据,中间还隔着一整个工程。我们接触过不少团队,模型选型花了三个月,最后卡在「识别是识别出来了,但没人知道这行字属于哪个字段」。这篇文章把我们在实际项目里跑通的一条链路拆开讲,也把几个反复踩到的坑写在这里。

一、先把「识别」和「提取」分开看

普通 OCR 的产出是一串带坐标的文本框。对一张扫描发票,这已经够用了;但对一张 A1 幅面的装配图,同一页上可能同时存在图形区的尺寸标注、右下角标题栏、上方的修订栏、右侧的明细表,以及左下角一大段技术要求。把这些内容拍平成一列文本,语义就彻底丢了。

所以我们把任务拆成两层:识别层负责「这里有什么字」,提取层负责「这些字属于哪个区域、对应哪个业务字段、和别的字段是什么关系」。两层的评价指标也完全不同——识别层看字符准确率,提取层看字段级正确率。混在一起谈准确率,通常就是扯不清的开始。

二、一条可落地的提取链路

1. 预处理:把输入拉到同一起跑线

来料差异往往比想象中大:有 CAD 直接导出的矢量 PDF,有几十年前的蓝图扫描件,也有现场手机拍的照片。预处理要做的是纠偏、去噪、统一分辨率,并识别出图幅方向。这里有个实践建议:矢量 PDF 不要栅格化后再识别。矢量层里本来就带着精确的文字和坐标,直接解析比重新 OCR 一遍准得多,也快得多。只有当矢量层是曲线轮廓(文字被转曲)时,才退回图像通道。

2. 版面分区:先划地盘,再抠内容

这一步决定了后面所有环节的天花板。我们的做法是先用线框检测找出图框、标题栏与表格的边界,再结合关键词锚点(比如「图号」「材料」「比例」「数量」这类固定标签)校正区域。纯形态学的线检测在分隔线断裂或模糊时会失败,所以必须准备回退方案——投影法在这类退化场景下相当稳,两者互为兜底可以把分区失败率压得很低。

3. 字段抽取:锚点优先,位置兜底

标题栏格式在不同企业、不同年代之间差异巨大,硬编码坐标必然维护不动。更稳的策略是以标签文字为锚点:找到「图号」两个字,它右侧或下方的第一个非空单元格就是值。当锚点缺失时(有些老图只有格子没有标签),再用该企业模板的相对位置兜底,并把这类结果标记为低置信度。

4. 结构还原:保住行列关系

明细表最怕错行错列。合并单元格、多级表头、跨页续表是三大高发故障点。我们的处理原则是:先用线框重建出网格拓扑,再把文本块按几何中心归入单元格,最后用语义规则做一次交叉校验——比如「数量」列应当全是整数、「材质」列的取值应当落在企业物料字典里。校验不通过的行不要静默丢弃,标出来交给人看。

5. 置信度分级与人工复核

没有任何一套系统能做到百分之百,重点是让错误可被发现。我们给每个字段输出一个置信度,并划出三档:高置信度直接入库;中置信度进入抽检池;低置信度强制人工确认。配合上原图坐标回溯,复核人员点一下字段就能跳到图上对应位置,核对一个字段通常只要几秒。这一层设计好了,整体交付质量才有保障。

三、三个容易被忽略的工程细节

  • 单位与编码归一。同一个材料在不同图纸上可能写成「AL6061」「Al-6061」「铝 6061」。落库前必须过一遍归一化字典,否则下游统计全是碎片。
  • 保留原文与坐标。结构化值和原始文本要同时存。一旦下游发现异常,能立刻回到原图定位,而不是重跑一遍全流程。
  • 版本与修订。同一图号可能有 REV.A 到 REV.D 多个版本,入库时必须带上版本维度,否则新旧数据互相覆盖,问题往往几个月后才暴露。

判断一套提取方案好不好,不要只看单张图的演示效果。拿 50 张你自己最难的图跑一遍,看字段级正确率、看低置信度的比例、看复核一张图要多久——这三个数字比任何宣传口径都真实。

四、怎么验收

建议在立项时就把验收口径写进文档,至少明确四件事:样本怎么抽(覆盖哪些图幅、年代与来源)、标注规范是什么(空字段算不算、全角半角算不算错)、正确率按字段级还是字符级统计、以及低置信度比例的上限。口径固定下来之后,不同方案之间才有可比性,迭代也才有意义。

经验值参考:在图面清晰、模板相对统一的批次上,标题栏字段级正确率通常可以做到较高水平;而在低质量扫描件占比高的历史图纸批次上,务必预留人工复核工时,不要按理想值排产。

小结

图纸数据结构化的核心,不是找一个更强的 OCR,而是建立一条「版面理解 → 字段归属 → 结构还原 → 可追溯复核」的完整链路,并且让每一步的产出都能被验证。做到这一点,图纸里沉睡多年的信息才能真正流进 PLM、ERP 与知识库,成为可用的数据资产。