python——人工智能(AI)之网络图片文字识别案例详细讲解
文章目录
- 一、需求分析
- 二、产品选择及准备
- 三、开始编写应用
- 1、获取token
- 2、处理图片
- 3、发送请求,解析数据
一、需求分析
我们要实现的功能很简单,通过使用百度的API进行图片当中文字的详细识别,进行输出,图片的处理要注意本质上是二进制处理的,所以在图片文件读取的时候一定注意模式问题,我们先需要获得技术文档当中的token值,进行身份验证,在发送post请求的时候,将token一并携带发送,保证识别效果,在返回的response中进行数据解析,直接调用json()即可,在后面的处理当中可以看到技术文档当中的返回类型为JOSN
样例效果:
比如我要识别技术文档当中部分截图内容
识别结果:
二、产品选择及准备
登录百度智能云之后在产品这一栏选择人工智能中的通用文字识别,进入技术文档当中先看一看具体的使用方式
进入文字识别的技术文档当中我们可以看到,要访问的url,发起请求的方法以及要携带的token值
那么首先我们需要考虑先获取token的值,进入‘Access Token获取’一文当中查看获取方式
我们发现在token的获取当中要在url当中带上三个必须参数:grant_type,client_id,client_secret
那么grant_type是有固定的值client_credentials的,那么剩下两个怎么办呢?
登录百度智能云,选择你要进行的项目
点击创建应用
创建好之后进行查看,访问所需的API Key和Secret Key就创建好了
按照既定格式将url准备好
'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'
三、开始编写应用
1、获取token
# 获取access_token()
def get_token():# client_id 为官网获取的AK, client_secret 为官网获取的SKhost = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'response = requests.get(host)content = response.json()return content['access_token']
token = get_token()
服务器给我们返回的数据当中携带的参数如下,我们只提取我们需要的即可
如果请求发生报错,请参考以下提示,做相应的处理
2、处理图片
图片的处理上要符合技术文档当中的要求
了解了要求之后我们开始处理图片
在处理图片的时候open方法一定要清楚里面的参数含义,不要随意调用
open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打开 file 并返回对应的 file object。 如果该文件不能被打开,则引发 OSError。
file 是一个 path-like object,表示将要打开的文件的路径(绝对路径或者当前工作目录的相对路径),也可以是要被封装的整数类型文件描述符。(如果是文件描述符,它会随着返回的 I/O 对象关闭而关闭,除非 closefd 被设为 False 。)
mode 是一个可选字符串,用于指定打开文件的模式。默认值是 ‘r’ ,这意味着它以文本模式打开并读取。其他常见模式有:写入 ‘w’ (截断已经存在的文件);排它性创建 ‘x’ ;追加写 ‘a’ (在 一些 Unix 系统上,无论当前的文件指针在什么位置,所有 写入都会追加到文件末尾)。在文本模式,如果 encoding 没有指定,则根据平台来决定使用的编码:使用 locale.getpreferredencoding(False) 来获取本地编码。(要读取和写入原始字节,请使用二进制模式并不要指定 encoding。)可用的模式有:
字符 |
意义 |
---|---|
|
读取(默认) |
|
写入,并先截断文件 |
|
排它性创建,如果文件已存在则失败 |
|
写入,如果文件存在则在末尾追加 |
|
二进制模式 |
|
文本模式(默认) |
|
打开用于更新(读取与写入) |
encoding 是用于解码或编码文件的编码的名称。这应该只在文本模式下使用。
encoding后面的值是字符集:utf-8,ACSII,Unicode,GBK,GB2312,UCS-2等
但要注意在处理图片的时候不能写encoding参数
# 处理图片
with open('图片文件路径','rb') as f:msg = f.read()
# base64进行处理,生成image
image = base64.b64encode(msg)
图片处理好之后开始准备发送请求的参数
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
image | 和url二选一 | string | - | 图像数据,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持 jpg/jpeg/png/bmp 格式,当image字段存在时url字段失效 |
url | 和image二选一 | string | - | 图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式,当image字段存在时url字段失效,不支持https的图片链接 |
language_type | 否 | string |
CHN_ENG ENG JAP KOR FRE SPA POR GER ITA RUS |
识别语言类型,默认为CHN_ENG 可选值包括: - CHN_ENG:中英文混合 - ENG:英文 - JAP:日语 - KOR:韩语 - FRE:法语 - SPA:西班牙语 - POR:葡萄牙语 - GER:德语 - ITA:意大利语 - RUS:俄语 |
detect_direction | 否 | string | true/false |
是否检测图像朝向,默认不检测,即:false。朝向是指输入图像是正常方向、逆时针旋转90/180/270度。可选值包括: - true:检测朝向; - false:不检测朝向。 |
detect_language | 否 | string | true/false | 是否检测语言,默认不检测。当前支持(中文、英语、日语、韩语) |
paragraph | 否 | string | true/false | 是否输出段落信息 |
probability | 否 | string | true/false | 是否返回识别结果中每一行的置信度 |
那么必选参数当中我们准备好处理好的Image即可
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
direction | 否 | int32 |
图像方向,当detect_direction=true时存在。 - -1:未定义, - 0:正向, - 1: 逆时针90度, - 2:逆时针180度, - 3:逆时针270度 |
log_id | 是 | uint64 | 唯一的log id,用于问题定位 |
words_result | 是 | array[] | 识别结果数组 |
words_result_num | 是 | uint32 | 识别结果数,表示words_result的元素个数 |
+words | 否 | string | 识别结果字符串 |
paragraphs_result | 否 | array[] | 段落检测结果,当 paragraph=true 时返回该字段 |
+words_result_idx | 否 | array[] | 一个段落包含的行序号,当 paragraph=true 时返回该字段 |
probability | 否 | float | 识别结果中每一行的置信度值,包含average:行置信度平均值,variance:行置信度方差,min:行置信度最小值 |
language | false | int32 | 当detect_language=true时存在 |
发送请求要携带的参数,以及返回的参数我们清楚之后,可以开始发送请求了
3、发送请求,解析数据
在我们所要接收的参数当中我们提取words_result即可,注意其返回类型是数组
data = {'image':image
}# 发送请求
imgResponse = requests.post(imgUrl, params = params, data = data)
content = imgResponse.json()
imgres = content['words_result']
for i in imgres:print(i['words'])
最终得到识别结果
案例实现很简单,其他相应的复杂内容我们按照需求及文档帮助增减适当的参数即可完成
python——人工智能(AI)之网络图片文字识别案例详细讲解相关推荐
- 百度Ai实现网络图片文字识别--Java
1.官方网站:百度AI开放平台-全球领先的人工智能服务平台 2.立即使用--登录百度智能云,进入控制台,点击文字识别 3.创建应用: 应用名称随便输,不选,个人,应用描述随便写,最后点击立即创建 4. ...
- Python人工智能之图片转文字识别
自学Python3第5天,今天突发奇想,想用Python识别图片里的文字.没想到Python实现图片文字识别这么简单,只需要一行代码就能搞定 #作者微信:xuxin15 from PIL import ...
- python 百度ocr安装_Python基于百度AI实现OCR文字识别
百度AI功能还是很强大的,百度AI开放平台真的是测试接口的天堂,免费接口很多,当然有量的限制,但个人使用是完全够用的,什么人脸识别.MQTT服务器.语音识别等等,应有尽有. 看看OCR识别免费的量 快 ...
- Android百度ocr相机裁剪,百度OCR文字识别案例_android防止akamp;sk;泄漏版本
[实例简介] 百度OCR文字识别,支持手机拍照识别,相册选择识别.网络图片识别等功能.该demo的配文博客为https://blog.csdn.net/pyfysf/article/details/8 ...
- 互联网人工智能下的OCR文字识别
悦保云OCR系列产品包括通用文字识别,文档识别,卡证识别,票据识别,资产类识别,汽车类识别,教育类识别,仪器仪表识别,自定义模板文字识别. 各产品包含的接口功能如下: 通用文字识别: 网络图片文字识别 ...
- 票据识别android代码,Android 百度AI开放平台-文字识别-财务票据文字识别
简单记录一下今天关于百度AI开放平台-文字识别-财务票据文字识别的实现过程 文字识别有对应的Android SDK集成及相关Demo,文档地址如下图: SDK目录图.png 但是SDK中的返回数据字段 ...
- 零基础入门 Python 人工智能 (Ai)
零基础入门 Python & 人工智能 (Ai) - 第 001 讲 真正的零基础!专为"从没接触过编程的小白"打造!一站式学习! 分分钟搞定数学.编程.算法等人工智能研发 ...
- 小猪的Python学习之旅 —— 13.文字识别库pytesseract初体验
小猪的Python学习之旅 -- 13.文字识别库pytesseract初体验 标签:Python 引言 度过了短暂的春节假期,又要开始继续搬砖了,因为还处于节后 综合征,各种散漫,不想看任何代码相关 ...
- 按键精灵电脑版对接百度ai,告别字库(文字识别篇)
很简单,根据百度ai接口api文档,用post或者get请求,封装参数请求响应即可.哈哈,当然不可能就这样结束了本篇博客了.本篇先讲文字识别,喜欢的朋友可以关注下,后续会继续写图片识别等所有ai对接方 ...
最新文章
- 原创 | 从席卷全球的“刷脸”乱象,看国内人脸识别立法方向
- 这个「化学家」登上Nature封面:工作007,8天完成近700次实验,还设计出新催化剂...
- 大厂面试喜欢考算法,该怎么破?
- junit4 assert类中的assert方法总结
- 修改节点大小_重磅前瞻!K8S 1.18即将发布:OIDC发现、Windows节点支持,还有哪些新特性值得期待?...
- ACL 2019开源论文 | 基于Attention的知识图谱关系预测
- api商品分享源码_谈谈微服务中的 API 网关(API Gateway)
- Function与Module的差异与应用场景
- java rsa 128_如何用java实现128位密钥的RSA算法
- 物联网还是泄秘网?嗅探流量即可知用户动向
- 记录MySql错误消息
- MapReduce----并行支持向量机(PSVM)第二部分之原始对偶内点法
- MySQL的开发技巧2
- Linux C++编译及 静态/动态 链接库 笔记
- 学习系统地思考——《第五项修炼》读后感
- CES 2020最佳科技产品官方入围名单!三星笑了
- 如何下载金融街街道卫星地图高清版大图
- Android 友盟统计 友盟推送 友盟分享快速集成
- 75个顶级开源安全应用
- navicat的连接