本文介绍一下python3调用百度API–ocr实现图像/文字识别。
其他的请参看:
谷歌tesseract-ocr4.0实现图像/文字识别,
在上一篇的tesseract-ocr中,实际上这个模型的识别能力是比较弱的,那么如果我们做一些需求量不大的任务时候,就可以考虑国内的大品牌接口。
如下是调用百度API的OCR进行图像/文字/验证码的识别。
妈蛋文章本来写得早,只是后面存到草稿箱忘了。。
本文相关资料:
百度API文档
远程调用参考:https://segmentfault.com/n/1330000015490371
下载baidu-aip这个库,
可以直接使用pip下载:pip install baidu-aip
也可以在PyCharm等开发工具中下载。
你也可以直接去下载百度AI提供的SDK工具。百度AI—sdk工具包下载。
进入百度AI平台:http://ai.baidu.com/
创建应用:
填写自定义名称,勾选需要的API模块,不需要,和随便描述。
创建完成,拿到id key,Secret Key:
打开pycharm:
新建 baidu_ocr.py
当前路径是: /home/xxy/PycharmProjects/different_ocr/baidu_ocr
源码:
# python 3.5
# 百度tesseract-ocr使用
from aip import AipOcr
""" API """
APP_ID = '你的appid'
API_KEY = '你的apikey'
SECRET_KEY = '你的secretkey'
# 初始化AipFace对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
def img_to_str(image_path):
""" 可选参数 """
options = {}
options["language_type"] = "CHN_ENG" # 中英文混合
options["detect_direction"] = "true" # 检测朝向
options["detect_language"] = "true" # 是否检测语言
options["probability"] = "false" # 是否返回识别结果中每一行的置信度
image = get_file_content(image_path)
""" 带参数调用通用文字识别 """
result = client.basicGeneral(get_file_content(filePath), options)
# 格式化输出-提取需要的部分
if 'words_result' in result:
text = ('\n'.join([w['words'] for w in result['words_result']]))
print(type(result), "和", type(text))
""" save """
fs = open("../txt/baidu_ocr.txt", 'w+') # 将str,保存到txt
fs.write(text)
fs.close()
return text
if __name__ == '__main__':
filePath = '../img/0001.jpg'
print(img_to_str(filePath))
print("识别完成。")
HTTP/1.1 200 OK
x-bce-request-id: 73c4e74c-3101-4a00-bf44-fe246959c05e
Cache-Control: no-cache
Server: BWS
Date: Tue, 18 Oct 2016 02:21:01 GMT
Content-Type: application/json;charset=UTF-8
{
"log_id": 2471272194,
"words_result_num": 2,
"words_result":
[
{"words": " TSINGTAO"},
{"words": "青島睥酒"}
]
}
效果:只提取出来文字部分,其他地方不要。
1.如果出现
{‘error_code’: 6, ‘error_msg’: ‘No permission to access data’}
https://blog.csdn.net/weixin_30244889/article/details/94860117
2.如果调用AipOcr的时候报错:
那么可以将如下地方修改:
from aip import AipOcr
改为:
from aip import AipImageClassify
#初始化AipFace对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
改为:
client = AipImageClassify(APP_ID, API_KEY, SECRET_KEY)