文字自动识别在我们平时生活中还是可以见到一些,比如简单的验证码识别,不少服务商也提供了这种识别服务, 本文以百度的OCR服务为例,简单的介绍了下其使用方法。
- 服务商: APIStore
- 所属分类: 工具
- 更新时间: 2015-06-08
- apikey: 42d199bc0a50cd8e109ff880ecc444fe
- 服务简介: 文字识别是百度自然场景OCR服务,依托百度业界领先的OCR算法,提供了整图文字检测、识别、整图文字识别、整图文字行定位和单字图像识别等功能。服务尚在试运行阶段,暂时未全面放开,有大规模商用需求的请联系APIStore官方,邮箱apistore@baidu.com。
API
- 接口地址:http://apis.baidu.com/apistore/idlocr/ocr
- 请求方法:POST
- 请求参数:
参数名 | 类型 | 必填 | 参数位置 | 描述 | 默认值 |
---|---|---|---|---|---|
fromdevice | string | 是 | bodyParam | 来源,例如:android、iPhone、pc等 | pc |
clientip | string | 是 | bodyParam | 客户端出口IP | 10.10.10.0 |
detecttype | string | 是 | bodyParam | OCR接口类型,“LocateRecognize”;“Recognize”;“Locate”;“SingleCharRecognize”。LocateRecognize:整图文字检测、识别,以行为单位;Locate:整图文字行定位;Recognize:整图文字识别;SingleCharRecognize:单字图像识别 | LocateRecognize |
languagetype | string | 否 | bodyParam | 要检测的文字类型:目前支持 1. CHN_ENG(中英) 2. ENG 3.JAP(日文) 4.KOR(韩文) ,不填写这个字段默认为CHN_ENG | CHN_ENG |
imagetype | string | 是 | bodyParam | 图片资源类型, 1.表示经过BASE64编码后的字串,然后需要经过urlencode处理(特别重要);2.图片原文件 | 1 |
image | string | 否 | bodyParam | 图片资源,目前仅支持jpg格式,原始图片size需小于300k | 略(图片的base64码) |
apikey | string | 是 | header | API密钥 | 您自己的apikey |
实例
curl 示例
curl 'http://apis.baidu.com/apistore/idlocr/ocr' --data 'fromdevice=pc&clientip=10.10.10.0&detecttype=LocateRecognize&languagetype=CHN_ENG&imagetype=1&image=/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDABMNDxEPDBMREBEWFRMXHTAfHRsbHTsqLSMwRj5KSUU+RENNV29eTVJpU0NEYYRiaXN3fX59S12Jkoh5kW96fXj/2wBDARUWFh0ZHTkfHzl4UERQeHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHj/wAARCAAfACEDAREAAhEBAxEB/8QAGAABAQEBAQAAAAAAAAAAAAAAAAQDBQb/xAAjEAACAgICAgEFAAAAAAAAAAABAgADBBESIRMxBSIyQXGB/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/APawEBAQEBAgy8i8ZTVV3UY6V1eU2XoWDDZB19S646Gz39w9fkKsW1r8Wm2yo1PYis1be0JG9H9QNYCAgc35Cl3yuVuJZl0cB41rZQa32dt2y6OuOiOxo61vsLcVblxaVyXD3hFFjL6La7I/sDWAgICAgICB/9k=' -H 'apikey:42d199bc0a50cd8e109ff880ecc444fe'
python 示例
结果:
{"errNum":"0","errMsg":"success","querySign":"4133219207,2531900678","retData":[{"rect":{"left":"0","top":"0","width":"33","height":"31"},"word":" 8"}]}
如果想使用自己的文件,就要注意对文件内容进行编码,同时要去除其中的\n
,否则会出现请求参数非法
的错误。
具体处理文件的如下:
image_data = open('IMG.jpg', 'rb').read()
data['image'] = image_data.encode('base64').replace('\n', '')
IMG.jpg
替换成需要的文件名就可以了。
如图片:
返回结果:
{u'errNum': u'0', u'retData': [{u'word': u'91691', u'rect': {u'width': u'65', u'top': u'2', u'height': u'15', u'left': u'3'}}], u'querySign': u'1748889226,621381071', u'errMsg': u'success'}
识别出了内容为91691