plsql 无法识别字符集名称_python——人工智能之网络图片文字识别案例详细讲解

一、需求分析

我们要实现的功能很简单,通过使用百度的API进行图片当中文字的详细识别,进行输出,图片的处理要注意本质上是二进制处理的,所以在图片文件读取的时候一定注意模式问题,我们先需要获得技术文档当中的token值,进行身份验证,在发送post请求的时候,将token一并携带发送,保证识别效果,在返回的response中进行数据解析,直接调用json()即可,在后面的处理当中可以看到技术文档当中的返回类型为JOSN

e66d2c9e5a7509915a0e1186b43cc0b0.png

样例效果:比如我要识别技术文档当中部分截图内容

464f6b9298bb331c27c7f04b7e682ae3.png

识别结果:

4cf8a2f66210397bc1e1ff4a6832e355.png

二、产品选择及准备

登录百度智能云之后在产品这一栏选择人工智能中的通用文字识别,进入技术文档当中先看一看具体的使用方式

e8d322c81626d62f2d1248f0b6f09a00.png

进入文字识别的技术文档当中我们可以看到,要访问的url,发起请求的方法以及要携带的token值

4489d18a16ace92ee3b2aba817d64a83.png

那么首先我们需要考虑先获取token的值,进入‘Access Token获取’一文当中查看获取方式

13a5c5fb8460c05ed17f0f2be26ce130.png

我们发现在token的获取当中要在url当中带上三个必须参数:grant_type,client_id,client_secret
那么grant_type是有固定的值client_credentials的,那么剩下两个怎么办呢?
登录百度智能云,选择你要进行的项目

70aaeb9860b9cb4e9c20ab63e8403571.png

点击创建应用

6d98697b282a2ca7c9c5b3d29d8c17c2.png
0e74a54a0cb3800c40d190132a4105dc.png

创建好之后进行查看,访问所需的API Key和Secret Key就创建好了

7e8201f2b822e2af5c0c68502550054f.png

按照既定格式将url准备好

'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=【官网获取的AK】&client_secret=【官网获取的SK】'1

三、开始编写应用

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()

服务器给我们返回的数据当中携带的参数如下,我们只提取我们需要的即可

6078f5d2c08cca0f36b9121154766539.png

如果请求发生报错,请参考以下提示,做相应的处理

618eb9a6df3e9155b94fc6fc70cb96e6.png

2、处理图片

图片的处理上要符合技术文档当中的要求

b7a53f03ca1a8eba3a17350dc17a467a.png

了解了要求之后我们开始处理图片在处理图片的时候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。)可用的模式有:

49faef7bfb367ee5f0976743bc412c29.png

encoding 是用于解码或编码文件的编码的名称。这应该只在文本模式下使用。
encoding后面的值是字符集:utf-8,ACSII,Unicode,GBK,GB2312,UCS-2等
但要注意在处理图片的时候不能写encoding参数

# 处理图片with open('图片文件路径','rb') as f:msg = f.read()# base64进行处理,生成imageimage = base64.b64encode(msg)

图片处理好之后开始准备发送请求的参数

Body中放置请求参数,参数详情如下:

请求参数

d048697acc0f38fc4c7bd9635c01e765.png

那么必选参数当中我们准备好处理好的Image即可

返回参数

aee579bf5733dd3e55a0320e28804fc4.png

发送请求要携带的参数,以及返回的参数我们清楚之后,可以开始发送请求了

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'])

最终得到识别结果
案例实现很简单,其他相应的复杂内容我们按照需求及文档帮助增减适当的参数即可完成

其实很简单的,就是调用一个接口,你学会了吗?完整项目代码获取后台私信小编01获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值