免费扫描软件
无广告、无水印

腾讯云API-OCR表格识别踩坑小结

版权归作者所有,任何形式转载请联系作者。

作者:你说什么都对(来自豆瓣)

来源:https://www.douban.com/note/794210894/

腾讯云提供了一个在线生成代码的地方,比如表格识别就是这个:

https://console.cloud.tencent.com/api/explorer?Product=ocr&Version=2018-11-19&Action=RecognizeTableOCR&SignVersion=

注册后,先要实名认证,不然不给用。。为什么百度不需要呢?

然后直接请求,会报错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/

未经允许不得转载:坚果云扫描 » 腾讯云API-OCR表格识别踩坑小结
分享到: 更多 (0)

免费扫描软件 无广告 无水印

坚果云扫描下载坚果云扫描介绍