python 百度云api_Python——调用百度云API实现图文识别

这是奔跑的键盘侠的第117篇文章

前几天写的一篇《按键精灵二三事系列第九篇——图文识别+发邮件》,有小伙伴留言说,可以直接调用百度云平台AI的OCR图文识别接口,不用自己单独做字库。于是就抽空研究了一下下,结果……

谈虎色变,我发现这个功能,网上很多帖子都用到了山海插件,关于插件、API调用,按键精灵其实有个不太好的地方:一旦涉及调用第三方和创建对象类的问题,语法都很晦涩,对业余选手来讲及其为难。

不想花费精力研究新的插件,就改用轻车熟路的python来写一下调用百度云平台的api接口吧。

1

代码实现

首先要去百度云平台注册个账号,然后去后台界面查看2个key值

(API KEY ,SECRET KEY),如下图#!/usr/bin/env python3.6

# _*_ coding:utf-8 _*_

# __author__: Ed Frey

# DATE: 2019/8/8

import urllib.parse,urllib.request

import base64

import os

def get_token(api_key,secret_key):

'''

to get the access_token from baidu AI account information

:param api_key: API KEY from baidu AI account information

:param secret_key: SECRET KEY from baidu AI account information

:return:access_token

'''

host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%s&client_secret=%s'%(api_key,secret_key)

request = urllib.request.Request(host)

request.add_header('Content-Type', 'application/json; charset=UTF-8')

response = urllib.request.urlopen(request)

content = response.read()

if (content):

return eval(content)["access_token"]

return []

def ocr(access_token,path):

'''

to get words from path's picture

:param access_token: get it from fuction "get_token(api_key,secret_key)"

:param path: the picture's path

:return: a list of words

'''

if access_token is None:

return Noneif not os.path.isfile(path):

return Noneurl = 'https://aip.baidubce.com/rest/2.0/ocr/v1/general?access_token=%s'%(access_token)

with open(path,"rb") as f:

img = base64.b64encode(f.read())

params = {"image": img}

params = urllib.parse.urlencode(params).encode("UTF8")

request = urllib.request.Request(url, params)

request.add_header('Content-Type', 'application/x-www-form-urlencoded')

response = urllib.request.urlopen(request)

content = response.read()

# print(content)

words_info = eval(content)["words_result"]

# print(words_info)

words = []

for word in words_info:

words.append(word["words"])

return words

if __name__ == "__main__":

api_key = "XXXXXXXXXXXX"

secret_key = "XXXXXXXXXXXXXXXXXXX"

path = r"C:\XXXXXX\test.jpg"

access_token = get_token(api_key,secret_key)

ocr_test = ocr(access_token,path)至于测试结果:我就百度截了个图,来小试牛刀。运行结果如下:

"C:\ProgramFiles\Python36\python.exe" C:/Users/XXXXXXXXX/get_baidu_ai-token.py

['圈吗hon量化分析介绍奔跑的×+', '☆自Phon量化分析介绍奔跑的键盘侠', '百度Pyon量化分析介绍奔跑的键盘侠', '百度一下', '网页资讯视频图片知道文库贴吧采购地图更多》', '百度为您找到相关结果约16.000个', 'Python-量化分析个绍(八)-云+社区-腾讯云', 'Python-—量化分析介绍(八) Ed Frey发表于奔跑的键盘侠0 My SQL数据库新用户这个模', '块是为后面做铺垫的接下来在数据处理分析时,会时不时的从数据集中提取所', 'htps/ loud tencent com/deve..-V3-百度快照', 'Python-量化分析介绍(七)-云+社区-腾讯云', 'README} My Quant v#量化分析程序目录_init奔跑的键盘侠37篇文', '章13人订阅 Python量化分析介绍(六) Python量化', 'htps/ cloud tencent com/deve..-V3-百度快照', 'Python.——三级菜单字曲+文件读写)-奔跑的键盘侠', '2018年8月4日- Python-三级菜单字典+文件读写)作者奔跑的键盘侠/公众', '号 runningkeyboard.001按键精灵简介1002如何使用网络上免费的脚本资源003亂标连点器', 'jinciwei. cn/b3442..-百度快照', 'Python基础语法之— callable(obiec- yuanCruise=CSDN博客', '2017年8月6日- Python callable0函数用法实例分析本文实例讲述了 Python callable(函数用', '法。分享.【 darknet】添加新层详细版qu931110我转发的你没看到键盘侠', 'C) CSDN技术社区-百度快照', '丛 Python开始学编程PDF超清版- Python量化投资', '2019年7月5日-改编自 Vamei博客的《 Python快速教程》。本书以 Python为样本不仅介绍了', '编程的基本目录第1章用编程改造世界第2章先做键盘侠第3章过程大于结果', 'A Python量化投资-百度快照']ocr函数中的content的格式大概是下面这么个样子:{

"log_id": XXXXXXX,

"words_result_num": XX,"words_result":

[

{"words": " XXXXXX"},

{"words": "XXXXX"}

]

}所有后面有进行格式处理,和字符串拼接。如果换成标准大小字体的图片,其实识别图文准确率很高的,毕竟这么大一个平台开发的功能。

2

其实我不推荐使用百度API

首先不说他收费的问题,如果是普通图文不涉及隐私内容的,用一下其实也挺好用的,每天免费次数对普通用户来讲也足够了。

如涉及机密信息、商业信息,安全性还是要放在首位。毕竟有些知名平台泄露用户信息什么的,不管是漏洞还是人为恶意,总是不让人省心的。

所以,可以尝试自己去搭建一个字库。像我,平时要提取识别的内容有限,常用的百十个文字而已,是可以自己动手做一个字库,毕竟安全第一,就算某天网络异常或者百度宕机,也丝毫不受影响。如果目标文字属于标准字体,大漠插件也有标准字体的字库直接使用。

好了,今天就讲这么多。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值