Python基于百度API识别并提取图片中文字

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来快速实现。

后端开发标签