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

相关文章

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

10个Python自动化办公的脚本分享

《10个Python自动化办公的脚本分享》在日常办公中,我们常常会被繁琐、重复的任务占据大量时间,本文为大家分享了10个实用的Python自动化办公案例及源码,希望对大家有所帮助... 目录1. 批量处理 Excel 文件2. 自动发送邮件3. 批量重命名文件4. 数据清洗5. 生成 PPT6. 自动化测试

10个Python Excel自动化脚本分享

《10个PythonExcel自动化脚本分享》在数据处理和分析的过程中,Excel文件是我们日常工作中常见的格式,本文将分享10个实用的Excel自动化脚本,希望可以帮助大家更轻松地掌握这些技能... 目录1. Excel单元格批量填充2. 设置行高与列宽3. 根据条件删除行4. 创建新的Excel工作表5

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element

Python Invoke自动化任务库的使用

《PythonInvoke自动化任务库的使用》Invoke是一个强大的Python库,用于编写自动化脚本,本文就来介绍一下PythonInvoke自动化任务库的使用,具有一定的参考价值,感兴趣的可以... 目录什么是 Invoke?如何安装 Invoke?Invoke 基础1. 运行测试2. 构建文档3.

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下