安卓按键精灵的文字识别思路

目前安卓按键常用的文字识别有两大类,一是从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的后期处理变得容易很多。

element命令

element命令是按键自带界面元素命令,它的优点是提取速度比较快,缺点是只有简单的提取处理命令。

目前也有基于这个命令开发的elementEx插件。

关于xml提取文字就说这些,下面来说说ocr文字识别的几种方式。

所有ocr文字识别都是对于图像的查找。

制作字库

制作字库的原理是把图片先变成黑白二值化图,然后把图像拆分,每一个拆分后的图像对应一个或者多个文字内容,如下图:

制作字库的方法我在基础课21课专门讲了,想学习的朋友可以去看看。

这里面有需要注意的细节:

①图片上的文字不要求是完整的。

比如这个图像我们也可以把它当做“按”字处理。

②同一个文字,可以对应多个图片

两个图片都可以对应“按”字。

③基于第②点字库在做的时候要多写几个,也就同一个文字有多个对应的图片,保证在发生细微变化后识别的准确性。

这一点对于初学者很容易忽略。

本地光学文字识别 

本地光学文字识别是按键助手新版本增加的命令Image.OcrText,相对于自己做字库,按键提供了一个现成的ocrlib字库,对于简单的文字识别来说,还是很好用的。

api云识别

比较常用的是百度云识别,对接百度api,每天免费5万次,对于普通识别还是够用。

当然还有其他的api云识别,比如有道识别、优图识别等等,原理上都差不多。

前段时间我发了一个验证码文字识别api的文章,也是一样的原理。

虹鱼图灵识别

这个插件也是关于图像处理的插件,借用它介绍中的一句话:这个虹鱼图灵识别工具适用于AI人工智能机器人、图形图像、颜色和文字识别领域的相关行业作为学习参考。

对于这方面感兴趣的朋友推荐去学一下。

个人习惯建议

我们遇到需要识别文字的时候,优先考虑用提取xml,如果不支持,再考虑用ocr识别,当然除了学习研究以外,不建议自己做字库,直接用云识别就挺好的。

转载自微信公众号:3分钟学堂

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注