这是一个三个月前的项目需求,需要识别多张图片上固定位置的信息并提取。说到python 上文字识别,可能有些人想用 pytesseract 来做,怎么说呢,识别精准度相对较低,而且对于数量较大的图片来说,不可能再去人工的去检查识别的数据的准确性。
在经历过多次尝试后,最后选择调用百度AI的通用文字识别接口来实现这一功能,目前这一服务是免费使用的,只是对请求量和QPS有限制!如下图所示:

使用过程如下:

1. 进入百度AI开发平台,创建应用并获取access_token

https://ai.baidu.com/


1.1 选择创建应用
填写相关信息,即可创建成功

1.2 查看对应的 API Key 、Secret Key
然后在点击管理应用即可查看该应用对应的 API Key 、Secret Key

1.3 获取 access_token
使用如下代码获取 access_token


```python
import requests
# client_id 为官网获取的API Key, client_secret 为官网获取的Secret Key
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=?     &client_secret=?'
response = requests.get(host)
if response:print(response.json()['access_token'])

2.对图片中固定位置进行识别并提取

方法:是将图片中固定位置的图像进行裁剪,对裁剪后的图像进行单独识别。由于存在QPS的限制,所以设置了请求延时,保证不会超过QPS(Queries-per-second,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。)而报错,下面提供方法代码:

def OCRlatlon(filePah):identification_results = []img = Image.open(filePah)basicpath = "C:/Users/Admin/Desktop/中转/"# crop里对应的数值为该位置图像在整体图片中左上和右下两个点的像素坐标cropped1 = img.crop((1131, 917, 1159, 941))  cropped1.save(basicpath+"1.png")cropped2 = img.crop((1131, 942, 1208, 966)) cropped2.save(basicpath+"2.png")cropped3 = img.crop((1066, 815, 1093, 839)) cropped3.save(basicpath+"3.png")cropped4 = img.crop((1099, 815, 1154, 839))  cropped4.save(basicpath+"4.png")cropped5 = img.crop((1065, 840, 1102, 862))  cropped5.save(basicpath+"5.png")cropped6 = img.crop((1108, 840, 1163, 862)) cropped6.save(basicpath+"6.png")cropped7 = img.crop((898, 50, 934, 70))cropped7.save(basicpath+"7.png")cropped8 = img.crop((50, 0, 104, 25))  cropped8.save(basicpath+"8.png")cropped9 = img.crop((50, 23, 106, 47)) cropped9.save(basicpath+"9.png")for f in range(1, 10):imgpath = basicpath + str(f) + '.png'g = open(imgpath, 'rb')img = base64.b64encode(g.read())if f == 1 or f == 3 or f == 5 or f == 7 or f == 9:time.sleep(1) # 防止超过QPS限制 引发报错request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"params = {"image": img}access_token = ''# 对应申请的  access_tokenrequest_url = request_url + "?access_token=" + access_tokenheaders = {'content-type': 'application/x-www-form-urlencoded'}response = requests.post(request_url, data=params, headers=headers)if response:json_str = response.content.decode()data = json.loads(json_str)msg = data['words_result']print(msg)for m in msg:msg_info = m.get('words')identification_results.append(msg_info)g.close()os.remove(basicpath + str(f) + ".png")return identification_results

在这里需要注意的是,access_token 会变化,大概是一个月左右
由于我处理的图片数据量比较大,且图片是一个类型只是多个位置文字不同,所以采用此种方法十分方便。
建议 图片裁剪过小或者图像较为模糊的时候,建议使用opencv里面的图像腐蚀和清晰等方法来处理裁剪后的图像再进行识别,这样识别精准度会更高,具体参数需要自己去实际摸索,所以这部分代码我就不贴了。
最后,不得不说百度AI的还是很强的!

python调用百度AI自动识别并提取图片上指定位置的文字信息相关推荐

  1. Python——调用百度AI实现图片上文字识别

    Python--调用百度AI实现图片上文字识别 简介 步骤 安装百度AI库 注册百度AI开放平台 调用glob库 调用AipOcr库识别文字 可能会遇到的问题 批量操作 简介 Python免费调用百度 ...

  2. 【应用】Python调用百度AI实现图片上表格识别

    [应用]Python调用百度AI实现图片上表格识别 简介 步骤 安装百度AI库 注册百度AI开放平台 调用AipOcr库识别表格文字 可能遇到的问题 批量操作 简介 Python免费调用百度AI实现图 ...

  3. python调用百度AI识别文字和表格

    python调用百度AI识别文字和表格 获取账户信息 1.需要先注册百度AI,获得ID和密钥.百度AI社区关于注册的详细说明:https://ai.baidu.com/forum/topic/show ...

  4. python调用百度AI接口识别营业执照

    上一篇文章介绍了应用python中的pytesseract库和OCR识别软件进行文字识别.本文介绍应用百度AI的文字识别功能对营业执照进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu ...

  5. Python调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序

    调用百度AI接口用以实现在线语音合成 并创建简单的GUI界面 生成可执行应用程序 1. 实验环境 Python3.8.Pycharm.window10 2.实验过程 1.首先登陆百度智能云:https ...

  6. Python调用百度AI识别身份证

    本文介绍应用百度AI的文字识别功能对身份证进行识别,感兴趣的朋友一起来看看效果吧.    一.安装baidu-aip模块    按win+R打开cmd,在里面输入 pip3 install baidu ...

  7. python调用百度AI提取图片文字

    python本身也有识别图片转文字的框架,但是相比调用接口,识别的精度就略显不行了: 这是 百度AI 的网站: https://ai.baidu.com/ ; 点击右上角的 控制台 ,申请或者登陆: ...

  8. python调用百度AI对颜值评分

    上一篇文章介绍了应用百度AI的文字识别功能对身份证进行识别.本文介绍应用百度AI的人脸识别功能对年龄.性别.颜值等进行识别,感兴趣的朋友一起来看看效果吧.由于安装baidu-aip模块和获取百度AI接 ...

  9. Python调用百度AI接口体验人像动漫化

    准备工作: 去百度AI注册账号并登录 选择 开放能力-->图像技术-->人像动漫画 选择 立即使用 点击红框内 去领取 领取资源 领取成功后去 应用列表--> +创建应用 填写相应信 ...

最新文章

  1. 28岁女博士生被骂“学术媛”,只因在网上分享自己牛津年级第一成绩毕业......
  2. Error in install.packages : cannot remove prior installation of package
  3. LIST 和 MAP
  4. Mac-终端hostname变为bogon的问题
  5. 05. 取SQL分组中的某几行数据
  6. HTML5唐四薪,8文件存取组件课件.ppt
  7. mysql master 配置_MySQL双Master配置的方法详解
  8. USB peripherals can turn against their users
  9. java 7 泛型_Java(7)泛型
  10. GCC9.2/Python3.8/Libvirt6.0/QEMU4.2 编译/配置/安装
  11. 奔驰宝马路虎等齐降价 最高降幅达8.5万!
  12. 网络新手ip隐藏器_什么是高防IP,高防IP原理是什么
  13. 2021-12-08 根据XPS 价带谱计算价带谱中心
  14. 暴雨公式 matlab,对雨水暴雨强度公式中降雨历时分解.pdf
  15. 音乐盒单片机c语言课程设计,基于PIC16F887单片机数字音乐盒课程设计.doc
  16. IPAM——IP地址管理
  17. 53.大数据之旅——java分布式项目14-信息检索技术之Lucene,Solr
  18. python数据导入之导入各类文件方法
  19. solr使用shards提示403
  20. 如何在win10电脑上录音

热门文章

  1. 应用EclipseRCP开发文件管理助手软件(一)
  2. JavaScript-ES6新特性使用教程
  3. RANSAC直线拟合和最小二乘直线拟合的简单介绍
  4. 精益求精——斐波那契数列的logn解法
  5. 这是一份全面 清晰的架构设计指南:MVC、MVP MVVM模式(含实例讲解)
  6. 16进制转10进制,以及二进制负数的补码
  7. 【R语言】时间序列单位根检验
  8. pyinstall打包工具
  9. Echartds-gl (3D) 城市地图,点击事件,实现下钻等操作
  10. java计算机毕业设计记事网页源码+mysql数据库+系统+lw文档+部署