跳转至

多行字符:识别多行文字

一个框圈住一整块文字,软件把它切成一行一行分别识别,每行可以单独设参考内容和比对松紧。适合地址块、多行规格参数、多行说明这种"内容几行、行数固定"的地方。

如果只有一行字,而且每件产品的内容都一样,用字符识别更省事;一行字但每件都不同,用可变区域。多行字符的特点是一个框管好几行,并且比对用的是整行相似度,不是逐字模板。

前置条件

  • 检测方案里已经建好标签外框,模板图已经完成旋转拉伸。
  • 文字在模板图上清晰可读,人眼能认出来。人都认不出的字,软件也认不出。

它包含哪些检测框

新建一个"多行字符"检测项后,树里它下面有两个检测框:

检测框 管什么
"搜索参数" 允许这块文字相对模板漂移多少。文字位置每件都稳,就把容忍值调小
"多行字符参数" 识别与比对的全部设置,是主要调参的地方

调试端树里展开的"多行字符_1"检测项

新建与画框

  1. 切到"编辑模式"。
  2. 点工具栏"新建检测项",类型选"多行字符",确定。
  3. 在模板图上把整块文字拖进一个框里。框要把所有要认的行全包住,上下左右各留一点空白,不要贴着字边切。
  4. 点工具栏"训练工程"。
  5. 在树里双击"多行字符参数",打开参数窗口,点窗口左上角的运行按钮跑一次,看识别结果。

框不要拖得过大

框里混进旁边的其它文字,会被当成额外的行,把行序冲乱。宁可框得紧凑,也不要顺手把半行别的内容圈进来。

参数说明

"多行字符参数"— 上方通用设置

参数 含义 调参建议
"提取行数" 这个框里要识别几行 按实际行数填。软件按从上到下的顺序取,取满就停,多余的行不识别
"分数阈值" 单行识别的置信度门槛,低于它这一行直接丢弃 默认 0.8。字印得浅或有底纹时适当降到 0.6~0.7;降太低会把噪点认成字
"旋转补偿" 把框内图像整体旋转 0 / 90 / 180 / 270 度再识别 文字在图上是竖的或倒的才用。识别引擎对正向字最准
"当前识别结果设为参考" 把这次认出来的每一行,一键填进各行的"参考字符"(按钮在逐行表格正上方) 模板图认对了再点。认错了点它等于把错的存成标准答案
"是否屏蔽其余检测项ROI" 把别的检测项的框覆盖掉再识别 旁边的框压到这块文字上时打开。周围检测项多的时候不建议开,容易把要认的字也挡掉
"预处理" 勾上后先做一次二值化增强再识别 字浅、背景脏时试着打开
"二值化阈值" "预处理"打开后生效(不勾时置灰),0~255 从 125 起调。调到结果图里字是黑的、底是白的、笔画不断为宜

"多行字符参数"— 逐行表格

表格一行对应图上的一行文字。左边几列是结果,右边几列是这一行的判定规则。

列 含义 调参建议
"识别结果" 去掉空格 / 冒号等之后的识别内容 只读
"分数" 这一行的识别置信度 只读。长期低于 0.8 说明取像或光照要改
"验证结果" 勾上才拿这一行和"参考字符"比对;不勾只识别不判 只要读出来上传、不需要判对错的行,取消勾选
"参考字符" 这一行的标准答案 可直接在格子里输入,也可用"当前识别结果设为参考"批量填
"相似度分数" 本次结果与参考字符的相似度,0~1 只读
"相似度阈值" 相似度达到它才算 PASS 默认 1.00,即必须一字不差。个别字容易认混又不影响品质时,可放到 0.9 左右
"忽略符号" 只保留字母和数字,其余符号全去掉再比 参考字符里带括号、斜杠、点号且这些符号常被认错时打开
"忽略空格" 比对前去掉空格 默认打开,建议保持
"忽略冒号" 比对前去掉中英文冒号 默认打开,建议保持
"裁切" 只取这一行的一段来比对 行里只有中间一截是固定内容时用
"裁切起始" / "裁切结束" 取第几个字符到第几个字符 从第 1 个字符开始数
"最终结果" 这一行经过忽略 / 裁切之后,真正参与比对的内容 只读。比对总不通过时先看这一列,常常是符号没去干净

点表格里的任意一行,下方"结果详细信息"会展开这一行的"识别结果:""分数:""参考字符:""相似度分数:""最终结果:",方便逐行核对。

"搜索参数"

参数 含义 调参建议
"扩张参数" 勾上才允许框按下面的容忍值向外扩 文字位置每件都稳,可以不勾
"横向偏移容忍绝对值" 允许左右漂多少像素 默认 10。按产品实际漂移量给,给大了会把旁边内容吃进来
"纵向偏移容忍绝对值" 允许上下漂多少像素 默认 5
"横向锁定" / "纵向锁定" 锁住这个方向不扩张 只在某一个方向会漂时,把另一个方向锁上

训练与调试

  1. 画完框、改完参数,先点"训练工程"。
  2. 双击"多行字符参数",点运行按钮跑一次。
  3. 窗口左侧的结果图下拉框里可以逐张看中间产物:"检测掩模""检测区域图""旋转图""第1行""第2行"……"结果图"。哪一行切得不对,看"第N行"那张图最直接。
  4. 模板图上认对了以后,点"当前识别结果设为参考",再逐行调"相似度阈值"和三个"忽略"开关。
  5. 用"打开调试图"或"打开调试文件夹"把现场的实拍图过一遍,确认每张都稳定。
  6. 全部确认后回主界面点"保存工程"。

常见误判与处理

现象 原因 处理
识别出来的行数少于设定行数,整项判 NG 有的行"分数"低于"分数阈值",被丢掉了 先看结果图哪行没框出来;降低"分数阈值",或改善这块的照明与对焦
行序错乱,第 1 行的内容跑到第 2 行 框里混进了旁边其它内容,被当成一行 把框收紧,只包住要认的文字
识别结果对,但比对不通过 "最终结果"里还留着符号 / 空格,和"参考字符"对不上 打开"忽略符号""忽略空格""忽略冒号";或直接用"当前识别结果设为参考"重填参考字符
某个字长期被认成形近字(0 和 O、1 和 I) 印刷字体本身难分 把这一行的"相似度阈值"从 1.00 放到 0.9 左右,或改用"裁切"只比对稳定的那一段
文字是竖排或倒的,完全认不出 引擎只认正向文字 用"旋转补偿"转到正向;仍不行就调整相机安装方向
打开"是否屏蔽其余检测项ROI"后反而认不到 相邻检测项的框压住了要认的文字,被一起屏蔽了 关掉这个开关,或把相邻检测项的框缩小
首次运行这一项特别慢 识别引擎第一次使用时要加载 属正常现象,之后恢复。正式运行前先在调试端跑一次

相关页面