手把手教你實現圖片文字提取,準確率居然高達99%!!!

上次我使用的百度AI開放平臺的API接口實現圖片的轉化,後來有許多小夥伴都私信問我,怎麼獲取百度AI平臺的AK和SK。爲了統一回答你們的問題,今天我又使用百度API實現了一個從圖片中提取文字和識別身份證的功能,詳細描述實現過程,有收穫的小夥伴記得收藏、轉發分享哦。python

百度AI開放平臺

百度AI開放平臺網址:login.bce.baidu.com/json

首先咱們須要註冊一個帳號,註冊登陸以後咱們選擇文字識別 服務器

在這裏插入圖片描述

菜鳥小白的平臺由於已經建立了一個應用了,首次登陸應該是沒有應用的,點擊建立應用就行了 微信

在這裏插入圖片描述

後面輸入建立的應用名稱,從建立頁面上看API支持的功能不少,什麼文字識別、身份證識別、銀行卡識別和駕駛證識別等等,另外若是須要其餘類型的功能(如圖片效果加強等)也能夠直接勾選上。 網絡

在這裏插入圖片描述

下面咱們不須要選擇文字識別包名,填寫一個應用描述點擊建立就OK了。 oracle

在這裏插入圖片描述

建立完成以後咱們就能夠看到咱們須要的AK(API Key)和SK(Secret Key)了。 app

在這裏插入圖片描述

思路分析

能夠看到百度AI開放平臺是有提供API文檔和舉例代碼的。寫程序以前須要先看看咱們的要使用的接口是什麼格式,是否須要身份認證。百度AI開放就是須要使用AK和SK去和平臺作一個鑑權操做,獲取一個access token,而後咱們再拿着這個access token去請求接口,完成咱們今天須要完成的文字識別和身份證識別功能。ide

鑑權函數

從分析來看,咱們首先須要去獲取一個access token,用於後續的請求合法性鑑別。查看平臺的接口文檔​,咱們的編碼以下​,這個其實在咱們以前的圖片處理程序中也是同樣的​。函數

​文檔地址:ai.baidu.com/ai-doc/REFE…工具

百度AI開放平臺鑑權函數

def get_access_token():
    url = 'https://aip.baidubce.com/oauth/2.0/token'
    data = {
        'grant_type': 'client_credentials',  # 固定值
        'client_id': 'eFGwDIb*******HucbnPr',  # 在開放平臺註冊後所建應用的API Key
        'client_secret': 'XPxWT2L********PFVCKS6PVih'  # 所建應用的Secret Key
    }
    res = requests.post(url, data=data)
    res = res.json()
    print(res)
    access_token = res['access_token']
    return access_token
複製代碼

文字識別函數

​鑑權函數寫好以後,咱們就能夠拿着獲取到的access token去向平臺接口發起請求,識別圖片中的文字了​。從平臺文檔上看通用文字識別的url爲 aip.baidubce.com/rest/2.0/oc…

平臺的​API文檔地址:cloud.baidu.com/doc/OCR/s/1…

#通用文字識別
def general_word():
    #通用文字識別接口url
    general_word_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
    #獲取執行路徑
    # path = os.getcwd()
    # 二進制方式打開圖片文件
    f = open('5.jpg', 'rb')
    img = base64.b64encode(f.read())
    print(img)
    params = {"image":img,
              "language_type":"CHN_ENG"}
    access_token = get_access_token()
    request_url = general_word_url + "?access_token=" + access_token
    print(request_url)
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    # print(response)
    # res = response.json()
    if response:
        res = response.json()["words_result"]
        print(res)
        file_name = "菜鳥小白.txt"
        with open(file_name, 'w', encoding='utf-8') as f:
            for j in res:
                print(j["words"])
                f.write(j["words"]+"\n")
複製代碼

當咱們判斷返回值存在內容時,​咱們將json格式的返回值,寫入「菜鳥小白.txt」文檔中​。

身份證識別函數

​咱們寫完了文字識別以後,其實寫身份證識別和其它證件的識別就都是同樣的方式了調用了​。

#身份證識別
def idcard():
    idcard_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/idcard"
    # 二進制方式打開圖片文件
    f = open('4.jpg', 'rb')
    img = base64.b64encode(f.read())
​
    params = {"id_card_side":"front","image":img}
    access_token = get_access_token()
    request_url = idcard_url + "?access_token=" + access_token
    print(request_url)
    headers = {'content-type': 'application/x-www-form-urlencoded'}
    response = requests.post(request_url, data=params, headers=headers)
    if response:
        res = response.json()["words_result"]
        file_name = "菜鳥小白的學習分享.txt"
        with open(file_name, 'w', encoding='utf-8') as f:
            f.write("住址:"+res["住址"]["words"]+"\n")
            f.write("出生日期:" + res["出生"]["words"] + "\n")
            f.write("姓名:" + res["姓名"]["words"] + "\n")
            f.write("公民身份號碼:" + res["公民身份號碼"]["words"] + "\n")
            f.write("性別:" + res["性別"]["words"] + "\n")
            f.write("民族:" + res["民族"]["words"] + "\n")
複製代碼

主函數

最後咱們寫一個主函數調用不一樣的功能函數就行了​。

if __name__ == '__main__':
    idcard()
    general_word()
複製代碼

實現效果

​這樣咱們的目標就完成了,咱們來看看實現效果吧​。首先咱們看看文字識別的效果​。
複製代碼

原始圖片​:

在這裏插入圖片描述
最終識別出來的效果
在這裏插入圖片描述

最終咱們的識別僅將「API」識別爲「AP」,少了一個字符「I」,正確率高達99%以上​,一個字——強​。

咱們再來看看身份證的識別效果,原始圖片以下(網絡百度圖片,若有侵權請聯繫做者刪除):

在這裏插入圖片描述
​通過咱們的程序識別後,全部信息都正確識別出來了(其中身份證號碼應該是由於假身份證號碼識別規則不經過全部爲空白了,菜鳥小白本身的身份證是完成識別出來的),正確率高達100%。
在這裏插入圖片描述

源碼獲取

老規矩,仍是公衆號回覆「文字識別」便可獲取源碼。

粉絲福利

關注公衆號「菜鳥小白的學習分享」,回覆「粉絲福利」就能夠參與抽獎,贏得騰訊視頻會員月卡一張哦~

好了,今天分享結束了。若是你也認同菜鳥小白的學習分享的話,那就給菜鳥小白一個關注、在看、點贊+讚揚吧,大家的支持,是我持續不斷的動力。很是感謝你們的支持,咱們明天再會~

推薦閱讀:

經過server醬實現定時推送天氣狀況,再不用擔憂你的糊塗蛋女朋友忘帶傘了~~

想作一個天氣推送程序,卻被和風天氣API的示例代碼調試得快吐了

教你搭建微信公衆號自動答覆機器人

媳婦兒讓我給她找一個PDF轉word免費工具,找了半天我決定給她寫一個出來^-^

媳婦兒喜歡玩某音中的動漫特效,那我就用python作一個圖片轉化軟件。

python使用cx_Oracle庫鏈接oracle服務器

關注微信公衆號——菜鳥小白的學習分享 媽媽不再用擔憂我找不到路了

在這裏插入圖片描述

一我的的學習——孤單 一羣人的學習——幸福

相關文章
相關標籤/搜索