python实现图片文字提取,准确率高达99%,强无敌!!!

上次我使用的百度AI开放平台的API接口实现图片的转化,后来有许多小伙伴都私信问我,怎么获取百度AI平台的AK和SK。为了统一回答大家的问题,今天我又使用百度API实现了一个从图片中提取文字和识别身份证的功能,详细描述实现过程,有收获的小伙伴记得收藏、转发分享哦。

百度AI开放平台

百度AI开放平台网址:https://login.bce.baidu.com/

首先我们需要注册一个账号,注册登录之后我们选择文字识别

菜鸟小白的平台因为已经创建了一个应用了,首次登录应该是没有应用的,点击创建应用就好了

后面输入创建的应用名称,从创建页面上看API支持的功能很多,什么文字识别、身份证识别、银行卡识别和驾驶证识别等等,另外如果需要其他类型的功能(如图片效果增强等)也可以直接勾选上。

下面我们不需要选择文字识别包名,填写一个应用描述点击创建就OK了。

创建完成之后我们就可以看到我们需要的AK(API Key)和SK(Secret Key)了。

思路分析

可以看到百度AI开放平台是有提供API文档和举例代码的。写程序之前需要先看看我们的要使用的接口是什么格式,是否需要身份认证。百度AI开放就是需要使用AK和SK去和平台做一个鉴权操作,获取一个access token,然后我们再拿着这个access token去请求接口,完成我们今天需要完成的文字识别和身份证识别功能。

鉴权函数

从分析来看,我们首先需要去获取一个access token,用于后续的请求合法性鉴别。查看平台的接口文档,我们的编码如下,这个其实在我们之前的图片处理程序中也是一样的。
文档地址:https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu

百度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为
https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic
平台的API文档地址:https://cloud.baidu.com/doc/OCR/s/1k3h7y3db

#通用文字识别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')123456789101112131415161718192021222324252627123456789101112131415161718192021222324252627

当我们判断返回值存在内容时,我们将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()123123

实现效果

这样我们的目标就完成了,我们来看看实现效果吧。首先我们看看文字识别的效果。

  • 1

  • 1

原始图片:

最终识别出来的效果

最终我们的识别仅将“API”识别为“AP”,少了一个字符“I”,正确率高达99%以上,一个字——强。

我们再来看看身份证的识别效果,原始图片如下(网络百度图片,如有侵权请联系作者删除):

经过我们的程序识别后,所有信息都正确识别出来了(其中身份证号码应该是因为假身份证号码识别规则不通过所有为空白了,菜鸟小白自己的身份证是完成识别出来的),正确率高达100%。

(0)

相关推荐

  • 百度文档,用Python一键免费下载

    百度文库下载需要券,或者vip才能下载 Vip价格高,偶尔下载一次不划算. 不下载复制?不好意思复制也需要vip否则只能一次复制两行. 如何才能以最低成本获取到百度文库里的文档内容呢? 当然是用Pyt ...

  • Python20行代码实现自动写诗

    轻松编程社 轻松编程社 2021-09-14 导读 中秋赏月,民间一直流传着多个不同的传说和美丽的神话故事,当然最为人们熟悉的是<嫦娥奔月>了.在多民族的我国,有二十多个民族也在欢庆中秋节 ...

  • 小游戏:换脸术

    最近估计大家都陆陆续续的复工了,大家经常在节后会得一个叫做节后综合征的病,具体表现为:提不起精神.上班效率低.没精神,严重的还会出现恶心.焦虑.神经衰落等等.这里给大家带来一个小游戏娱乐一下,放松上班 ...

  • 小学阅读公式:做对5步,让阅读准确率高达99%

    小学阅读公式:做对5步,让阅读准确率高达99%

  • 股神刘正泰坦言:最佳“金字塔”买卖法则,准确率高达99%,收藏

    尽管有人告诫我们,做股票不能着急,但实际上人们总是希望买进的股票马上就涨.从逐利避险的角度说,一买就涨,可以迅速脱离风险,同时,迅速获利也会使心情大佳,信心倍增.所以,不管别人怎么劝你,寻找一买就涨的 ...

  • 人看七寸 识人秘诀 准确率高达99%

    人看七寸 识人秘诀 准确率高达99%

  • 手机图片文字提取,手机用什么软件提取文字方便?

    不得不说,现如今提取图片中的文字信息已经成为了很多人的日常需要了,这不,前两天北北刚分享了如何在电脑中使用软件来提取图片中的文字,今天,就又有网友来咨询了,说是想要寻求手机提取图片文字的方法,好吧,刚 ...

  • 单细胞RNA测序准确区分癌细胞与正常细胞,准确率高达99%

    新的计算工具可通过单细胞RNA测序数据可靠地区分癌症和正常细胞 为了解决在大型单细胞RNA测序数据分析时遇到的挑战,德州大学MD安德森癌症中心的研究人员开发了一种新的计算技术,可以准确地区分肿瘤样本中 ...

  • [转载]双色球选号技巧  准确率高达99%

    作者: 摇滚时间 各位彩友大家好~ 我相信每个买彩票人都希望自己中奖而且都希望能中大奖,但是双色球中二等奖还需要在33个红球号码中选中6个呢~!选中这不是一件想做就可以做到的事~!我不敢断言某期必定会 ...

  • 双色球选号技巧  准确率高达99%

    作者: 摇滚时间 各位彩友大家好~ 我相信每个买彩票人都希望自己中奖而且都希望能中大奖,但是双色球中二等奖还需要在33个红球号码中选中6个呢~!选中这不是一件想做就可以做到的事~!我不敢断言某期必定会 ...

  • 提取图片文字、图片翻译、截图取字......这些图片难题,都能轻松搞定

            日常编辑文档的时候,总会遇到不少关于「图片」的问题.比如说: 1)想用图片里的文字信息,却没法复制,只能全部手动输入 2)图片里的外语看不懂,手动输入外语到翻译软件才能理解 3)想把图 ...

  • 把图片里面的文字提取并能复制的方法

    由于工作上的各种需求,需要把图片文字 转换成word,可编辑的文本,一般的人都会依照着图片手打,可能一两张图片的时候还可以接受,但如果一本实物书要转换成可以编辑的word,那就不是手打那么简单了,光靠 ...