版权归作者所有,任何形式转载请联系作者。
作者:你说什么都对(来自豆瓣)
来源:https://www.douban.com/note/794210894/
腾讯云提供了一个在线生成代码的地方,比如表格识别就是这个:
注册后,先要实名认证,不然不给用。。为什么百度不需要呢?
然后直接请求,会报错UnOpenError-服务未开通,请前往控制台开通相应服务。
需在这里开通https://cloud.tencent.com/login?s_url=https%3A%2F%2Fconsole.cloud.tencent.com%2Focr%2Fgeneral
垃圾交互,我找了半天不知道在哪里开通,百度搜到的答案。。。
然后就是ImageUrl和ImageBase64可以二选一,我试了上传图片拿一个url,一直报错:下载失败,也不知道是什么下载失败了,应该是说图片地址吧。只能用本地图片转ImageBase64,用从百度API那里借的代码
# 二进制方式打开图片文件
f = open(‘./t2.jpg’, ‘rb’)
img = base64.b64encode(f.read())
print(type(img))
params = {
“ImageBase64”: img
}
req.from_json_string(json.dumps(params))
首先是发现报错找不到tencentcloud,额。。腾讯云要你pip install tencentcloud-sdk-python –user
为什么百度不需要呢?
装好包,拼上后发现报错TypeError: Object of type ‘bytes’ is not JSON serializable
额。。百度这个得到答案https://blog. .net/bear_sun/article/details/79397155/
是因为json.dumps函数发现字典里面有bytes类型的数据,因此无法编码
解决方法是:只要在编码函数之前写一个编码类就行了,只要检查到了是bytes类型的数据就把它转化成str类型。
于是用以下代码终于成功了。。。
# 二进制方式打开图片文件
f = open(‘./t2.jpg’, ‘rb’)
img = base64.b64encode(f.read())
print(type(img))
params = {
“ImageBase64”: img
}
req.from_json_string(json.dumps(params,cls=MyEncoder,indent=4))
百度云没有提供在线生成代码器,就简单地给的一段示例代码,半小时我就出结果了(虽然表格识别效果很一般——所以才另外找,但至少没怎么卡住)
腾讯云这边搞得花里胡哨的,一步一卡。。
估计没找经验不丰富的人试过吧。。。
另外,表格识别V2的帮助文档写的是“支持将识别结果保存为 Excel 格式。”找了半天都没找到哪里可以把结果转excel。。。https://cloud.tencent.com/document/product/866/49525?from=information.detail.%E8%A1%A8%E6%A0%BC%E8%AF%86%E5%88%AB%E5%9C%A8%E7%BA%BF
又经过了半小时折腾,找到了转excel的方法
resp = client.RecognizeTableOCR(req)
data=resp.to_json_string() #转成json
data=json.loads(data)[‘Data’] #读data部分
data=base64.b64decode(data) #解码
with open(“file.xls”, “wb”) as f:
f.write(data)
腾讯和百度的识别效果比较看这里:https://www.douban.com/note/794215367/