Python + Baidu API 实现图片中文字的提取

Baidu API系统为开发者提供了许多实用的API,其中文字识别API服务功能较为成熟,如图所示已经可以满足生活中绝大多数文字识别的需求。我为大家演示一下较为基本的通用文字识别的功能。(文字识别API文档:https://ai.baidu.com/docs#/OCR-API/e1bd77f3)

Python + Baidu API 实现图片中文字的提取_第1张图片

首先,我们在调用任意一个API的时候,都需要提供专属的access_token,获取方式十分简单,只需要运行文档上的Python代码。(由于存在中文字符的注释,我已经手动添加了utf-8的编码方式)使用时需要将【官网获取的AK】和【官网获取的SK】替换为自己的AK和SK。

# coding:utf-8
import urllib, urllib2, sys
import ssl

# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
request = urllib2.Request(host)
request.add_header('Content-Type', 'application/json; charset=UTF-8')
response = urllib2.urlopen(request)
content = response.read()
if (content):
    print(content)
至于AK和SK的获取方式,则需要我们自己去Baidu API 的官网登陆并注册项目后,Baidu官方会予以分配。在上一个程序成功运行后会获得一个类似下面的长字段,将access_token的内容复制下来即可。
{"access_token":"########","session_key":"9mzdWEfZrXH+LPJjs2Jk+0M\/giCXigE9SYEsg59qOhC8Oo\/6+orj6PnMKffvzZpCBI5Ph4p0PoSwa835DUdiWmKe+PVmRA==","scope":"public vis-ocr_ocr brain_ocr_scope brain_ocr_general brain_ocr_general_basic brain_ocr_general_enhanced vis-ocr_business_license brain_ocr_webimage brain_all_scope brain_ocr_idcard brain_ocr_driving_license brain_ocr_vehicle_license vis-ocr_plate_number brain_solution brain_ocr_plate_number brain_ocr_accurate brain_ocr_accurate_basic brain_ocr_receipt brain_ocr_business_license wise_adapt lebo_resource_base lightservice_public hetu_basic lightcms_map_poi kaidian_kaidian ApsMisTest_Test\u6743\u9650 vis-classify_flower bnstest_fasf lpq_\u5f00\u653e cop_helloScope ApsMis_fangdi_permission","refresh_token":"25.dc75537152b2cc501ad6d76c1cbb0962.315360000.1831356957.282335-10693231","session_secret":"55eab565165de62c1e0ba0829763ea04","expires_in":2592000}

# coding:utf-8
import urllib, urllib2, base64


access_token = '############################################'
url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic?access_token=' + access_token
# 二进制方式打开图文件
f = open(r'图片地址', 'rb')
# 参数image:图像base64编码
img = base64.b64encode(f.read())
params = {"image": img}
params = urllib.urlencode(params)
request = urllib2.Request(url, params)
request.add_header('Content-Type', 'application/x-www-form-urlencoded')
response = urllib2.urlopen(request)
content = response.read()
if (content):
    print content
上面是调用API实现的主要代码部分,“#####################”的部分用上面复制下来的access_token替代,而‘图片地址’中则写入需要识别的图片所在的地址。我对代码做了极少的修改,主要是直接从文档中复制下来的。

下面演示一下实际使用的效果。

我们从网页上直接截取了一张图片。Python + Baidu API 实现图片中文字的提取_第2张图片

将其改名,并与实验代码放在同一个目录下,同时将其路径写入该脚本。


识别结果如图所示,实验证明,该API较为可靠。

你可能感兴趣的:(Baidu,API)