调用百度云实现手写识别的方法,准确率佳。
1.搜索“百度云”,打开官网:
进入官网后先登录/注册;
搜索“文字识别”,点击打开,点击“立即使用”:
一定要先领取,再创建应用(需要进行实名认证):
领取“通用场景OCR”即可:
领完点击“去创建”,接口选择文字识别的全部;
这个暂不用选,填写描述就领取成功了,后面用到的就是图上打码的三部分:
以上完成后就可以开始写代码了,首先解释一些部分:
from aip import AipOcr
aip
是百度AI开放平台提供的 Python SDK,AipOcr
是其中用于光学字符识别的类。导入AipOcr
类,以便后续创建识别客户端实例,使我们能够使用百度云的 OCR 功能。
with open(picname, 'rb') as fp:
image = fp.read()
使用
with open
语句打开文件,'rb'
表示以二进制模式读取文件,读取图片文件的内容;将图片的二进制数据加载到变量image
中。
dic_result = client.basicAccurate(image)
调用
client.basicAccurate
方法,传入图片的二进制数据。向百度云 OCR 服务发送识别请求,并接收响应结果。获取图片中文字的识别结果。
res = dic_result.get('words_result', [])
从
dic_result
字典中获取words_result
键对应的值,如果不存在则返回空列表。提取识别到的文字内容。将识别结果保存到
res
变量中。
result = ''
for m in res:
result += str(m['words']) + '\n'
初始化一个空字符串
result
,然后遍历res
列表,将每个识别出的词添加到result
中,并在每个词后添加换行符。格式化识别结果为多行字符串。生成最终的识别文本。
完整代码如下:
from aip import AipOcr
# 这部分改为百度云应用中的
APP_ID = 'XXXXXXXXX'
API_KEY = 'XXXXXXXXXXXXXXXXXXX'
SECRET_KEY = 'XXXXXXXXXXXXXXXXXXXXXX'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
def pic_text_recognition(picname):
with open(picname, 'rb') as fp:
image = fp.read()
dic_result = client.basicAccurate(image)
print(dic_result)
res = dic_result.get('words_result', [])
result = ''
for m in res:
result += str(m['words']) + '\n'
return result
def main(image_path):
try:
string = pic_text_recognition(image_path)
print(f"识别结果:\n{string}")
except Exception as e:
print(f"处理 {image_path} 时出错: {e}")
# 输入图片路径
image_path = input("请输入图片路径:")
main(image_path)
运行时,输入图片文件的地址就可以。我为了方便,将图片复制到pycharm中再复制地址:
随便趴电脑上写了几行: