研究百度 OCR 的 API,主要是向做对扫描版的各种 PDF 进行文字识别并转 Word 文档的需求。
这里用 Postman 客户端进行测试和演示。因为 Postman 是对各种 API 操作的最佳入门方式。一旦在 Postman 里实现了正确的调用,剩下的就只是一键生成代码,和一些细节的修改了。
参考百度云官方文档:文字识别 API 参考下载官方文档 PDF:OCR.zh.pdf
授权字符串 Access Token
Token 字符串永远是你使用别人 API 的第一步,简单说,就是只有你自己知道的密码,在你每次向服务器发送的请求里面加上这个字符串,就相当于完成了一次登录。
如果没有 Token 授权认证,API 的访问可能会像浏览网页一样简单。
Access Token 一般是调用 API 最重要也最麻烦的地方了:每个公司都不一样,各种设置安全问题让你的 Token 复杂化。而百度云的 Token,真的是麻烦到一定地步了。
参考:百度 API 的鉴权认证机制 (建议你不要参考,因为它的流程图会先把你镇住的)
简单说,获取百度云 token 字符串的主要流程就是:
创建一个应用,获得只有自己知道的 id 和密码
用 POST 方式把 id 和密码发给百度的一个链接:
https://aip.baidubce.com/oauth/2.0/token
其中,需要你向这个地址传送三个参数:
grant_type = client_credentials 这个是固定的
client_id = xxx 这个是你在百度云管理后台创建 OCR 应用的时候,那个应用的 API Key
client_secret = xxx 这个是你的应用的 Secret Key
等待服务器返还给你一个包含 token 字符串的数据
记住这个 token 字符串,并用来访问每一次的 API
来看看怎么利用 Postman 操作,如下图所示:
填好以后点击 Send 发送,就会获得一个 JSON 数据,如下图:
然后你用你的程序 (Python, PHP, Node.js 等,随便),获取这个 JSON 中的 access_token,即可用到正式的 API 请求中,做为授权认证。
正式调用 API:以 ” 通用文字识别 ” 为例
API 链接:https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic
提交方式:POST
调用方式有两种:
方式一:直接在 URL 填写信息
直接把 API 所需的认证信息放在 URL 里是最简单最方便的。
~ 方式二:Headers 填写信息方式~
建议忽略这种方式,需要填写很多 request 的标准 headers,太麻烦。
Headers 设置:
Content-Type = application/x-www-form-urlencoded
只要填这一项就够了。
Body 数据传送的各项参数:
access_token = xxx 把之前获取到的 token 字符串填到这里来
image = xxx 把图片转成 base64 字符串填到这里,不需要开头的 data:image/png;base64,
url = xxx 也可以不用传图片而是传一个图片的链接。但是百年无效,不要用!
language_type = CHN_ENG 识别语言类型。默认中英。
Body 的数据如图所示:
然后就可以点 Send 发送请求了。成功后,可以得到百度云返回的一个 JSON 数据,类似下图:
返回的是一行一行的识别字符。百度云的识别率是相当高的,几乎 100% 吧。毕竟是国内本土的机器训练出来的。
API 常用地址
以下是百度云的 OCR 常用 API 地址,每个 API 所需的参数都差不多,略有不同。所有的 API 和地址以及详细所需的参数,参考官方文档,很简单。一个弄明白了就其他的都明白了。
API
请求地址
调用量限制
通用文字识别
https://aip.baidubce.com/rest…
50000 次 / 天免费
通用文字识别(含位置信息版)
https://aip.baidubce.com/rest…
500 次 / 天免费
通用文字识别(高精度版)
https://aip.baidubce.com/rest…
500 次 / 天免费
通用文字识别(高精度含位置版)
https://aip.baidubce.com/rest…
50 次 / 天免费
网络图片文字识别
https://aip.baidubce.com/rest…
500 次 / 天免费