一文3000字教你实现Airtest测试中文字识别【保姆级教程】
Airtest是一款 基于图像识别原理 的跨平台UI自动化测试框架,它能够根据大量的 特征点 来识别一个截图在当前画面中的位置,但是它并不能识别出截图中具体包含了什么文字。
而在自动化测试的过程中,我们会经常遇到需要进行文字识别的场景,比如 识别验证码 、 识别截图中的文字 、 读取截图中的数值 等等,遇到这些情况时我们可以如何处理呢?
今天教大家用一款免费的开源图像OCR文字识别软件 – Tesseract-OCR 来处理上述情况。
1.安装Tesseract-OCR.exe
在网上搜索“Tesseract”,我们可以找到很多Tesseract-OCR的下载链接和安装教程,大家可以选择其中一个版本下载到本地即可。
下载完成后双击进入安装,需要特别注意的是,在选择安装的组件时,我们需要把 Additional language data(download) 这一选项勾上,目的是 安装各个版本的语言包 ,后续我们就不用手动下载语言包来安装了。
还有一点要注意的是,记住我们选择的软件安装路径,因为我们需要把这个路径添加到 系统环境变量 的 path 中:
另外一个要新增的环境变量是 TESSDATA_PREFIX ,如下图所示,未设置在识别过程中会报 Please make sure the TESSDATA_PREFIX environment variable is set to the parent directory of your “tessdata” directory 的错误:
完成以上工作后,我们可以在命令行用 tesseract -v 验证环境是否配置成功:
2.在本地python环境中安装pytesseract
因为我们最终要在python环境中使用 airtest 和 tesseract ,所以需要在本地的python环境中安装上 airtest 库和 pytesseract 库:
pip install airtest
pip install pytesseract
复制代码
安装完毕后可以在命令行输入 pip list 检查安装结果:
3.用airtest截图并识别截图文字
打开我们的AirtestIDE,在 选项–设置–自定义python.exe路径 中设置我们刚才安装好对应库的python环境:
以之前官网提供的 poco demo的界面为例,我们用 airtest 把红框部分的截图截取下来,然后再利用 tesseract 把截图中的文字识别并打印出来:
具体实现如下:
# -*- encoding=utf8 -*-
__author__ = "AirtestProject"from airtest.core.api import *
from airtest.aircv import *
auto_setup(__file__)from PIL import Image
import pytesseract# 局部截图
screen = G.DEVICE.snapshot()
local = aircv.crop_image(screen,(132,58,380,126))# 保存局部截图到指定文件夹中
pil_image = cv2_2_pil(local)
pil_image.save("D:/test/score0.png", quality=99, optimize=True)# 读取截图并识别截图中的文字
image = Image.open(r'D:/test/score0.png')
text = pytesseract.image_to_string(image)
print("-----------初始数据为--------------")
print(text)
识别结果如下:
知识点:
① G.DEVICE.snapshot() ,对当前设备画面进行截图并保存在内存中。
② crop_image() ,局部截图的方法,需要传入俩个参数,一个是内存中的截图,就像这里的 screen ,另一个是截取偏移 [x_min, y_min, x_max ,y_max] 。
③ Image.open() ,用来直接读取给定路径指向的图片
④ image_to_string() ,用来解析图片中的文字
4.识别验证码
以下述验证码截图为例,该截图的保存路径为 D:/test/7364.jpg :
识别方式和结果如下:
# 识别验证码
image2 = Image.open(r'D:/test/7364.jpg')
text2 = pytesseract.image_to_string(image2)
print("-----------验证码为--------------")
print(text2)
log("验证码为:"+text2)
5.识别中文文字
识别中文的方法和识别数字与英文基本一致,但比较特别的是,我们需要在 image_to_string() 方法中指定中文的语言参数(示例代码中指定了简体中文来识别截图):
# 识别中文
image3 = Image.open(r'D:/test/3.png')
text3 = pytesseract.image_to_string(image3,lang='chi_sim')
print("-----------识别出来的文字为:--------------")
print(text3)
log("识别出来的文字为:"+text3)
学习资源分享
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….
一文3000字教你实现Airtest测试中文字识别【保姆级教程】相关推荐
- 教你彻底卸载MySQL 并重装(保姆级教程 )
前言:都是自己踩过的坑(其他博主也有,不过我的特殊,按步骤走完重新安装仍要输入原密码,本篇主要解决和我问题类似的情况),跟着以下步骤走就行. 步骤一:关闭MySQL服务 右击[计算机],选择[管理], ...
- 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下
文档大纲: 本文上半部分之前已经发过了,传送门:50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上 此篇文章是整个文档的下半部分,将接着上半部分从第五章开始. 五.实时数仓建设核心 ...
- 【Midjourney实操】逼真到颤抖!保姆级教程教生成效果炸裂的图片
最近,许多由Midjourney V5创作的画作在网络上引起了热议,许多人惊呼:人类画师, 插画师, 设计师统统活不下去了! 比如下面这张中国情侣的画作: 因为前段时间这个很火, 我跟着同样的prom ...
- ❤️周末爆肝两天❤️,万字长文,手把手教你配置CSDN主页的独特域名(保姆级教程,建议收藏)
❤️ 感受下效果图 ❤️ 目录 一.前言 二.先解决有没有的问题 1. 前置条件 2. 购买云服务器 3. 购买DNS域名 4. 配置Apache2服务 5. 配置云服务器的端口映射 6. 配置ngi ...
- SpringBoot 配置 generator代码生成+knife4j接口文档(2种模板设置、逻辑删除、字段填充 含代码粘贴可用)保姆级教程(注意事项+建表SQL+代码生成类封装+测试类)
保姆级教程,逻辑删除及字段自动填充设置,特别要说明的是本次用的是MySQL数据库,如果使用Oracle数据库是,数据库配置需要改变,数据库表一定要大写,否则无法生成代码. 数据库表 CREATE TA ...
- 保姆级教程:手把手教你搭建个人网站
保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...
- [保姆级教程]教你使用ksweb+内网穿透搭建网站
[保姆级教程]教你使用ksweb+内网穿透搭建网站] https://b23.tv/fXXoLRQ
- FastText词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】
目录 一.前言 二.FastText词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 一.前言 本文是word2vec词向量篇的姊妹篇.fasttext是静态词向量构建方法的一种,本 ...
- Word2Vec词向量训练、使用及可视化操作【保姆级教程(包含藏文处理方法)】
目录 一.前言 二.Word2Vec词向量训练 2.1 数据输入格式 2.2词向量训练 三.词向量使用 四.词向量可视化 一.前言 word2vec是静态词向量构建方法的一种,本文将介绍word2ve ...
最新文章
- 选择Kong作为你的API网关
- android高德地图显示多点标记,高德地图多点标记自定义地图
- C#网络编程:4订立协议和发送文件
- Java多线程之CAS深入解析
- python convert函数_Python内置函数
- 维修变频器和服务器赚钱吗,【转】一个变频器维修老手的7年经验与心得
- C++基础::便捷函数
- 伍德里奇计量经济学导论pdf_伍德里奇 计量经济学导论 第三章第三节-1 MLR1-MLR4...
- 推荐更好用的网络检测命令
- 28335之GPIO输入
- jenkins下载插件很慢
- 苹果Mac装双系统对电脑有什么影响?Mac装双系统的利弊分析
- 出界的路径数----迭代问题与计算思维
- 苹果官方mfi认证名单_【大型推销配件现场】苹果回应iPhone12消磁,这波操作太6了 - 社会...
- linux分屏显示命令文件夹,Linux简易命令整理
- 第五天学习--存储结构与磁盘划分
- 实验9-10 平面向量加法 (15 分)
- 2020湖南省技能竞赛获奖名单_心理知识竞赛获奖名单新鲜出炉
- 【WLAN】【测试】Linux下aircrack-ng的应用之空口抓包全解
- python名片管理系统难点总结_Python学习笔记之名片管理系统