SYSTEM OK | ACTION CONTRACTS 247 DOMAINS 35 DEMO ENVIRONMENT 无需申请 | 服务热线 18926139835
首页/洞察/技术系列/铭牌 OCR 的两阶段管线

铭牌 OCR 的两阶段管线

一张铭牌照片要变成一张资产卡片,中间隔着两个性质不同的问题:把牌面上的字符读对,以及把读出来的内容放到台账的字段上去。 前者属于识别,后者属于归位。本文说明这条管线为什么切成两段、切口落在哪个位置, 以及这一处切分对性能计量与后续维护的影响。 本文只讨论管线的分段方式与理由;从照片到台账的完整落地过程与实测数据,见技术系列后续的落地篇。

作者 EAMX 产品团队 发布 2026-09-28 阅读 约 8 分钟 专题 技术系列

01一个动作里的两个问题

在业务上,铭牌建档是一个动作:设备到货,现场人员对着铭牌拍一张照片,资产卡片的字段随之生成。 在实现上,这个动作包含两个性质不同的子问题。

  • 读取。把照片上的字符转为结构化文本。此处的要求是忠实:牌面上出现过的内容如实读出,未出现的字符不作补充。
  • 归位。把读出的键值对放入台账的字段体系。此处的要求是确定:同一个键名在任何一次执行中都应归入同一个字段。

两项要求并列时,彼此并不冲突;但若交由同一次模型调用完成,会带来一个具体困难:输出的错误无法归因。 同一个填错的字段,可能源于视觉模型读错了字符,也可能源于模型对台账字段的推测。 两类偏差的修复方式完全不同——读取偏差要调整图像条件与提示词,归位偏差要调整字段映射规则。 缺少这一段区分,修正工作只能靠试错推进。

管线的第一项设计决定,就是把这两件事分开:识别交给模型,归位交给规则。

02阶段一:只负责读对

第一阶段(Stage 1)的输入是一张铭牌照片,输出是一组键值对(RawField[])。 视觉模型采用 Qwen3-VL-32B-Instruct,配以工业铭牌 OCR 专用提示词,要求输出标准 JSON。

这一阶段的关键约定是:Stage 1 不接触台账 Schema。 模型不知道资产卡片上定义了哪些字段,也不知道资产分类编码的层级结构,只被要求把照片上出现的键值对如实读出。

表 1 · Stage 1 的输入、输出与约定
项内容
输入铭牌照片一张(现场拍摄,光线与角度不受控)
输出RawField[] 键值对,保留牌面原文
模型与提示词Qwen3-VL-32B-Instruct;工业铭牌 OCR 专用提示词,要求输出标准 JSON
不涉及台账字段定义、资产分类编码、动态表单结构
后续接口有效性检查未通过的图片不进入下一阶段(见 06 节)

口径:模型标识与提示词要求取自内部实现记录;「不涉及」一栏为该阶段在代码层面的调用边界。

这一约定带来两项结果。其一,提示词与台账字段解耦:台账新增字段时,识别侧的提示词不必改写。 其二,识别结果可被多个消费端复用:同一份 RawField[] 既可用于构造资产卡片,也可用于与合同、发票等来源做交叉比对。

03阶段二:归位由查表完成

第二阶段(Stage 2)的输入是 RawField[],处理方式是查表,其中不含模型调用。 映射规则集中在一份静态表 FIELD_MAP 中,共 60 条,按精确匹配、模糊匹配、未命中三级顺序执行。

表 2 · 三级匹配的执行顺序与结果
顺序匹配方式命中结果未命中时的去向
1精确匹配归入对应的台账字段进入下一级
2模糊匹配归入最接近的台账字段进入下一级
3未命中不归入台账字段写入 technicalSpecs(技术参数 JSONB)

口径:60 条规则与三级顺序取自内部实现记录;单次匹配耗时低于 0.5 毫秒,该阶段无网络 IO。

查表方式带来三项可预期的性质。

  • 结果可复现。同一份 RawField[] 重复执行,归位结果一致。
  • 行为可审阅。规则是一张可读的表,逐条可以检查;其行为不依赖模型内部的判断。
  • 扩展成本固定。台账新增字段时,向 FIELD_MAP 追加一条入口即可,提示词与模型均不调整。
本文的核心判断

两阶段切分的实质是把可确定的部分从模型里移出来。 识别环节保留模型的判断能力,归位环节改为规则执行。 由此,字段归类的正确率不再随模型版本波动,新增字段的成本也不再体现为一次提示词改写。

04三类字段的来源与呈现

归位的结果按值的来源分为三类。这一分类与字段的重要性无关,只说明该值是如何得到的, 以及界面应当以何种方式呈现。

表 3 · 三类字段的来源、呈现与写入位置
类别值的来源界面呈现写入位置
A 类铭牌上直接读出,FIELD_MAP 精确命中绿色,直接带出资产台账字段
B 类由已有信息推断得到黄色,待人工确认资产台账字段
C 类未命中映射规则的技术参数归入技术参数区technicalSpecs(JSONB)

口径:A / B / C 三类划分与着色方式取自内部实现记录;着色规则的完整说明见技术系列《动态表单与置信度着色》。

A 类字段的可信度直接来自视觉模型的提取质量,因此识别环节的处理条件(拍摄光线、铭牌反光、字迹磨损) 会直接反映在这一类字段上。C 类的写入位置与台账字段分离,未命中映射规则的参数不会因此丢失, 也不会被强行塞进某一字段。

三类字段组装为动态表单卡片,由 prepare_equipment_form 完成。 该环节属于消费端:它决定字段以何种顺序、何种分组呈现给现场人员,其输入是前两阶段的输出。 管线本身到此为止,第三段不计入两阶段管线的定义。

05切分对性能计量的影响

分段之后,耗时可以逐段归属,性能问题因此具备定位路径。

表 4 · 各环节的主要成本与计量方式
环节主要成本计量方式
Stage 1网络往返与视觉模型推理单张照片的端到端耗时
Stage 2规则匹配,低于 0.5 毫秒进程内计时,无网络 IO
表单组装卡片构造进程内计时

这一计量方式给出过一次明确的判定:早期单张照片的端到端耗时约 130 秒, 而 Stage 2 与表单组装合计不足 1 毫秒,全部耗时集中在 Stage 1。 定位到该段之后,原因落在视觉模型的思维链开关上——思维链开启时推理过程被完整展开, 关闭该开关(enable_thinking=false)之后降至 3 至 8 秒。

与耗时定位相关的一项实现记录是客户端的选择。管线采用 OpenAI 原生客户端: 在此之前使用 Vercel AI SDK 时,enable_thinking 参数没有被正确转发至上游, 模型始终以默认状态运行,导致该项设置在一段时间内实际未生效。

本节所述的内容仅为耗时归属的判定路径。 130 秒到 3 至 8 秒的完整调优过程、测试条件与实测口径,属于落地篇的范围, 见技术系列《基于 Qwen-VL 的铭牌识别与设备台账自动建立》。 本文不重复列出该篇的测试数据。

06本管线不作出的承诺

识别类内容容易被写成超出事实的表述。以下四项为本文所述管线不作出的承诺。

表 5 · 本文的四项边界
事项本文的表述
识别准确率 不承诺 100%。未能识别的字段回到待填状态,系统不按经验值假定填充
无效图片 有效性检查未通过时不展开空白表单,改走 LLM 降级路径,由对话方式补齐信息
多源冲突 铭牌、合同与发票可并行提取;同一字段出现多个值时取置信度较高者,冲突本身留痕供复核
完全无人值守 不承诺。B 类字段与低置信度的 A 类字段需要人工确认之后方可入账

口径:本表为本文的表述范围说明;四项内容与内部实现记录中的失败处理路径一一对应。

07与相邻实现的分工

技术系列各篇说明的是同一套系统的不同侧面。与本文直接相邻的有三篇,分工如下。

表 6 · 阅读次序与各篇回答的问题
篇目回答的问题
本文 · 铭牌 OCR 的两阶段管线管线为什么切成两段,切口落在哪个位置,这一处理的代价是什么
技术系列 03 · AI Pipeline 编排器意图明确时的快速通道如何并入整体编排
技术系列 05 · 基于 Qwen-VL 的铭牌识别与设备台账自动建立从铭牌照片到设备台账的完整落地过程与实测口径
技术系列 07 · 动态表单与置信度着色识别结果的可信度如何呈现在表单上

读取环节的能力上限由视觉模型决定,归位环节的能力上限由映射规则覆盖的字段范围决定。 将两者分列,是为了在讨论识别效果时明确所指的环节:模型升级影响的是前者, 台账字段调整影响的是后者,两者的评估方式与投入方式并不相同。

08作者与依据

作者
EAMX 产品团队 · 产品与解决方案
依据
铭牌识别管线的内部实现记录:两阶段的调用边界、FIELD_MAP 的规则条数与匹配顺序、三类字段的划分方式;enable_thinking 参数的转发问题与客户端调整记录
数据来源
表 1 至表 4 的输入输出、规则条数与耗时口径;130 秒与 3 至 8 秒为单张照片的端到端耗时记录。本文不提供准确率类指标,该类指标不在管线设计的讨论范围内
引用标准
本文不涉及标准条款引用。ISO 55000 系列为本方的方法论依据,不构成认证。认证的对象是组织,而非软件——任何声称「某系统通过 ISO 55001 认证」的表述,均与 ISO 55001 所界定的认证对象不符。
更新日期
2026-09-28
01相关产品能力

本文所述的管线,在产品中位于哪个环节

02相关文章

同专题与跨专题的延伸

这条管线可以逐段核对

两阶段的调用边界、60 条映射规则、三类字段的来源划分、130 秒与 3 至 8 秒的耗时归属—— 上述各项均标注了判断口径。贵方可在演示环境上核对与资产建档、卡片字段相关的动作数量。

信息中心 / 技术评估
关心实现方式与接入细节
业务负责人 / 设备科
关心现场建档能否落地