百度AI文字识别--python笔记
网址:http://ai.baidu.com/docs#/OCR-API/top
# coding:utf-8
import urllib, urllib2, base64
access_token = '#####调用鉴权接口获取的token#####'
url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=' + access_token
# 二进制方式打开图文件
f = open(r'########本地文件#######', 'rb')
# 参数image:图像base64编码
img = base64.b64encode(f.read())
params = {"image": img}
params = urllib.urlencode(params)
request = urllib2.Request(url, params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if (content):
print(content)
access_token 为url请求参数,要添加到url中。以二进制打开图片,然后对其进行base64编码。
请求方式为post请求。data(请求体,json)为params,需要对data进行urlencode编码。
也可以这样写
# params={}
# params['image']=ls_f
# params=urllib.urlencode(params)
对请求参数进行urlencode编码的原因有
1.是因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的
2.因为 url 对字符有限制,比如把一个邮箱放入 url,就需要使用 urlencode 函数,因为 url 中不能包含 @ 字符。另外,url中出现&会截断字符串。
3.url转义其实也只是为了符合url的规范而已。因为在标准的url规范中中文和很多的字符是不允许出现在url中的。
4.url中如果有个参数值时url,在传输时则会出现很多错误。此时就需要进行urlencode编码。