图片信息现在越来越广泛的存在于我们的日常生活中,获取图片内的文字信息也渐渐的成为当今生活中的需求,在学习完Python的基础知识后,本小白以此语言为工具,使用百度提供的图像识别接口来实现简单的图片文字提取(承蒙各位大佬关照);
学习URL:https://ai.baidu.com/docs#/OCR-Python-SDK/top
第一步:安装使用python sdk;(如果以安装pip:执行pip install baidu-aip命令即可,若有PyCharm直接在setting中配置)
第二步:导入相关库文件,新建我们的客户对象;
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
以上代码中的APP_ID、API_KEY、SECRET_KET在自己创建的图像识别应用中都能找到;(连接地址:https://ai.baidu.com/)
第三步:获取图片信息并配置相关属性;
获取本地图片信息:
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()#返回文件读取对象
image = get_file_content('example.jpg')
通过URL来获取图片信息:
img = "ImageUrl" #直接提供图片链接即可
进行相关属性的配置options:(配置信息如下表所示)
""" 如果有可选参数 """
options = {}#配置字典
options["language_type"] = "CHN_ENG"#识别文字类型
options["detect_direction"] = "true"#是否检测图片的朝向
options["detect_language"] = "true"#是否检测语言
options["probability"] = "true"#是否返回置信度
字段 | 必选 | 类型 | 值 | 说明 |
language_type | 否 | string | CHN_ENG ENG POR FRE GER ITA SPA RUS JAP KOR | 识别语言类型,默认为CHN_ENG。可选值包括: - CHN_ENG:中英文混合; - ENG:英文; - POR:葡萄牙语; - FRE:法语; - GER:德语; - ITA:意大利语; - SPA:西班牙语; - RUS:俄语; - JAP:日语; - KOR:韩语; |
detect_direction | 否 | string | true false | 是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括: - true:检测朝向; - false:不检测朝向。 |
detect_language | 否 | string | true false | 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语) |
probability | 否 | string | true false | 是否返回识别结果中每一行的置信度 |
最后根据不同的获取图片方式调用不同的操作方法即可:
'''本地图片信息'''
result=client.basicGeneral(image, options)
'''本地图片信息'''
result=client.basicGeneralUrl(url, options)
#options为可选参数,可以只提供图片文件对象或者图片url
结果(result)的以字典类型返回,相关类型与说明如下表所示:
字段 | 必选 | 类型 | 说明 |
---|---|---|---|
direction | 否 | number | 图像方向,当detect_direction=true时存在。 - -1:未定义, - 0:正向, - 1: 逆时针90度, - 2:逆时针180度, - 3:逆时针270度 |
log_id | 是 | number | 唯一的log id,用于问题定位 |
words_result_num | 是 | number | 识别结果数,表示words_result的元素个数 |
words_result | 是 | array | 定位和识别结果数组 |
+words | 否 | string | 识别结果字符串 |
probability | 否 | object | 行置信度信息;如果输入参数 probability = true 则输出 |
+average | 否 | number | 行置信度平均值 |
+variance | 否 | number | 行置信度方差 |
+min | 否 | number | 行置信度最小值 |
返回结果样例图:
完整代码:(以识别本地图片信息为例,小伙伴们可自行测试URL的操作方式)
from aip import AipOcr
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()#获取图片信息
image = get_file_content('example.jpg')#与当前py文件在同一路径下
""" 如果有可选参数 """
options = {}
options["language_type"] = "CHN_ENG"
options["detect_direction"] = "false"
options["detect_language"] = "true"
options["probability"] = "true"#配置相关参数
""" 带参数调用通用文字识别, 图片参数为本地图片 """
result=client.basicGeneral(image, options)
print("提取的文字信息:")
for i in result["words_result"]:
print(i["words"])#打印图片文字信息
测试图片:(测试结果对图片的文字提取的可信度大约能在90%以上基本上能够实现对文字信息的提取)
测试结果: