aircv安装_教你搞定Airtest测试中⽂字识别 Airtest是⼀款 基于图像识别原理 的跨平台UI⾃动化测试框架,它能够根据⼤量的 特征点 来识别⼀个截图在当前画⾯中的位置,但是它并不能识别出截图中具体包含了什么⽂字。 ⽽在⾃动化测试的过程中,我们会经常遇到需要进⾏⽂字识别的场景,⽐如 识别验证码 、 识别截图中的⽂字 、 读取截图中的数值 等等,遇到这些情况时我们可以如何处理呢?
今天教⼤家⽤⼀款免费的开源图像OCR⽂字识别软件 -- Tesseract-OCR 来处理上述情况。
1.安装
⾃动化软件测试交流:642830685,领取最新软件测试资料⼤⼚⾯试和Python⾃动化学习资料!⼀起学习交流
在⽹上搜索“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 验证环境是否配置成功:
⾃动化软件测试交流:642830685,领取最新软件测试资料⼤⼚⾯试和Python⾃动化学习资料!⼀起学习交流
2.在本地python环境中安装pytesseract
因为我们最终要在python环境中使⽤ airtest 和 tesseract ,所以需要在本地的python环境中安装上 airtest 库和 pytesseract 库:
pip install airtest
pip install pytesseract
复制代码vvint
安装完毕后可以在命令⾏输⼊ pip list 检查安装结果:
3.⽤airtest截图并识别截图⽂字
打开我们的AirtestIDE,在 选项--设置--⾃定义路径 中设置我们刚才安装好对应库的python环境:
以之前官⽹提供的 poco demo的界⾯为例,我们⽤ airtest 把红框部分的截图截取下来,然后再利⽤ tesseract 把截图中的⽂字识别并打印出来:
具体实现如下:
# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
api import *
from airtest.aircv import * auto_setup(__file__) from PIL import Image import pytesseract # 局部截图 screen =
G.DEVICE.snapshot() local = p_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)
⾃动化软件测试交流:642830685,领取最新软件测试资料⼤⼚⾯试和Python⾃动化学习资料!⼀起学习交流