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")
当我们判断返回值存在内容时,我们将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%,强无敌!!!的更多相关文章
- python识别图片文字
因为学校要求要刷一门叫<包装世界>的网课,而课程里有200多道选择题,而且只能在手机完成,网页版无法做题,而看视频是不可能看视频的,这辈子都不可能看...所以写了几行代码来进行百度搜答案. ...
- python 识别图片文字
今天群里有兄弟问如何把图片的文字给识别出来 对于python来说这不是小菜一碟吗,于是乎让pupilheart狠狠的吹了一波(哈哈,竟然没懂),下面将整个实现过程给大家实现下: 方法一:自己搞定ORC ...
- 基于tess4j的图片文字提取
1.文件结构目录 2.具体实现 ①添加maven依赖 <dependency> <groupId>net.sourceforge.tess4j</groupId> ...
- HTML5 JavaScript实现图片文字识别与提取
8月底的时候,@阿里巴巴 推出了一款名为“拯救斯诺克”的闯关游戏,作为前端校园招聘的热身,做的相当不错,让我非常喜欢.后来又传出了一条消息,阿里推出了A-star(阿里星)计划,入职阿里的技术培训生, ...
- face_recognition开源人脸识别库:离线识别率高达99.38%
基于Python的开源人脸识别库:离线识别率高达99.38%——新开源的用了一下感受一下 原创 2017年07月28日 21:25:28 标签: 人脸识别 / 人脸自动定位 / 人脸识别开源库 / f ...
- 使用AI技术获取图片文字与识别图像内容
获取图片文字 如何使用python获取图片文字呢? 关注公众号[轻松学编程]了解更多- 1.通过python的第三方库pytesseract获取 通过pip install pytesseract导入 ...
- Python的开源人脸识别库:离线识别率高达99.38%
Python的开源人脸识别库:离线识别率高达99.38% github源码:https://github.com/ageitgey/face_recognition#face-recognitio ...
- Python的开源人脸识别库:离线识别率高达99.38%(附源码)
Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073 11.11 智慧上云 ...
- Python图像处理之图片文字识别(OCR)
OCR与Tesseract介绍 将图片翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR).可以实现OCR 的底层库并不多,目前很多库都是使用共同 ...
随机推荐
- Spark文档阅读之一:Spark Overview
Document: https://spark.apache.org/docs/latest/index.html 版本:2.4.5 1. spark的几种执行方式 1)交互式shell:bin/ ...
- Node.js躬行记(4)——自建前端监控系统
这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2.将性能和错误量化.因为自己平时喜欢吃菠萝,所以就取名叫菠萝系统.其实在很早以前就有这个想法,当时已经实现了前端的参 ...
- Java类、实例初始化的顺序
求如下 java 代码的输出?? class T implements Cloneable{ public static int k = 0; public static T t1 = new T(& ...
- trollcave解题
这是第一次完整地进行模拟渗透,前前后后一共花了一天时间,花了点时间写了个writeup. 博主是个菜鸡,如果有大神看到,请轻喷...... writeup下载:https://hrbeueducn-m ...
- 【秒懂Java】【第1章_初识Java】01_编程语言
各位小伙伴们好哇!从今日起,我将开始更新<秒懂Java>系列文章,从0开始讲解Java的方方面面,后面也将推出配套的视频版,欢迎大家保持关注! 我会尽力办到:在保证通俗易懂的同时,不丢失知 ...
- 如何获取自定义meta标签信息?
<meta name="apple-itunes-app" content="app-id=432274380" /> 类似于这种meta信息,js ...
- IDEA 2020.1 插件市场无法找到官方的汉化包解决办法
问题: idea 终于更新了2020.1版本,新增了好多的特性,官方也终于支持了中文语言包,但是下载后在插件市场无法找到官方的汉化包 解决: 去IDEA插件中心 (https://plugins.je ...
- day05数据绑定
流程:普通编辑-添加编辑模式 <text>数据绑定</text> <view>{{message}}</view> <button bindtap ...
- Python3笔记014 - 3.5 跳转语句
第3章 流程控制语句 3.5 跳转语句 1.break 语句 while 条件表达式1: 语句块1 if 条件表达式2: break for 迭代变量 in 对象: 语句块1 if 条件表达式: br ...
- 浅谈JVM和垃圾回收
写在前面 简单的介绍一下JVM(Java Virtual Machine)吧,它也叫Java虚拟机.虽然它叫虚拟机,但是实际上不是我们所理解的虚拟机,它更像操作系统中的一个进程.JVM屏蔽了各个操作系 ...