上次我使用的百度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")

当我们判断返回值存在内容时,​我们将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%。

源码获取

老规矩,还是公众号回复“文字识别”即可获取源码。

粉丝福利

关注公众号“菜鸟小白的学习分享”,回复“粉丝福利”就可以参与抽奖,赢得腾讯视频会员月卡一张哦~

好了,今天分享结束了。如果你也认同菜鸟小白的学习分享的话,那就给菜鸟小白一个关注、在看、点赞+赞赏吧,你们的支持,是我持续不断的动力。非常感谢大家的支持,我们明天再会~

 

python实现图片文字提取,准确率高达99%,强无敌!!!的更多相关文章

  1. python识别图片文字

    因为学校要求要刷一门叫<包装世界>的网课,而课程里有200多道选择题,而且只能在手机完成,网页版无法做题,而看视频是不可能看视频的,这辈子都不可能看...所以写了几行代码来进行百度搜答案. ...

  2. python 识别图片文字

    今天群里有兄弟问如何把图片的文字给识别出来 对于python来说这不是小菜一碟吗,于是乎让pupilheart狠狠的吹了一波(哈哈,竟然没懂),下面将整个实现过程给大家实现下: 方法一:自己搞定ORC ...

  3. 基于tess4j的图片文字提取

    1.文件结构目录 2.具体实现 ①添加maven依赖 <dependency> <groupId>net.sourceforge.tess4j</groupId> ...

  4. HTML5 JavaScript实现图片文字识别与提取

    8月底的时候,@阿里巴巴 推出了一款名为“拯救斯诺克”的闯关游戏,作为前端校园招聘的热身,做的相当不错,让我非常喜欢.后来又传出了一条消息,阿里推出了A-star(阿里星)计划,入职阿里的技术培训生, ...

  5. face_recognition开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38%——新开源的用了一下感受一下 原创 2017年07月28日 21:25:28 标签: 人脸识别 / 人脸自动定位 / 人脸识别开源库 / f ...

  6. 使用AI技术获取图片文字与识别图像内容

    获取图片文字 如何使用python获取图片文字呢? 关注公众号[轻松学编程]了解更多- 1.通过python的第三方库pytesseract获取 通过pip install pytesseract导入 ...

  7. Python的开源人脸识别库:离线识别率高达99.38%

    Python的开源人脸识别库:离线识别率高达99.38%   github源码:https://github.com/ageitgey/face_recognition#face-recognitio ...

  8. Python的开源人脸识别库:离线识别率高达99.38%(附源码)

    Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073   11.11 智慧上云 ...

  9. Python图像处理之图片文字识别(OCR)

    OCR与Tesseract介绍   将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同 ...

随机推荐

  1. 看到这些常见的android面试题,你慌了吗?

    最近参加了一些Android工程师岗位的面试,总结了一些常见的考点,希望能帮到正在面试的你(答案还在整理中)! 1.Java调用函数传入实际参数时,是值传递还是引用传递? 2.单例模式的DCL方式,为 ...

  2. html/css 滚动到元素位置,显示加载动画

    每次滚动到元素时,都显示加载动画,如何添加? 元素添加初始参数 以上图中的动画为例,添加俩个左右容器,将内容放置在容器内部. 添加初始数据,默认透明度0.左右分别移动100px. //左侧容器 .it ...

  3. json 文件注释

    json文件注释: "_comment":"this is commets", "jsondata":{ "注释":&q ...

  4. yum 安装包的时候提示“没有可用软件包”

    今天在使用 yum 命令进行包的下载时候,Linux 提示 没有可用的软件包~ 如下: [root@localhost share]# yum -y install wordpress 已加载插件:f ...

  5. swagger ui demo

    前言 前几天一个朋友公司在用Springboot集合swagger时候总是从浏览器看不了接口,我两找了问题,但是他还是没有找到,于是我就自己从http://start.spring.io/上下载了一个 ...

  6. 入门大数据---Spark累加器与广播变量

    一.简介 在 Spark 中,提供了两种类型的共享变量:累加器 (accumulator) 与广播变量 (broadcast variable): 累加器:用来对信息进行聚合,主要用于累计计数等场景: ...

  7. Auto-keras API详解

    在网上找到的Auto-keras API详解,非常全面,防止丢失记录在这! Auto-Keras API详解(1)——安装Auto-Keras https://blog.csdn.net/weixin ...

  8. 前端进阶笔记之核心基础知识---那些HTML标签你熟悉吗?

    目录 1.交互实现 1.1 meta标签:自动刷新/跳转 1.2 title标签:消息提醒 2.性能优化 2.1 script标签:调整加载顺序提升渲染速度 2.2 link标签:通过预处理提升渲染速 ...

  9. 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理

    在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...

  10. typescript 展开操作符,对象属性值更新