您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 曲靖分类信息网,免费分类信息发布

python基于万象优图识别图片中的中文

2023/10/2 15:27:42发布31次查看
最近一直在研究光学字符识别,即ocr。最开始了解到开源的tesseract,可以拿来识别简单的英文和数字。但是识别中文的准确率并不高。
然后从tesseract到tesseract.js,经过多次尝试研究,最后发现腾讯爹的万象优图识别率是最高的。趁现在是公测免费期,赶紧尝试了一把。
下面来说一说怎么用python实现中文识别的。
首先创建一个bucket,然后可以选择上传图片
这些准备工作做好以后,就开始写代码吧
我们这里,是做图片通用印刷体识别,所以就只有被迫用万象优图提供的api:(原本我是更喜欢用sdk的,因为简单,但是目前sdk不支持)
万象优图ocr接口采用http协议,支持指定图片url和 上传本地图片文件两种方式。
根据用户提供的图片,返回识别出的字段信息。
这里有三点需要注意:
(1) 每个请求的包体大小限制为6mb。
(2) 所有接口都为post方法。
(3) 不支持 .gif这类的多帧动图。
然后我用可以使用requests模块来发http请求。
这里最麻烦的就是要定制请求头,不然腾讯云是解析不到的,笔者才疏学浅在这里研究了一下午才正确定制出了请求头。。。。
先来看看请求头的规则:
参数名

描述
host
recognition.image.myqcloud
服务器域名
content-length
包体总长度
整个请求包体内容的总长度,单位:字节(byte)
content-type
application/json或者multipart/form-data
根据不同接口选择
authorization
鉴权签名
用于鉴权的签名,使用多次有效签名。详情
这里的难点就是这个鉴权签名,直接点击表格里面的详情去看吧,我这里不做复制粘贴。
关于请求参数:
使用image则使用 multipart/form-data格式
不使用image则使用 application/json格式
是否必须
类型
参数说明
appid
必须
string
项目id
bucket
空间名称
image
可选
binary
图片内容
url
图片的url,image和url只提供一个即可,如果都提供,只使用url
好了,现在开始正式开始吧
先写一下请求头涉及到的变量
然后依次把他们拼接起来
我这里采用的是单次
然后再根据要求进行 hmac-sha1加密
这里强调一下,官方的说法是
根据我的研究,转换出来的不是二进制,然后我还特意去转成了二进制。。。。。。发现其实根本不用,转出来的在pycharm里面是个乱码,可以直接用的
最后,加密的数据和之前的拼接数据再拼在一起做base64转码
这样签名就完成了,后面的基本不难,主要就是签名这里有坑,下面直接上代码:
# coding=utf-8# /usr/bin/python# coding=utf-8# create by 15025463191 2017/10/11import requestsimport hmacimport hashlibimport base64import timeimport randomimport reappid = 1254602529bucket = imgregnisesecret_id = akidzx72kfvbprf4324234234o8c1auynpezyl #我更改了,不要复制我的secret_key = h9nun1rbzim11mjbut2v32432zx #我更改了,不要复制我的expired = time.time() + 2592000onceexpired = 0current = time.time()rdm = ''.join(random.choice(0123456789) for i in range(10))userid = 0fileid = tencentyunsigntestinfo = a= + appid + &b= + bucket + &k= + secret_id + &e= + str(expired) + &t= + str(current) + &r= + str( rdm) + &u=0&f= signindex = hmac.new(secret_key, info, hashlib.sha1).digest() # hmac-sha1加密sign = base64.b64encode(signindex + info) # base64转码url = http://recognition.image.myqcloud/ocr/generalheaders = {'host': 'recognition.image.myqcloud', content-length: 187, content-type: application/json, authorization: sign }payload = { appid: appid, bucket: bucket, url: http://imgregnise-1254602529.picsh.myqcloud/123456.png}r = requests.post(url, json=payload, headers=headers)responseinfo = r.contentr_index = r'itemstring:(.*?)' # 做一个正则匹配result = re.findall(r_index, responseinfo)for i in result: print i
我这里用图片试验了一次,准备率还是很高的,就是中间少了一个“餐。”
但是这样的识别率已经是很高了
最后预祝各种识别成功!(转自博客园)
· 学it,就来中公优就业:http://ujiuye/
· 2017年【中公教育】特别推出2017年就业促进计划,500万就业基金助你成为it达人
详情请戳http://ujiuye/zt/jycj/?wt.bd=bgz
曲靖分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录