这样做的缘由
工作需要把100多张图片中的文字(主要是车牌号)提取出来,并作为文件名字。用python从头到尾写车牌识别的功能,耗时耗力。故在网上寻找可用于直接图片文字识别的接口直接调用,省时省力。
用百度AI平台接口的理由
有百度经验提供每一步的参考,且通用文字识别(高精度版)的功能每天有500次的免费试用机会,且当前功能没有并发需求。故非常适合达到临时目的。
具体步骤
- 用百度账号登录百度AI开放平台:https://login.bce.baidu.com
- 选择要使用的接口:人工智能->文字识别。
- 点击创建应用,获取App ID、API key、Secret Key,记下来。
- 阅读技术文档,知晓接口的参数和返回值等信息:https://cloud.baidu.com/doc/OCR/s/Fjwvxzxgv
- 用pip install baidu-aip安装OCR Python SDK。
- 参照Python-SDK文档,修改成自己想要的效果:
from aip import AipOcr
import re
import os
APP_ID = '1*****'
API_KEY = 'U*************************'
SECRET_KEY = '0********************************'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
#把读出的文字内容统一保存在一个txt文档里
f = open(r'E:\work\filename\plateread.txt','w')
#保存了待识别图片的路径
PlatePath = r'E:\work\pic'
#按顺序识别出图片,并把图片文件名改成“识别出的文字.jpg”的格式
for Dir in os.listdir(PlatePath):
srcDir = os.path.join(PlatePath,Dir)
print(srcDir)
fsrc = open(srcDir,'rb')
img = fsrc.read()
message = client.basicAccurate(img)
for results in message.get('words_result'):
name = results.get('words')
print(name)
f.write(name)
dstDir = os.path.join(r'E:\work\pic',name) + '.jpg'
print(dstDir)
fsrc.close()
os.rename(srcDir, dstDir)
f.close()