OCR文字识别在UI自动化上的运用

2024-08-21 11:18

本文主要是介绍OCR文字识别在UI自动化上的运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用了Airtest的图像识别后发现在一些文字的识别上有些不准确,猜测可能是特征值比较低吧,容易匹配错。

在论坛上也看到过有人用OCR的方式,记不得是哪个帖子了,用的是腾讯云的接口吧。

按这个思路尝试了一下,腾讯云的接口有次数限制,我找了讯飞的接口,完全免费,也能用

原理很简单,给这个接口上传一张图片,后台处理生成识别出来的文字以及位置坐标。

有几个云平台提供了OCR的接口,腾讯云超过一定次数就收费,我找到了科大讯飞的接口是完全免费的。

给这个接口上传一张图片,后台处理生成识别出来的文字以及位置坐标。

所以,只要把设备的屏幕截图保存,读进来,转成base64编码,传给讯飞云接口

等着结果返回json串,解析里面包含你要找的文字,拿到位置坐标,算出中心点

点击

搞定

贴代码,讯飞云上的demo代码照搬有问题,改了一下

import urllib
def OCR_getPos(target):filePath = snapshot()f = open(filePath, 'rb')file_content = f.read()base64_image = base64.b64encode(file_content)body = urllib.parse.urlencode({'image': base64_image}).encode(encoding='utf-8')url = 'http://webapi.xfyun.cn/v1/service/v1/ocr/general'api_key = '1e90ca2d09d7213bf6770f34e6d2e70b'#用你自己的api_key替换param = {"language": "cn|en", "location": "true"}x_appid = "c23538b5" #用你自己的appid替换,我这个是乱敲的哈x_param = base64.b64encode(json.dumps(param).replace(' ', '').encode(encoding="utf-8"))x_param_b64_str = x_param.decode('utf-8')x_time = str(int(int(round(time.time() * 1000)) / 1000))string = api_key+x_time+x_param_b64_strstring = string.encode('utf-8')# string = api_key + str(x_time) + x_param# m = hashlib.new('md5')# m.update(string.encode(encoding='UTF-8'))# x_checksum = m.hexdigest()# hash = hashlib.new('md5')# hash.update(.encode(encoding='utf-8'))# x_checksum = hash.hexdigest()x_checksum = hashlib.md5(string).hexdigest()x_header = {'X-Appid': x_appid,'X-CurTime': x_time,'X-Param': x_param_b64_str,'X-CheckSum': x_checksum}req = urllib.request.Request(url, body, x_header)result = urllib.request.urlopen(req)result = result.read().decode()jsonObject = json.loads(result)location=Nonetry:data = jsonObject.get('data').get('block')for block in data:if block.get('type') == 'text':data = blockexcept:print('no words')returnlines = data.get('line')for line in lines:words = line.get('word')for word in words:content = word.get('content')if content is not None and target in content:location = word.get('location')print(location)if location :x1 = int(location.get('top_left').get('x'))y1 = int(location.get('top_left').get('y'))x2 = int(location.get('right_bottom').get('x'))y2 = int(location.get('right_bottom').get('y'))width = x2 -x1height = y2 - y1center_x = x1 + width/2center_y = y1 + height/2pos = [center_x, center_y]touch(pos)print(result+'\n')print(data)if __name__ == '__main__':OCR_getPos('姓名')

 

这篇关于OCR文字识别在UI自动化上的运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093002

相关文章

Python实现自动化接收与处理手机验证码

《Python实现自动化接收与处理手机验证码》在移动互联网时代,短信验证码已成为身份验证、账号注册等环节的重要安全手段,本文将介绍如何利用Python实现验证码的自动接收,识别与转发,需要的可以参考下... 目录引言一、准备工作1.1 硬件与软件需求1.2 环境配置二、核心功能实现2.1 短信监听与获取2.

Python实现Microsoft Office自动化的几种方式及对比详解

《Python实现MicrosoftOffice自动化的几种方式及对比详解》办公自动化是指利用现代化设备和技术,代替办公人员的部分手动或重复性业务活动,优质而高效地处理办公事务,实现对信息的高效利用... 目录一、基于COM接口的自动化(pywin32)二、独立文件操作库1. Word处理(python-d

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

Python实现自动化表单填写功能

《Python实现自动化表单填写功能》在Python中,自动化表单填写可以通过多种库和工具实现,本文将详细介绍常用的自动化表单处理工具,并对它们进行横向比较,可根据需求选择合适的工具,感兴趣的小伙伴跟... 目录1. Selenium简介适用场景示例代码优点缺点2. Playwright简介适用场景示例代码

Pytorch微调BERT实现命名实体识别

《Pytorch微调BERT实现命名实体识别》命名实体识别(NER)是自然语言处理(NLP)中的一项关键任务,它涉及识别和分类文本中的关键实体,BERT是一种强大的语言表示模型,在各种NLP任务中显著... 目录环境准备加载预训练BERT模型准备数据集标记与对齐微调 BERT最后总结环境准备在继续之前,确

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像

Python自动化处理手机验证码

《Python自动化处理手机验证码》手机验证码是一种常见的身份验证手段,广泛应用于用户注册、登录、交易确认等场景,下面我们来看看如何使用Python自动化处理手机验证码吧... 目录一、获取手机验证码1.1 通过短信接收验证码1.2 使用第三方短信接收服务1.3 使用ADB读取手机短信1.4 通过API获取

Rust中的Drop特性之解读自动化资源清理的魔法

《Rust中的Drop特性之解读自动化资源清理的魔法》Rust通过Drop特性实现了自动清理机制,确保资源在对象超出作用域时自动释放,避免了手动管理资源时可能出现的内存泄漏或双重释放问题,智能指针如B... 目录自动清理机制:Rust 的析构函数提前释放资源:std::mem::drop android的妙