按键精灵 安卓版 快速ocr识别


按键精灵安卓版ocr只能自己制作字库,准确率实在是低,而且对于大量汉字的识别没有办法

按键精灵通过调用百度识别ocr可以实现快速准确的识别汉字

首先需要注册百度开放ai账号

https://ai.baidu.com/

选择文字识别,创建应用

应用名称,类型,描述随便写,包名不需要

创建之后记住API Key和Secret Key,一会要用

 浏览器访问

https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【百度云应用的API Key】&client_secret=【百度云应用的Secret Key】
得到 access_token

然后就可以使用了,下面是示例代码

Function 百度识别(x,y,z,w)//x,y,z,w为利用按键精灵抓抓获取的范围
Import "ShanHai.lua"
Import "Cjson.lua"
Delay 1000
SnapShot "/sdcard/test.png",x,y,z,w//保存范围截图
Dim bs64,urlcode
bs64 = ShanHai.ReadFileBase("/sdcard/test.png")//先进行base64转码
urlcode=ShanHai.CharToUrl(bs64)//再进行urlcode转码
Dim 请求地址,Post数据,返回值,token,table//下面构造post
token="111111111111111111111111111111111111111111111"//这个就是accesstoken
请求地址 ="https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?"//注意最后有一个问号
Post数据 = "access_token=" & token & "&image=" & urlcode

返回值 = URL.Post(请求地址, Post数据)//返回值是json
TracePrint 返回值
table = Cjson.Decode(返回值)//转换为键表

If IsNull(table["words_result"][1]) = False Then //如果结果不为空,程序返回识别结果
百度识别 = table["words_result"][1]["words"]
End If

End Function

 有时候会存在失败情况,主要原因可能是截图问题,建议截图前加入延时

20200712

脚本以后可能写的很少了,但还是想把自己的一些 感想记录一下,现在也懒得系统整理了,就写一下我理想中的脚本吧

脚本运行的过程是从一个状态转移到另一个状态的过程,曾经写逆水寒的一个脚本,写了很多,后面才发现其实任务开始后只要两个状态就可以完美的进行下去,所以在些游戏脚本时应该将脚本过程划分为不同的状态,不同状态之间可能可以合并,减少代码量。

判断状态时一般有 两种方法,一种是标志出现,一种是标志消失。标志出现方法即判断该状态特定的标志是否出现,这种方法容易出现漏判的情况,但是比较好的方法,能够有效的防止状态转移错误。标志消失方法是判断旧状态的标志是否消失,这种方法会遇到错误进入状态的情况,使用需要警惕。

寒假写了一个小游戏的脚本,看似简单,但版本也迭代了很多很多次,每一次迭代都都感觉天衣无缝,又都会出现新的问题。但需要注意的是脚本要尽量减少一些敏感操作,对于小游戏来说就是右上角的点击和返回、主页的按键模拟需要小心,这些按键可能造成游戏的停止,其他操作万一误操作造成的影响较小。