目前Android键常用的字符识别有两种,一种是从xml中提取界面字符,另一种是ocr图像识别字符。这两种方法各有优缺点:从xml中选择文本:优点:速度快,识别准确。缺点:不是所有app都
目前Android键常用的字符识别有两种,一种是从xml中提取界面字符,另一种是ocr图像识别字符。
这两种方法各有优缺点:
从xml中选择文本:
优点:速度快,识别准确。
缺点:不是所有app都支持,游戏也不支持。
Ocr图像识别:
优点:全部支持。
缺点:速度较慢,不能百分百准确。
根据这两大类,梳理按键所涉及的命令方式;
这里只是简单介绍一下。具体操作,可以在历史文章中搜索相关信息。首先说一下xml提取界面文本的方法。
山海插件getuixml命令提取xml文本山海插件的getuixml命令的原理是通过uiautomator dump获取app上的页面元素,然后保存在window_dump.xml文件中,再读取window_dump.xml文件中的xml信息。
xml信息包括界面上元素的文本、元素的位置和其他信息。通过提取这些信息,我们可以得到我们想要的。
当然,由于xml是由大量代码组成的,对于初学者来说会有点难度。
getuixml命令有一个明显的缺点。识别速度不够快,一般要几秒钟才能读入xml文件。
Jsd插件获取xml文本jsd插件的核心是xml文件的提取和处理。这里我加上文字处理,因为山海插件主要是提取xml文件,后期提取xml中有效内容涉及的命令很少。
jsd插件获取xml的方式不再是uiautomator dump,而是安装一个jsd.apk文件,通过它获取xml。这有一个明显的优点,就是提取xml的速度大大提高,可以实现毫秒级的提取。
同时,jsd插件做了很多提取xml的命令,使得提取xml的后期处理变得容易很多。
元素命令元素命令是在按键上具有界面元素的命令。它的优点是提取速度更快,缺点是只有简单的提取和处理命令。
也有基于该命令开发的elementEx插件。
这就是从xml中提取单词的全部内容。先说一下ocr字符识别的几种方式。
所有ocr字符识别都是搜索图像。
制作字体库制作字体库的原理是先把一张图片变成黑白二值图像,再把图像拆分。每个分割图像对应一个或多个文本内容,如下图所示:
我在基础课21课讲过字体的制作方法。想学习的朋友可以去看看。
以下是需要注意的细节:
①图片上的文字应该不完整。
比如我们也可以把这个形象当做一个“按”字。
②同一文字可以对应多张图片。
两张图都可以对应“按”字。
③在点②的基础上在字体库里多写几个字,也就是同一个字有多个对应的图片,保证稍加改动后识别的准确性。
这一点很容易被新手忽略。
局部光学字符识别本地光学字符识别是命令图像。新版本的按键助手中增加了OcrText。相比自己制作字体,Keys提供了现成的ocrlib字体,对于简单的字符识别还是非常好用的。
Api云识别常用的是百度云识别,对接百度api,每天免费5万次,足够普通识别。
当然还有其他的api云识别,比如有道识别,优图识别等等,原理都差不多。
前段时间我贴了一篇验证码文本识别api的文章,也是这个原理。
红土岭鉴定这个插件也是一个关于图像处理的插件。借用其介绍中的一句话:这款彩虹鱼图灵识别工具适用于AI人工智能机器人、图形图像、颜色、字符识别等领域的相关行业作为学习参考。
对这方面感兴趣的朋友推荐学习一下。
个人习惯建议当满足识别字符的需求时,我们优先提取xml,如果不支持,我们会考虑ocr识别。当然除了学习研究,不建议自己做字体,直接用云识别也挺好的。