1. 程式人生 > >文字圖片識別很難,碰到驗證碼沒一點辦法?那是因為你不會python

文字圖片識別很難,碰到驗證碼沒一點辦法?那是因為你不會python

文字圖片識別很難,碰到驗證碼沒一點辦法?那是因為你不會python

 

實現效果:

文字圖片識別很難,碰到驗證碼沒一點辦法?那是因為你不會python

 

步驟一:接入介面

文字圖片識別很難,碰到驗證碼沒一點辦法?那是因為你不會python

 

進入上述網站申請賬號,然後執行相關程式碼,獲取 access_token 即算完成(由於百度json每30天更新一次,故程式碼中進行日期更新了的,如何獲取accss_token也可見程式碼)

步驟二:功能介紹:使用者輸入的圖片路徑可為網路上的url,也可為本機上的地址,為圖省事,圖片名稱為 ValidateCode.jpg ,由於本人接入的的百度AI介面的手寫文字識別,所以一般的驗證碼應該都可以通過,如果想加入其它功能,那麼返回json資料就會有所改變,具體可以見API介面,本人是為了簡化理解百度文件介紹

1 request.urlretrieve(imagepath, 'ValidateCode.jpg') # 下載圖片

更新access_json:因為百度API規定:30天更新一次,所以我就把時間提前了。(別亂搞我的金鑰呀,我也是為了分享呀QAQ)

 2   def accesjson():
 3 flag = 0
 4 fromtime = 1546061002 #起始時間
 5 nowtime = int(time.time())
 6 
 7 #2592000恰好為30天,故提前
 8 if nowtime - fromtime > 2000000:
 9 flag = 1
10 gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1)
11 # client_id 為官網獲取的AK, client_secret 為官網獲取的SK
12 host = 'https://aip.baidubce.com/oauth/2.0/token?grant_' 
13 'type=client_credentials&client_id=Ooj730ZD0Rm7E1dmcPwoZX9s&client_secret=dr5T1icZGqK8ZFyTr4wi2AWbtNKMIsNd'
14 req = request.Request(host)
15 response = request.urlopen(req, context=gcontext).read().decode('UTF-8')
16 result = json.loads(response)
17 if flag == 1:
18 return result
19 else:
20 return None

圖片正式識別:注意,接入功能不一樣,放回json資料不一樣,具體看返回json就明白了

 1 #返回圖片驗證碼
 2 def vercode():
 3 f = open('ValidateCode.jpg', 'rb')
 4 img = base64.b64encode(f.read())
 5 #不同百度API介面不一樣,傳遞引數不一樣,返回json也不一樣
 6 host = 'https://aip.baidubce.com/rest/2.0/ocr/v1/handwriting'
 7 headers = {
 8 'Content-Type': 'application/x-www-form-urlencoded'
 9 }
10 #更換json
11 if accesjson() == None:
12 access_token = '24.18591b2e4c97956e0f830db9f66e5373.2592000.1548646630.282335-15301065'
13 else:
14 access_token = accesjson()
15 print('已更換最新json,歡迎繼續使用!')
16 host = host + '?access_token=' + access_token
17 
18 data = {}
19 data['access_token'] = access_token
20 data['image'] = img
21 res = requests.post(url=host, headers=headers, data=data)
22 req = res.json()
23 return req['words_result'][0]['words']

完整程式碼:目前可實現的功能就是網路上面的文字圖片識別,或本機圖片識別(和之前的抖音圖片載入類似。)

百度AI介面(手寫文字識別):https://ai.baidu.com/docs#/OCR-API/9ef46660