uiautomator2+ tesseract 智能识别文字实现手游辅助外挂,打怪刷装备快人一步

本文介绍了使用uiautomator2和tesseract OCR技术开发手游辅助脚本的过程,包括需求分解、脚本开发实践,如tesseract的安装测试、Python使用tesseract识别文字、构建定时刷怪任务。通过这种方式,可以实现自动识别游戏中的文字信息,提高刷怪效率。
摘要由CSDN通过智能技术生成

一、背景

先交代下背景,就是疫情期间,随便玩了一款游戏,玩了后发现,游戏任务太繁重了,为了兼顾学习和游戏,所以就萌生了自己动手开发手游辅助外挂的想法,调研了几个手机自动化测试平台最后选中了uiautomator2,然后有了这边文章 《uiautomator2介绍及环境搭建》 以及文章《uiautomator2一分钟实现辅助外挂》
如果仔细读过第二篇文章的朋友就会发现,前面说的外挂就是 定时任务+ 模拟用户点击,如果碰上复杂点场景,就完全无法适应了,比如下面几种
在这里插入图片描述
Boss有刷新又时间间隔,然后区分“野外”,”秘境“,”神谕“,每个刷新时间都不同,那么这个辅助脚本怎么写呢,轮训点击肯定不现实,无法快人一步抢先刷到怪,怎么解决呢? 当然是如标题写的 那样,通过阅读这篇博文,大家会了解到这些知识

  • uiautomator2 截图并裁剪
  • python + tesseract 实现文字OCR识别
  • tesseract 安装及注意事项
  • 以及带大家看辅助外挂是如何一步步开发完成的。

博文可能略长,读完可能需要点耐心。
另外郑重声明,本博客仅供继续交流(因为毕竟是外挂嘛,这个自动刷挂功能,游戏里面包月要88元一月呢,所以大家懂得,源码我就不开源共享了,但伪代码下面都有的,更多大家可私下加QQ交流技术)

二、需求分解

要实现按时去刷怪,那么肯定需要上图红色框中那个刷新时间,这个文字又无法通过简单的通过控件去识别,那么就只能通过图片去实现了,我这里的思路是用网上开源的OCR文字识别库识别出时间,到这里又不得不赞叹python扩展能力真是强大,关键是拓展起来超级easy,不愧是“胶水语言”。好了,长话短说,文件OCR识别,我这里用的是tesseract,下面会介绍 tesseract 的安装简单使用。继续我们刚刚的分解,假设可以通过图片进行文字识别,那么要实现一个定时抢怪任务,我们需要的工作如下:
1、模拟点击到刷怪页面,并进行截图
2、截图到的图片做裁剪(主要是过滤其他文字识别干扰)
3、对裁剪到的图片做 灰度处理(比如彩色变黑白),然后二值化、降噪等一系列操作,主要是去除背景和一些其他的干扰。
4、识别到的数字转化为秒,然后建立定时任务
5、定时启动抢怪任务,截图每个步骤图片,拼接成一张图,供人工查下结果。
6、截重复前面5个步骤实现自动刷挂打装备
好了,下面我们一步步来实现这个效果。

三、脚本开发实践

1、tesseract 安装及测试

如果要使用Tesseract库,首先需要安装它到你的机器上。
macOS用户,我们使用Homebrew 去安装Tesseract:

$ brew install tesseract

当然有时候Homebrew 可能更新导致卡住,最简单的办法是在 .bash_profile 文件中新增一行,暂时关闭更新

export HOMEBREW_NO_AUTO_UPDATE=true

安装完成后 tesseract -v 查看是否安装完成
在这里插入图片描述
可以通过命令测试一把
比如下面一张图片
在这里插入图片描述
我们通过命令 tesseract /Users/bifeng/222222.png stdout digits
在这里插入图片描述
可以看出一下子就把数字识别出来了,这里识别得是数字,如果是中文则需要改为
tesseract /Users/bifeng/3333.jpg stdout -l chi_sim
-l 后面得参数代表识别得语言 chi_sim 代表是中文简体。
当然中文简体字体是需要额外去下载字库得,
去往https://github.com/tesseract-ocr/tessdata下载中文数据集chi_sim.traineddata,把它放到这目录下:
/usr/local/Cellar/tesseract/对应版本/tessdata/目录下即可
更多Tesseract的介绍可以访问GitHub 这里就不做过多发散了

2、python使用Tesseract库识别文字

其实在很多场景中,都会有验证码环境,一般我们都是用 python + Tesseract来识别验证码,这里我们用来识别手游上倒计时也是“适得其用” 来,使用方式如下,首先安装扩展库
a、pip install pytesseract 用于python操作pytesseract
b、对要识别的图片做降噪,简单的说就是对图片做简单处理,如裁剪指定区域,过滤其他文字的干扰,做灰度化、二值化等一些操作,提供文字识别的准确性,具体代码可以参见如下
#!/usr/bin/python

#############################
# #encoding=utf-8
# bifeng 2020.03.23
# python tesseract 文字识别工具类
###############################
import pytesseract
from PIL import Image
class TesseractUtils(object):
    @staticmethod
    def imgae_to_str(image):
        # 处理成黑白图
        image_gray = image.convert("L")
        # image_gray.show()
        # 进一步增强,使用二值化处理
        image_two = image_gray.point(lambda x: 255 if x > 129 else 0)
        #image_two.show()
        # content = pytesseract.image_to_string(image)  # 解析图片
        content = pytesseract.image_to_string(image_two, lang='chi_sim')
        print(content)
        return content

    @staticmethod
    def crop_image_to_str(image, left, top, right
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值