使用百度的API来识别验证码,百度有每月若干次的免费次数配额:可以通过百度接口免费测试资源查看
选择高精度版(可以根据识别场景自己决定,或者先在功能演示界面测试一下
: )
如何获取?
首先得要有一个百度的账号,需要进行实名认证,登录百度智能云,并查看自己是否实名认证(会显示已实名认证或未实名认证):
找到产品中的文字识别:
点击立即使用:
这里面有免费尝鲜和创建应用,需要先领取自己需要的免费配额然后创建应用:
选择其中一项然后点击0元领取(我已经领取过**通用文字识别(高精度)**所以下面就没有了,但是其他的还有,说明这些里面应该可以免费领取不止一个,毕竟还有一个 全部 的选项):
自此,就领取到自己的免费配额了,接下来就是使用了:
:)
创建应用
创建应用这一步好像并没有什么特别需要注意的,按需创建即可:主要就是填填应用名称、接口选择
我开发的是web应用,不需要Android和IOS系统的HTTP SDK,可以按需勾选:
:)
创建完毕之后,可以在应用列表中查看自己创建的应用:
使用样例,在线调试
先在API在线调试这里查看一下具体示例代码
然后自己调节一下参数:
然后上传图片,点击调试:
下面是调试结果,(如果调试成功的话会)返回一个json格式:
具体使用
只需要将示例代码复制下来稍加修改运行即可:
```python
import base64
import urllib
import requests
API_KEY = "gmbLys*******xrToI" # 从上一步复制下来就会自动填充成你自己的KEY,或者从我这里复制自己手动填成自己的KEY即可
SECRET_KEY = "cQVB*******Kymg1"
def main():
url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=" + get_access_token()
image = get_file_content_as_base64("./截图/009.png",True) # 这里的路径改为需要的路径
payload = f'image={image}'# 是的,我就修改了这两行代码
headers = {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
def get_file_content_as_base64(path, urlencoded=False):
"""
获取文件base64编码
:param path: 文件路径
:param urlencoded: 是否对结果进行urlencoded
:return: base64编码信息
"""
with open(path, "rb") as f:
content = base64.b64encode(f.read()).decode("utf8")
if urlencoded:
content = urllib.parse.quote_plus(content)
return content
def get_access_token():
"""
使用 AK,SK 生成鉴权签名(Access Token)
:return: access_token,或是None(如果错误)
"""
url = "https://aip.baidubce.com/oauth/2.0/token"
params = {"grant_type": "client_credentials", "client_id": API_KEY, "client_secret": SECRET_KEY}
return str(requests.post(url, params=params).json().get("access_token"))
if __name__ == '__main__':
main()
"./截图/009.png"图片是:
在本机运行代码,结果如下:
{"words_result":[{"words":"0+9+4*6答案是?"}],"words_result_num":1,"log_id":1768475643012942234}
识别出来了内容为“0+9+4*6答案是?”
——————
接下来有什么好用的再容我慢慢尝试。