前言

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)

本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

识别字体软件测试,2行代码帮你搞定自动化测试的文字识别相关推荐

  1. 别在@官方加国旗啦,3分钟30行Python代码帮你搞定!还加鸡腿,加IPhone11!

    最近的一周里,小编的朋友圈被大家刷屏了,大家都在@微信的官方,想让官方为大家的头像上插入一面国旗,为祖国的70大寿祝贺. 小编也凑热闹加入了大军,但是既然咱们会Python,为什么不自己做一个呢,于是 ...

  2. 10行代码带你搞定目标检测(附代码)

    来源:大数据文摘 本文约2700字,建议阅读5分钟. 本文介绍采用代码搞定目标检测的技术. 计算机视觉是人工智能的一个重要领域,是关于计算机和软件系统的科学,可以对图像和场景进行识别.理解.计算机视觉 ...

  3. 8行代码教你搞定导航控制器全屏滑动返回效果 ————转载

    作者:@吖了个峥 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有 ...

  4. GO string 转map_用go语言,只需两百行代码就能搞定并发聊天室!

    我们都知道,Go语言就是为了高并发而诞生的,而且Go语言也是第一个在语言层面实现并发的,在一个进程内部可以启动成千上万个goroutine(例程.协程),这与线程启动是不同的,线程还是要考虑CPU核心 ...

  5. 告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!

    作者 | 苏克1900 责编 | 伍杏玲 本文经授权转载自高级农民工(ID:Mocun6) 曾几何时,「抠图」是一个难度系数想当高的活儿,但今天要介绍的这款神工具,只要 3 行代码 5 秒钟就可以完成 ...

  6. 几千行代码就能搞定,你为什么要写几万行?

    微信又改版了,为了方便第一时间看到我们的推送,请按照下列操作,设置"置顶":点击上方蓝色字体"程序员之家"-点击右上角"-"-点击" ...

  7. 国庆节,零代码帮你搞定假期美食菜单

    当国庆假期遇上美食 每一口都唇齿留香 特色美食太多,不知道吃什么? AppCube带你一分钟搞定假期美食 来一场舌尖上的旅行 零代码,让假期生活有滋有味 国庆小长假,三五好友结伴出游,最纠结的莫过于中 ...

  8. python识别latex公式_Python代码转Latex公式,这个开源库用一行代码帮你搞定

    来源:机器之心 数学是数据科学和机器学习的重要基础,数学运算的结果对于机器学习项目而言是至关重要的.在编写代码时,我们常常需要定义数学公式的计算形式.像 S=r^2 这样简单的数学公式,大概不会出现拼 ...

  9. python查询代码可循环执行_还在用鼠标进行着重复的操作?几行python代码帮你搞定!!...

    使用python实现鼠标和键盘的自动化 这篇文章说明了如何使用pyautogui模块实现鼠标和键盘的自动化,由于本模块不是内建模块,所以,我们得用下面的命令进行安装: pip install pyau ...

最新文章

  1. 设计模式总结: 5种创建型,7种结构型,11种行为型
  2. 《Git权威指南》笔记2
  3. JavaScript高级编程
  4. 把一些表单属性封装一个JSON
  5. Python 语言使用中遇到的问题汇总
  6. matlab nastran,nastran op2 matlab
  7. python字体类型arial_python 更改字体_更改字体名称而不更改默认字体python
  8. inovance变频器说明书参数设置_汇川md500说明书|汇川md500变频器使用说明书(汇川md500用户手册)下载 PDF 官方版 - 比克尔下载...
  9. 穿越“惊世骇俗”的美景
  10. Nginx不解析PHP,无法打开PHP文件
  11. PS进阶抠图详解(可以处理头发)
  12. Linux shell中21的含义解释 (全网最全,看完就懂)
  13. javaScript 高级程序设计第4版通读第二遍
  14. scp 的拷贝限速功能
  15. 在word中10秒一键将900个mathtype公式转换成word自带公式--GrindEQ公式转换神器
  16. WaWa的奇妙冒险(第一周集训自闭现场)
  17. 计算机控制面板包含的管理类别有什么,如何设置控制面板分类
  18. OllyDbg插件编写
  19. 计算机没有音频驱动程序,电脑有驱动却没有高清晰音频管理器华硕主板应该装什么声卡驱动...
  20. 信息学奥赛 python 教程_Python在信息学竞赛中的运用及Python的基本用法(详解)

热门文章

  1. 青春无敌?那只是一瞬间
  2. MediaCodec解码AAC音频,用AudioTrack播放解码后的数据
  3. Qt中实现获取中文首字母(GB2312 和 unicode以及调用Unihan实现全汉字拼音转换,支持多音字和生僻字等)和中英文数字排序功能
  4. 行云创新:车云一体化平台,实现软件定义汽车
  5. 微信小程序连接mysql
  6. 个人卖云服务器需要什么证,云服务器个人使用能做什么 云服务器要不要个人认证...
  7. [Python基础]列表List
  8. 看见的与看不见的,你看见了吗?——读《1493-物种大交换》
  9. 【Go】基于telegraf进行自定义插件开发(一)
  10. 2023秋招大厂经典面试题及答案整理归纳(161-180)校招必看