按键识别源码 (按键精灵源码)

今天有两位网友问我文字识别的问题,推荐了百度云识别的方法,对于文字比较规整的情况识别率还是挺好的。

之前有一期文章写过,不过源码用了一个别的插件,时常有人问怎么没有那个插件,这次重新修改了一下,并且直接封装成了函数供大家使用。

在使用封装函数前先说一下,怎么获取必要的api和Secret:

首先你要有一个百度账号,这是最起码的要求,然后登陆百度云识别平台 http://ai.baidu.com/tech/ocr新建一个应用,获取到API Key和Secret Key,这两个就是开启api使用大门的钥匙。

按键精灵百度云识别插件,按键代码大全

准备工作做好就可以使用我的函数了。

Import "shanhai.lua"

Dim 路径="/sdcard/pictures/tu.jpg"

SnapShot(路径)

Dim arr=BaiDuOCR("7h4Y7Ejb21kUrXYpxhmQRfnt","zgGwEcIcXFCWrsqmALYLGzrnGq2qaMjy",路径,1)

TracePrint arr

Function BaiDuOCR(api, Secret, path, n)

TracePrint "文字识别中,请耐心等待..."

Dim ret_arr()

Dim token=url.get("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id="&api&"&client_secret="&secret)

dim mytoken=Encode.JsonToTable(token)

Dim base64=ShanHai.ReadFileBase(path)

Dim 图片=shanhai.CharToUrl(base64)

Dim post内容="access_token="&mytoken["access_token"]&"&Content-Type=application/x-www-form-urlencoded&image="&图片&"&detect_direction=true"

Dim myjson=url.post("https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic",post内容)

myjson = Encode.JsonToTable(myjson)

For i = 0 To UBOUND(myjson["words_result"])

ret_arr(i)=myjson["words_result"][i+1]["words"]

Next

If n = 0 Then

BaiDuOCR = ret_arr

ElseIf n = 1 Then

BaiDuOCR=join(ret_arr,"")

End If

End Function

在代码第4行是调用函数,这里我直接留了我自己的百度云识别密钥,如果是测试的话,可以直接使用,如果是你正式的脚本记得使用自己的密钥。下面介绍一下这个函数的参数如何填写:

BaiDuOCR(api, Secret, path,n)共有4个参数:

参数1:api key的值

参数2:Secret key的值

参数3:要识别图片

参数4:返回值的类型,0代表数组,1代表字符串(注:识别多行内容可存入数组)

一直想把代码重新整理一下,这次封装成函数方便新手朋友使用,关于百度云识别规整的文字识别率还行,不过速度比较慢,如果没有识别速度的要求,还是不错的选择,大家不妨去试试。

好了内容就这些,以后我会陆续把一些不错的功能封装成函数发出来,方便大家使用。