python 通過調取百度接口進行圖片OCR文字識別 高識別率

一、客戶需要一個判斷工作證姓名和輸入的姓名是否一致的需求,用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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章