1. 前言
随着人工智能技术的不断发展,图像文字识别已经进入到了日常生活中。而Python作为当前最流行的编程语言之一,拥有非常丰富的第三方库,使得Python实现文字识别也变得异常容易。本文基于Python和百度API,将介绍如何利用Python实现图像文字识别,并提取其中的文字信息。
2. 百度API图像文字识别
2.1 百度API简介
百度AI开放平台提供了一系列的AI技术服务,其中就包括图像文字识别。百度提供了API接口,用户可以上传图片到百度服务器,由百度的云端进行文字识别并返回识别结果。
2.2 API申请
我们需要先申请百度API的应用,申请时需要提供百度账号和手机验证信息。打开百度AI开放平台的官方网站https://ai.baidu.com/,在首页右上角点击“控制台”按钮,然后选择“创建应用”进行应用的创建。
创建成功后,在应用的控制台中可以查看API Key和Secret Key,这两个密钥需要保存好,后面用到。
2.3 Python请求百度API实现图像文字识别
使用Python请求百度API进行图像文字识别,需要使用requests库发送HTTP请求,代码如下:
import requests
import base64
# 定义请求的地址和参数
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
access_token = '此处填写自己的access_token'
request_url = request_url + "?access_token=" + access_token
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
# 读取图片文件转为base64编码
with open('test.png', 'rb') as f:
img = base64.b64encode(f.read())
# 将base64编码的图片数据进行urlencode处理
params = {'image': img}
imagedata = urllib.parse.urlencode(params)
# 发送HTTP POST请求
response = requests.post(request_url, data=imagedata, headers=headers)
# 解析返回的JSON数据
result = response.json()
print(result)
上述代码将指定的图片test.png发送到百度API进行识别,并返回识别结果。其中access_token是在百度API官网申请得到的访问密钥。
3. Python代码实现
3.1 安装依赖库
Python实现图像文字识别需要安装百度API的Python SDK,使用pip命令进行安装:
pip install baidu-aip
安装完成后,就可以在Python项目中使用百度API接口进行图像文字识别了。
3.2 Python代码实现图像文字识别
下面是用Python代码实现基于百度API图像文字识别的完整代码:
from aip import AipOcr
# 百度AI开放平台控制台获取,建议保存为配置文件或变量,切忌明文保存在代码中
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()
# 图像文字识别
def img_to_str(image_path):
image = get_file_content(image_path)
# 定义参数变量
options = {
'detect_direction': 'true',
'language_type': 'CHN_ENG',
}
# 调用OCR文字识别接口
result = client.basicGeneral(image, options)
if 'words_result' in result:
return '\n'.join([w['words'] for w in result['words_result']])
else:
return '未识别出文字信息'
# 测试
if __name__ == '__main__':
image_path = 'test.png'
result = img_to_str(image_path)
print(result)
上述代码将test.png图片文件发送到百度API进行文字识别,并将识别结果输出到控制台。其中APP_ID、API_KEY和SECRET_KEY是在百度API官网申请得到的访问密钥。
3.3 图像文字识别的调参
在使用百度API进行图像文字识别时,有些参数需要用户自行调整以达到较好的文字识别效果。以下是一些常用的参数及其作用:
detect_direction:是否检测文字朝向,默认不检测,建议设置为true
language_type:可选值包括CHN_ENG(中英文混合)、ENG(英文)、JAP(日语)、KOR(韩语)等,默认为CHN_ENG
probability:是否返回识别结果中每一行文本的置信度,默认不返回
accuracy:是否开启精度检索,默认不开启。精度检索会降低识别速度和并发能力,建议在确实需要时再开启
以上参数都可以通过options参数传递给aipOcr函数,再传递给百度API进行识别。
3.4 应用场景
图像文字识别在生活中有非常广泛的应用场景,例如:
扫描纸质文档并提取其中的文字信息
识别工厂生产的产品ID码
识别车牌号和行驶证信息
识别店铺门头的文字信息,用于门牌号采集
识别机器人摄像头拍摄到的物体名称和物品信息
4. 总结
Python基于百度API实现图像文字识别可以非常便捷地获得图像中的文字信息,能够满足多种应用场景的需求。对于需要进行图像文字识别的业务或项目,可以选择使用百度API来快速实现。