2行代码帮你搞定自动化测试的文字识别

本文涉及的产品
视觉智能开放平台,视频通用资源包5000点
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 2行代码帮你搞定自动化测试的文字识别

前言



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环境中使用 airtesttesseract ,所以需要在本地的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)
复制代码


相关文章
|
文字识别 小程序 测试技术
网易私有云新增的测试驱动力,Airtest-ocr文字识别点击真香!
网易私有云新增的测试驱动力,Airtest-ocr文字识别点击真香!
791 0
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
268 4
|
1月前
|
数据采集 运维 监控
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
本文系统解析爬虫与自动化核心技术,涵盖HTTP请求、数据解析、分布式架构及反爬策略,结合Scrapy、Selenium等框架实战,助力构建高效、稳定、合规的数据采集系统。
爬虫与自动化技术深度解析:从数据采集到智能运维的完整实战指南
|
2月前
|
运维 Linux 网络安全
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
自动化真能省钱?聊聊运维自动化如何帮企业优化IT成本
107 4
|
4月前
|
运维 监控 安全
从实践到自动化:现代运维管理的转型与挑战
本文探讨了现代运维管理从传统人工模式向自动化转型的必要性与路径,分析了传统运维的痛点,如效率低、响应慢、依赖经验等问题,并介绍了自动化运维在提升效率、降低成本、增强系统稳定性与安全性方面的优势。结合技术工具与实践案例,文章展示了企业如何通过自动化实现运维升级,推动数字化转型,提升业务竞争力。
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
283 4
|
8月前
|
机器学习/深度学习 人工智能 运维
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
351 14
|
10月前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化事件响应:智慧运维新时代
基于AI的自动化事件响应:智慧运维新时代
480 11
|
8月前
|
机器学习/深度学习 人工智能 运维
基于AI的自动化服务器管理:解锁运维的未来
基于AI的自动化服务器管理:解锁运维的未来
794 0

热门文章

最新文章

下一篇
oss云网关配置