前言
前不久有朋友为了方便工作,问我“怎么把图片中的文字提取出来”,我当时就想到手机QQ扫一扫刚好可以实现这个功能,就让他先将图片传到手机,然后再用手机QQ扫一扫
告诉他之后,我也感觉有点不妥,要是一张两张还好,要是图片多了,一直把图片传到手机,用手机QQ扫是极其影响工作效率的,然后就去百度了下看看有没有那种在线识别的,居然没找到。于是乎,作为一个“程序员”,哪能被这些东西给难倒,于是开启了我的探索之旅。
API选择
在看了众多接口后,如七牛云、搜狗、百度、有道等等ORC接口面前,我选择了良心云。
完善的API文档,良心的计费方式,体验还是蛮不错的。
这里我选择的是 OCR-通用印刷体识别
腾讯云OCR
简介:
支持http和https协议
请求头:
host:recognition.image.myqcloud.com
content-type:multipart/form-data
authorization:鉴权签名生成方式
返回内容
返回内容示例(不完整):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
HTTP/1.1 200 OK Connection: keep-alive Content-Length: 404 Content-Type: application/json { "data":{ "items":[ { "itemstring":"手机", "itemcoord":{"x":0,"y":100,"width":40,"height":20}, "words":[ {"character":"手","confidence":90.9}, {"character":"机","confidence":93.9} ] } ], "session_id":"", }, "code":0, "message":"OK" } |
计费方式
调用注意事项
1.authorization生成
我就卡这里很久,后来才发现是没开通万象优图
首先,必须开通万象优图,记住Bucket名称
。
其次,进入API管理系统,记住 APPID
、 SecretId
、 SecretKey
查看authorization生成文档,按照官方给出的authorization函数,生成authorization即可。
2.请求头参数
content-length为非必选参数,建议不填。以下为必填。
host:recognition.image.myqcloud.com
content-type:multipart/form-data
authorization:(哈希值)
PHP源码分享
其实也没啥,不超过100行代码。大家可以参考下,有bug可以留言。(PHP版本7.2)
Github地址:https://github.com/qcgzxw/OCR
在线体验:https://test.freea.org/OCR
使用体验:
- 返回值很详细,包括文字出现的X,Y值,单个文字置信度,文字偏转角度,等等···
- 返回值丰富,便于开发
- 无法识别旋转角度不同的文字。(例如,有一半的文字是水平的,另一半是有超过45°的偏斜,将无法识别)
- 文字采用单个识别,未添加联想。
- 部分小图标会被识别为文字。