首页 > 其他分享 >【转】按键精灵电脑版对接百度ai,告别字库(文字识别篇)

【转】按键精灵电脑版对接百度ai,告别字库(文字识别篇)

时间:2022-11-05 16:46:26浏览次数:318  
标签:Function Set ai json token url 按键精灵 字库 WinHttp

根据百度ai接口api文档,用post或者get请求,封装参数请求响应即可. 

百度ai开放平台地址

前提你得会使用按键精灵电脑版的post,get请求,简单说明一下,get请求传递的参数封装太url后缀里,post请求参数封装在requestBody里,请求头和编码啥的,看我代码copy就行了 

百度ai文字识别需要请求两个接口,才能拿到识别结果
1.获取token的接口
2.根据获取的token,请求文字识别的接口,参数为base64图片进行url编码(utf8)后的字符+token 

1.获取token

先来看看文档怎么说的:

这里咱们用标准版,好处是免费,每天识别次数多5万次嘞,白嫖怪上线了
文档地址 

从文档中可以看出,我们需要传递的必要参数为
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key; 

所以,这里需要先创建应用

创建应用,拿到API Key和Secret Key:

1首页链接

2点击控制台

3扫码登陆

4点击后台菜单的文字识别

5创建应用

6应用列表拿到参数:API Key和Secret Key

请求接口,拿到token

直接get请求,官方推荐post,但是我用get请求主要是懒,返回的json字符串,需要用vbs代码解析,按键精灵直接导入使用就是,没门槛.

———————————————————————————————————————

grant_type = "client_credentials"

api_key = "xxx"

secret_Key = "xxx"

url = "https://aip.baidubce.com/oauth/2.0/token?grant_type=" & grant_type & "&client_id=" & api_key & "&client_secret=" & secret_Key

TracePrint "url:"&url

Dim WinHttp

Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")

WinHttp.SetTimeouts 60000, 60000, 60000, 3000

WinHttp.Open "GET", url, False'GET 或 POST, Url, False 同步方式;True 异步方式

WinHttp.Send

返回值 = WinHttp.ResponseText

TracePrint 返回值

resToken = json解析(返回值, "access_token")

Call Plugin.File.WriteINI("缓存token", "token", resToken, basePath & "\文字识别.ini")

获取token = resToken

——————————————————————————————————————— 

json解析插件在评论区有链接,注意获取的token有效期是一个月,可以做一个本地缓存,过期了重新获取,这样可以减少请求时间.然后我们就拿到token了 

2. 识别文字

文档地址 

文档中可以看出,请求方式问post,请求必要参数为:

1access_token

2image(本地图片base64编码然后urlencode,编码格式utf-8)或url(网络图片地址) 二选一

响应参数也是json格式 

直接上代码

———————————————————————————————————————

Function 文字识别ex(图片路径)

    返回值 = 文字识别(图片路径)

    文字数组 = json解析(返回值, "words_result")

    word = ""

    If UBound(文字数组)>=0 Then

        For i = 0 To UBound(文字数组)

            返回值 = 文字数组(i)("words")

            //TracePrint 返回值

            word = word + 返回值

        Next

    End If

    文字识别ex = word

End Function

 

Function 文字识别(图片路径)

    base64图 = imgToBase64(图片路径)

    base64图 = 编码(base64图)

    TracePrint "base64图:"&base64图

    token = 获取token

    TracePrint token

    url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=" & token

    TracePrint "文字识别url:"&url

    Dim WinHttp

    Set WinHttp = CreateObject("WinHttp.WinHttpRequest.5.1")

    WinHttp.SetTimeouts 60000, 60000, 60000, 3000

    WinHttp.Open "POST", url, False'GET 或 POST, Url, False 同步方式;True 异步方式

    WinHttp.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"

    WinHttp.Send ("image="&base64图)

    返回值 = BytesToBstr(WinHttp.responseBody,"utf-8")//返回直接取中文乱码,所以先转为字节再转字符串

    TracePrint 返回值

    文字识别 = 返回值

End Function

 

Function imgToBase64(FilePath)

    Dim xml

    Dim root

    Dim fs

    Dim objStream

    Dim objXMLDoc

    Dim Base64

    Set objXMLDoc=CreateObject("Microsoft.XMLDOM")

    objXMLDoc.loadXML "<?xml version='1.0' ?><data></data>"

    Set fs = createObject("Scripting.FileSystemObject") ''FSO组件

    If fs.FileExists(FilePath) Then '判断File文件是否存在

        '用 stream 来读取数据

        Set objStream = CreateObject("ADODB.Stream")

        objStream.Type = 1

        objStream.Open

        objStream.LoadFromFile FilePath

        objXMLDoc.documentElement.dataType = "bin.base64"

        objXMLDoc.documentElement.nodeTypedvalue = objStream.Read

        '数据流读取结束.得到了值 objXMLDoc

        '创建XML文件

        Set xml = CreateObject("Microsoft.XMLDOM")

        xml.load objXMLDoc

        If xml.ReadyState>2 Then

            Set root=xml.getElementsByTagName("data")

            Base64 = root.Item(0).Text

            //TracePrint "Base64=" & Base64

            Base64 = Replace(Base64,vbLf,"") '不知道为什么带换行符,可能是长度不够自动换行,需要去除掉

        else

            Base64=""

        End If

        Set xml=Nothing

        Set objStream=Nothing

    else

        Base64=""

    End If

    Set fs=Nothing

    Set objXMLDoc=Nothing

    imgToBase64 = Base64

End Function

 

Function 解码(str)

    Set obj = New vbsUrlEnCode

    解码   = obj.URLDecode(str)

End Function 

Function json解析(json字符串,key)

    Set json = New vbsJson

    Set o = json.Decode(json字符串)

    json解析 =  o(key)

End Function 

Sub json插件注册

    PutAttachment basePath, "*.*"//释放附件到全局路径

    Import "c:\lw_game\vbsjson.vbs"

    Import "c:\lw_game\vbsUrlEnCode.vbs"

End Sub 

Function 打印接日期(msg)

    TracePrint "【"&Date&" "&Time&"】"&msg

End Function

 

vbsjson.vbs点击下载
vbsUrlEnCode.vbs点击下载

——————————————————————————————————————— 

版权声明:本文为CSDN博主「绅士1993」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 

原文链接:https://blog.csdn.net/aitanxiaofeng/article/details/112351285

标签:Function,Set,ai,json,token,url,按键精灵,字库,WinHttp
From: https://www.cnblogs.com/a247347515/p/16860502.html

相关文章

  • JavaIo案例
    1、常用的文件操作方式一:根据路径构建一个File对象://方式1@Testpublicvoidcreate1(){StringfilePath="D:\\file1.txt";Filefile=newFile(filePa......
  • JavaIO流理解
    JavaIO流理解文件什么是文件?文件是我们保存数据的地方。文件流文件在程序中是以流的形式来操作的。流:数据在数据源(文件)和程序(内存)之间经历的路径输入流:数据从......
  • 【第5篇】AI语音简介
    1.3 AI语音简介AI语音既人工智能语音技术,以语音识别技术为开端,实现人机语言的通信,包括语音识别技术(ASR)、自然语言处理技术(NLP)和语音合成技术(TTS)。通俗点说就是通过语音......
  • 极智AI | 昇腾算子开发工程目录
     大家好,我是极智视界,本文介绍一下昇腾算子开发工程目录。 好了,以上分享了昇腾算子开发工程目录,希望我的分享能对你的学习有一点帮助。......
  • containerd和shim通信
    containerd-shim-runc-v2启动了一个ttrpcserver(类似grpc)containerd通过ttrpc和containerd-shim-runc-v2 通信来管理容器serviceTask{ rpcState(StateReques......
  • AI | 第4章 深度学习 TensorFlow2 入门笔记
    第4章深度学习TensorFlow2入门笔记​​前言​​​​1.深度学习介绍​​​​1.1机器学习与深度学习的区别​​​​1.2深度学习的应用场景​​​​1.3深度学习框架介绍......
  • Vulnhub Vulnerable Docker Containment靶机解题过程(部分,未完成)
    VulnerableDockerContainment识别目标主机IP地址─(kali㉿kali)-[~/Vulnhub/Vulnerable_docker]└─$sudonetdiscover-ieth1Currentlyscanning:192.168.60.0/1......
  • 全球名校AI课程库(38)| 马萨诸塞大学 · 自然语言处理进阶课程『Advanced Natural Langu
    ......
  • uniCloud云函数结合nodemailer发送邮件的方法
    使用uniCloud云函数结合nodemailer发送邮件的时候,在本地调试可以发送成功,但是当我把云函数上传后,就不能发送到邮件了,但是云函数依旧执行了。开始我以为是node.js版本的原因......
  • AI 作画《NBA球星动漫头像》| 用stable diffusion生成
    扩散模型原理扩散模型是一种概率模型,通过逐步去噪一个正态分布变量来学习数据分布p(x),对应于学习长度为t的固定马尔可夫链的反向过程。模型可以通过训练去噪自编码器来实现(T......