一、客戶需要一個判斷工作證姓名和輸入的姓名是否一致的需求,用Tesseract 試了下 發現識別率太低 ,只能另尋方法 ,想起百度的api接口,
1,需要先在百度https://login.bce.baidu.com 註冊一個賬號
2,進入到產品服務人工智能-->文字識別
3,在其中創建一個應用,可以發現通用文字識別的日免費量是50000次,應該是可以滿足一部分項目的需求
4,創建應用後 在管理應用裏 會看見你創建的應用和應用對應的AK和SK
二、好了準備工作OKl,接下來直接上代碼(先看下效果),注:token有效時長一般爲一個月可存儲重複使用
1,測試識別的圖片如下
2,識別效果如下 ,準確率高達100%
3,代碼如下
import base64
class CodeDemo:
def __init__(self, AK, SK, code_url, img_path):
self.AK = AK
self.SK = SK
self.code_url = code_url
self.img_path = img_path
self.access_token = self.get_access_token()
def get_access_token(self):
token_host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id={ak}&client_secret={sk}'.format(
ak=self.AK, sk=self.SK)
header = {'Content-Type': 'application/json; charset=UTF-8'}
response = requests.post(url=token_host, headers=header)
content = response.json()
access_token = content.get("access_token")
return access_token
def getCode(self):
header = {
"Content-Type": "application/x-www-form-urlencoded"
}
def read_img(img_path):
picture = requests.get(img_path)
return base64.b64encode(picture.content).decode()
image = read_img(self.img_path)
response = requests.post(url=self.code_url, data={"image": image, "access_token": self.access_token},headers=header)
return response.json()
if __name__ == '__main__':
AK = 'xxxxxxxxxxxxx'
SK = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
code_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate" # 百度圖片識別接口地址
img_paths = "http://xxxxxx" # 識別圖片的地址線上鏈接
code_obj = CodeDemo(AK=AK, SK=SK, code_url=code_url, img_path=img_paths)
res = code_obj.getCode()
code_list = res.get("words_result")
is_pass=False
if "error_code" not in res.keys():
code_list = res.get("words_result")
for i in code_list:
print i['words']
好了 如上就是調用百度OCR識別 ,百度的API接口:https://ai.baidu.com/docs#/OCR-API-GeneralBasic/top