简介:本文围绕自动化脚本中的文字识别需求,系统讲解如何采集屏幕图像、处理二值化像素、构建字符字库并完成数字识别。读者将了解从截图、取色、点阵提取到自定义字库的完整流程,掌握提升识别准确率的关键技巧。
在自动化脚本开发中,文字识别是一项常见且关键的能力。很多业务场景需要脚本自动读取屏幕上的数字、文本或状态信息,例如读取终端中的输入数字、识别验证码区域、提取界面上的计数或编号等。本文将以“识别终端中显示的数字”为目标,完整说明如何借助按键精灵及其配套工具完成屏幕截图、颜色处理、二值化、字库构建与文字定义,最终实现稳定的数字识别。
按键精灵的文字识别并不依赖深度学习或大规模模型,而是采用一种更轻量、更可控的字库匹配方式。其核心思路可以概括为以下几个步骤:
这种方式的好处是逻辑透明、可控性强,适合固定字体、固定颜色或变化范围较小的识别场景。
在开始识别之前,需要先创建一个字库文件。字库文件用于存储字符的点阵模板和对应含义,是整个识别流程的基石。
打开配套的“综合工具”,选择“新建字库”,为字库文件命名。例如可以命名为 test.txt,后续所有关于字符模板的保存都会写入这个文件。
接着进入截图环节。在综合工具界面中,可以使用快捷键 Ctrl + 1 或点击截图按钮进入抓图模式。此时鼠标会变为选区状态,按住鼠标左键在屏幕上拖动,框选需要识别的目标区域。松开鼠标后,按下回车键即可确认并保存截图。
截图完成后,左侧预览窗口会显示刚刚截取的图像。这一预览窗口是后续进行颜色选择、二值化观察和点阵提取的基础。
截图完成后,图像中往往包含多种颜色和干扰元素。例如终端窗口可能是深色背景,数字文字是浅色或彩色字体,周围还可能存在边框、光标、其他文本等。直接使用原始图像进行匹配会导致大量误识别,因此必须进行二值化处理。
二值化处理的目的,是将图像中“需要识别的部分”与“不需要识别的部分”彻底分离,通常表现为黑白两色。具体操作步骤如下:
选择目标颜色:在左侧颜色方框区域中,任意选取一个颜色方格。将鼠标移动到该颜色上方并左键点击,表示准备定义该颜色在二值化中的处理方式。
点击预览区域取色:将鼠标移动到左上方的预览图像区域,瞄准数字文字的颜色部分,左键点击一次。这一步会告诉工具“该颜色属于需要保留的目标像素”。
观察二值化结果:此时工具下方的二值化区域会实时显示处理效果。通常目标文字会变为一种颜色,而背景和干扰元素会变为另一种颜色。
如果识别效果不理想,例如背景中的其他元素也被保留下来,或者文字边缘残缺,可以重新调整颜色选择,或者考虑缩小截图范围。
在实际操作中,初始截图范围越大,包含的干扰信息就越多。例如终端窗口中不仅有数字,还可能有菜单栏、滚动条、光标、其他提示文字等。这些元素如果颜色与目标数字接近,就可能被误识别为有效内容。
因此,一个重要的优化策略是:尽量缩小截图范围。
截图范围应当紧贴目标字符,只保留数字本身以及尽可能少的背景区域。如果一次截图范围过大,建议重新截图,只框选目标数字所在的最小矩形区域。这样不仅可以降低二值化处理难度,也能显著提高后续点阵提取和字库匹配的准确率。
完成二值化处理后,就可以将处理后的像素图案提取为字符模板。综合工具通常提供两种提取方式:
“提取单个”会将二值化区域中的所有内容视为一个整体,生成一个完整的点阵模板。这种方式适用于区域内只有一个字符,或者所有内容需要作为一个整体识别的情况。
“提取多个”则更智能。它会自动分析二值化区域中的字符边界,将相邻但相互分离的像素块拆分为多个独立字符。对于连续排列的数字,例如“123”,该功能可以自动识别为三个独立的字符区域,并分别生成点阵模板。
提取多个功能在大批量录入字库时非常实用,可以显著减少手动操作次数。
提取点阵之后,字库并没有真正完成。此时程序只知道某个图案是一个像素点阵,并不知道它代表的实际含义是什么。必须手动为每个点阵模板指定对应的文字内容。
操作方式如下:
在“定义文字”输入框中,输入该图案对应的中文含义或实际字符。例如,如果当前点阵是数字“1”,就在输入框中输入“1”。
输入完成后,必须按下回车键进行保存。回车键在这里不仅表示确认输入,还承担了写入字库的保存动作。
保存成功后,字库数量会相应增加。例如首次保存后,字库数量显示为 1。
在“|”符号左侧,会显示当前图形编码对应的中文含义。例如 1| 表示该点阵模板被定义为数字“1”。
这一步是整个字库构建流程中最关键、也是最容易出错的地方。如果忘记按回车键,或者输入的文字与实际图案不一致,后续识别时就会出现错误结果。
完成一个字符的定义后,需要继续对剩余字符进行相同的操作。对于数字识别场景,通常需要构建 0 到 9 共十个数字的字库条目。
具体做法是:
构建完整字库后,当脚本再次截图并识别时,就可以将屏幕上的数字图案与字库中的十个模板逐一比对,从而判断出具体是哪个数字。
在实际项目中,简单录入十个数字模板可能仍然无法满足所有识别需求。为了提升识别稳定性,可以考虑以下几点:
字库模板对字体、字号、颜色较为敏感。如果终端中的数字字体发生变化,或者颜色出现渐变,识别率可能下降。因此,应尽量保证识别环境与字库采集环境保持一致。
如果数字在不同状态下显示效果不同,例如正常状态、高亮状态、选中状态等,可以为同一个数字录入多个不同外观的模板。这样在匹配时,脚本可以根据实际图像选择最接近的模板,提高容错能力。
截图区域应尽量小,只包含需要识别的字符,避免无关内容的干扰。同时,保持截图区域的位置和大小固定,有助于提高匹配稳定性。
当终端界面升级或字体发生变化时,原本的字库可能失效。建议定期进行识别校验,发现识别率下降时及时补充或更新字库条目。
掌握了上述方法后,除了识别终端中的数字,还可以将相同思路应用到更多场景。例如:
这些场景都遵循相同的流程:截图、二值化、提取点阵、定义含义、保存字库、运行匹配。只要目标字符外观相对稳定,就能达到较好的识别效果。
按键精灵的文字识别功能提供了一种轻量、可维护的字库匹配方案。通过综合工具完成截图和颜色处理,再通过二值化与点阵提取构建字符模板,最后为每个模板赋予明确的文字含义,即可实现数字或文本的自动识别。
整个流程的核心在于:截图范围控制、颜色二值化、点阵提取和字库定义。只有每一步都做到规范,最终识别效果才能稳定可靠。对于自动化脚本开发者而言,掌握这套方法能够有效扩展脚本的应用范围,提升自动化流程的智能化水平。