首页 > 编程知识 正文

按键精灵文字识别详细教程,按键精灵 文字识别

时间:2023-05-03 11:52:41 阅读:280203 作者:3471

按键精灵通过实践,也可以接入百度的OCR,百度OCR免费额度为,每日50000次普通调用,对于日常应用已经足够,返回识别内容时间在1s以内(免费版有一秒内请求次数限制,不充钱也无法达到更短的时间)。百度OCR的优势是,相比找图识字,OCR可以无视文字背景,以及文字的字体,颜色,粗细,角度进行文字识别,更加省心。

第一步:申请百度OCR服务

这一步非常简单,进入 百度智能云-登录 ,登入百度账号后,在产品应用里面选择文字识别服务

进入后,选择创建应用,相关参数选择默认的即可,最后会得到自己的APIKey 和SecretKey,这两个参数十分重要,把它们复制下来保存起来。

重要:有了这两个key,就可以尝试请求百度,然后看返回access token是否成功,如果不成功,那就是key有问题。具体请求方法,百度的页面有各种教程,对应各种编程语言和环境。

第二步 在按键精灵中使用百度OCR

首先下载封装好的百度OCR命令库:点击下载,

把BaiduOCR.qml放到按键精灵安装文件夹下面的lib文件夹里头,路径为:

C:Program Files (x86)按键精灵按键精灵2014lib

在按键精灵菜单,“我的命令库”中能够找到一个叫做BaiduOCR的自定义库,这个函数需要6个参数,分别是APIKey和SecretKey的值,以及需要识别屏幕矩形区域左上点和右下点的四个坐标值:(APIKey,SecretKey,x1,x2,y1,y2),调用这个自定义库会返回一个识别文本结果。

※使用时,不要让其他东西把识别区域遮住

具体调用方法:

APIKey = "填写自己的" ’加在引号里头,别丢了引号SecretKey= "填写自己的"’在脚本开始就指定好APIKey和SecretKey的值,后面只需要填写需要识别区域的坐标值即可。test = Lib.baiduOCR.Words(APIKey,SecretKey,56,0,209,39)TracePrint "识别结果为:"& test

这次识别的目标是以下游戏画面的指定部分(红框),选择背景和文字颜色接近的部分,测试下百度OCR的准确度,使用按键精灵自带的“抓抓” 工具的“选择区域”去获取坐标(蓝框):

将获取到的坐标(x1,x2,y1,y2)填好,点击调试,结果为:

以上文字被轻松识别。

在一个脚本中,我们可以多次调用文字识别不同区域,并得到不同的识别结果,之后可以用识别结果对一个或多个变量进行赋值,比如针对一个游戏画面,将角色名字识别到之后赋值给变量name,识别到技能名称后赋值给变量skill。之后,可以根据赋值的结果进行其他操作。

视频教程

充分进行了视频演示。

B站地址:按键精灵+百度文字识别OCR使用教程_哔哩哔哩_bilibili

示例1,根据识别的结果反馈不同的按键操作

selectMenu=Lib.baiduOCR.words(APIKey,SecretKey,1509, 268, 1613, 323) ’指定选择菜单作为识别区域 If selectMenu = "是" Then ’识别选择菜单是否出现“是”,如果出现就按下L,没出现就按K Delay 1000 KeyPress "L", 1 ElseIf KeyPress "K", 1 End If’用条件语句判断识别结果的最后一个字是不是符合要求,符合就操作stage1_title = Lib.baiduOCR.words(APIKey,SecretKey,1462,419,1728,486) s1 = right(stage1_title,1) ’取出识别结果的最右边(即最后)一个字 If s1 = "納" or s1="場" or s1="島" or s1="地" Then Delay 500 KeyPress "L", 1 Delay 3000 KeyPress "K", 1 End if

注意:

本命令库函数可以识别多行内容,但是最终赋值只会保留最下面一行的结果,请在使用时最好只针对一行文字进行识别。如果要保存所有内容,请善用按键精灵的写入文本功能。

多行识别示例:

words = Lib.baiduOCR.Words(APIKey,SecretKey, 323,375,528,478)TracePrint words

识别下图右下角的多行文字(百度OCR可以识别简繁体,英文):

调试结果:

可以看出变量word的值是最新的那一行字。

在百度的后台,能够看到当天调用的次数,以及查询历史调用次数,可以随时查询是否超过每日限制。

五分快三计划单是否出现“是”,如果出现就按下L,没出现就按K Delay 1000 KeyPress "L", 1 ElseIf KeyPress "K", 1 End If’用条件语句判断识别结果的最后一个字是不是符合要求,符合就操作stage1_title = Lib.baiduOCR.words(APIKey,SecretKey,1462,419,1728,486) s1 = right(stage1_title,1) ’取出识别结果的最右边(即最后)一个字 If s1 = "納" or s1="場" or s1="島" or s1="地" Then Delay 500 KeyPress "L", 1 Delay 3000 KeyPress "K", 1 End if

注意:

本命令库函数可以识别多行内容,但是最终赋值只会保留最下面一行的结果,请在使用时最好只针对一行文字进行识别。如果要保存所有内容,请善用按键精灵的写入文本功能。

多行识别示例:

words = Lib.baiduOCR.Words(APIKey,SecretKey, 323,375,528,478)TracePrint words

识别下图右下角的多行文字(百度OCR可以识别简繁体,英文):

调试结果:

可以看出变量word的值是最新的那一行字。

在百度的后台,能够看到当天调用的次数,以及查询历史调用次数,可以随时查询是否超过每日限制。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。