手把手教你实现图片文字提取,准确率居然高达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服务器

关注微信公众号——菜鸟小白的学习分享 妈妈不再用担忧我找不到路了

在这里插入图片描述

一我的的学习——孤单 一群人的学习——幸福