python3调用百度API--ocr实现图像/文字/验证码识别

python3调用百度API–ocr实现图像/文字/验证码识别

本文介绍一下python3调用百度API–ocr实现图像/文字识别。

其他的请参看:
谷歌tesseract-ocr4.0实现图像/文字识别,

在上一篇的tesseract-ocr中,实际上这个模型的识别能力是比较弱的,那么如果我们做一些需求量不大的任务时候,就可以考虑国内的大品牌接口。
如下是调用百度API的OCR进行图像/文字/验证码的识别。

妈蛋文章本来写得早,只是后面存到草稿箱忘了。。

本文相关资料:

百度API文档

远程调用参考:https://segmentfault.com/n/1330000015490371

下载百度API库

下载baidu-aip这个库,
可以直接使用pip下载:pip install baidu-aip

也可以在PyCharm等开发工具中下载。
你也可以直接去下载百度AI提供的SDK工具。百度AI—sdk工具包下载。

图示:
python3调用百度API--ocr实现图像/文字/验证码识别_第1张图片

2.创建应用

进入百度AI平台:http://ai.baidu.com/

登录,选择产品服务:
python3调用百度API--ocr实现图像/文字/验证码识别_第2张图片

创建应用:
填写自定义名称,勾选需要的API模块,不需要,和随便描述。
python3调用百度API--ocr实现图像/文字/验证码识别_第3张图片
创建完成,拿到id key,Secret Key:
python3调用百度API--ocr实现图像/文字/验证码识别_第4张图片

3.python调用API

打开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("识别完成。")
    

其中:
请求的参数:
python3调用百度API--ocr实现图像/文字/验证码识别_第5张图片

返回的参数是这样的:
python3调用百度API--ocr实现图像/文字/验证码识别_第6张图片
示例:

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": "青島睥酒"}
	]
}

效果:只提取出来文字部分,其他地方不要。

调整一下格式:
python3调用百度API--ocr实现图像/文字/验证码识别_第7张图片
python3调用百度API--ocr实现图像/文字/验证码识别_第8张图片

报错问题:

1.如果出现
{‘error_code’: 6, ‘error_msg’: ‘No permission to access data’}

python3调用百度API--ocr实现图像/文字/验证码识别_第9张图片
解决办法:

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)

其他不变。
python3调用百度API--ocr实现图像/文字/验证码识别_第10张图片


相比之前的谷歌的tesseract-ocr4.0,百度的OCR-API效果更好一些,后面还有腾讯OCR的测试。

你可能感兴趣的:(python相关)