最近用到了图片文字识别这个功能,从网上搜查了一下,决定利用百度的文字识别接口。通过测试发现文字识别率还可以。下面就测试过程简要说明一下
1、注册用户
少量使用,免费
2、创建一个应用
3、调用方式
首先 安装 pip install baidu-aip
具体实现代码:
from aip importAipOcrclassbaiduApi:def __init__(self,APP_ID,API_KEY,SECRET_KEY):'''""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key''''self.client=AipOcr(APP_ID, API_KEY, SECRET_KEY)"""读取图片"""
defget_file_content(self,imageFile):
with open(imageFile,'rb') as fp:returnfp.read()defgetWordFromImage(self,imageFile):
image=self.get_file_content(imageFile)
result=self.client.basicGeneral(image)print(result)
if __name__=="__main__":
APP_ID='15307894'API_KEY='eT4rkU2i2X2quti4Z5kIl8dT'SECRET_KEY='UCo2WIQoMq12TR98Nm2N1PgfhWT47'obj=baiduApi(APP_ID,API_KEY,SECRET_KEY)
imageFile='E:\\test5.png'obj.getWordFromImage(imageFile)
另外一种调用方式
【如果您对于使用API调用的方式很陌生,您可以参见:【只要10分钟 快速掌握文字识别】 教程
可以利用调用方式一
首先获取access_token:
注意:access_token的有效期为30天,需要每30天进行定期更换;
获取后access_token,例如文字识别API,使用HTTPS POST发送:
https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=24.f9ba9c5241b67688bb4adbed8bc91dec.2592000.1485570332.282335-8574074
importrequestsimportjsonimportbase64importosclassbaiduApi:def __init__(self):pass
def getAccess_Token(self,ApiKey='aTdOkc2i4X2qutd4Z5kIl8dT',SecretKey='UCodWIQgMq1NZTRdNmMNduN1PgfhWT47'):
url='https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(ApiKey,SecretKey)
txt=requests.get(url).text
dict1=eval(txt)
access_token= dict1.get('access_token')print(access_token)returnaccess_token#txt ={"refresh_token":"25.0dc809836ad8546c79547ec12b4bf9d7.315360000.1869465297.282335-15907896","expires_in":2592000,
#"session_key":"9mzdWESprZJdkHm0iQOcHGX2Rn2qTwQ6Q9NIKPHwTu\/DC9HqDzZzo8JJRfsE4q5OnATglorWcPy9WRFLKlrptCbdDx\/Dug==",
#"access_token":"24.c4bab673c3edbe30eb334df37d4cf434.2592000.1556697297.282335-15907896"}
# #access_token = txt.get('access_token')
#print(access_token)
defgetdata(self,imageFile,access_token):
imageBase64=Noneifos.path.exists(imageFile):
with open(imageFile,'rb') as f: #以二进制读取图片
data =f.read()
imageBase64=base64.b64encode(data).decode()ifimageBase64:
data1= {'image_type': 'BASE64','image': imageBase64,'group_id': 'group001','user_id': 'D001'}
headers= {'Content-type': 'application/x-www-form-urlencoded'}
url= 'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=%s' %access_token#post调用方式
response = requests.post(url, data=data1, headers=headers)
dict1=json.loads(response.text)#print(dict1)
words_result = dict1.get('words_result')
word= ''
for wd inwords_result:
word= wd.get('words')print(word)#print(wd.get('words'))
#return word