注:本博客中的代码实现来自百度问答:https://jingyan.baidu.com/article/c1a3101ef9131c9e646deb5c.html

代码运行环境:win10  python3.7

需要aip库,使用pip install baidu-aip即可

(1)目的

通过百度AipOcr库,来实现识别图片中的表格,并输出问表格文件。

(2)实现

仿照百度问答:https://jingyan.baidu.com/article/c1a3101ef9131c9e646deb5c.html,实现了以下代码:

 1 # encoding: utf-8
2 import os
3 import sys
4 import requests
5 import time
6 import tkinter as tk
7 from tkinter import filedialog
8 from aip import AipOcr
9
10 # 定义常量
11 APP_ID = 'xxxxxx'
12 API_KEY = 'xxxxxxxxxxxxxxxxxxxxxx'
13 SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxx'
14 # 初始化AipFace对象
15 client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
16
17 # 读取图片
18 def get_file_content(filePath):
19 with open(filePath, 'rb') as fp:
20 return fp.read()
21
22
23 #文件下载函数
24 def file_download(url, file_path):
25 r = requests.get(url)
26 with open(file_path, 'wb') as f:
27 f.write(r.content)
28
29
30 if __name__ == "__main__":
31 root = tk.Tk()
32 root.withdraw()
33 data_dir = filedialog.askdirectory(title='请选择图片文件夹') + '/'
34 result_dir = filedialog.askdirectory(title='请选择输出文件夹') + '/'
35 num = 0
36 for name in os.listdir(data_dir):
37 print ('{0} : {1} 正在处理:'.format(num+1, name.split('.')[0]))
38 image = get_file_content(os.path.join(data_dir, name))
39 res = client.tableRecognitionAsync(image)
40 # print ("res:", res)
41 if 'error_code' in res.keys():
42 print ('Error! error_code: ', res['error_code'])
43 sys.exit()
44 req_id = res['result'][0]['request_id'] #获取识别ID号
45
46 for count in range(1, 20): #OCR识别也需要一定时间,设定10秒内每隔1秒查询一次
47 res = client.getTableRecognitionResult(req_id) #通过ID获取表格文件XLS地址
48 print(res['result']['ret_msg'])
49 if res['result']['ret_msg'] == '已完成':
50 break #云端处理完毕,成功获取表格文件下载地址,跳出循环
51 else:
52 time.sleep(1)
53
54 url = res['result']['result_data']
55 xls_name = name.split('.')[0] + '.xls'
56 file_download(url, os.path.join(result_dir, xls_name))
57 num += 1
58 print ('{0} : {1} 下载完成。'.format(num, xls_name))
59 time.sleep(1)

(3)实现效果

识别的表格图片为:

实现的效果为(注:表格的格式人为调整过,但内容没人为修改):

可以看出,识别的精度还是很高的,只有“Fellow”识别为了“Fel1low”。

(4)其它

百度智能云应用创建链接:https://console.bce.baidu.com/ai/?_=1585935093810#/ai/ocr/app/list,创建了一个应用之后,就可以获得APP_ID、API_KEY、SECRET_KEY。

百度智能云文字识别接口说明:https://cloud.baidu.com/doc/OCR/s/3k3h7yeqa

python-使用百度AipOcr实现表格文字图片识别的更多相关文章

  1. 小白学Python——用 百度AI 实现 OCR 文字识别

    百度AI功能还是很强大的,百度AI开放平台真的是测试接口的天堂,免费接口很多,当然有量的限制,但个人使用是完全够用的,什么人脸识别.MQTT服务器.语音识别等等,应有尽有. 看看OCR识别免费的量 快 ...

  2. Springboot 结合百度IORC实现自定义模板图片识别

    前言: 首先呢,最近再公司的项目当中遇到这样的一个问题,就是需要识别图片,提取图片当中的关键语句,而且识别的语句当然是人家手写体识别,翻来覆去一想,最终还是决定使用百度的OCR帮助我解决这一项需求 话 ...

  3. python截图+百度ocr(图片识别)+ 百度翻译

    一直想用python做一个截图并自动翻译的工具,恰好最近有时间就在网上找了资料,根据资料以及自己的理解做了一个简单的截图翻译工具.整理一下并把代码放在github给大家参考.界面用python自带的G ...

  4. Python通过百度Ai识别图片中的文字

    版本:python3.7 工作中有需要识别图片中的汗字,查看了半天大神们的博客,但没找到完全可以用的源码,经过自己的实践,以下源码可以实现: 创建应用 首先你需要登录百度AI,选择文字识别,创建一个应 ...

  5. Python使用EasyOCR库对行程码图片进行OCR文字识别介绍与实践

    关注「WeiyiGeek」点我,点我 设为「特别关注」,每天带你在B站玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录 0x00 ...

  6. 使用python爬取百度贴吧内的图片

    1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...

  7. Python人工智能之图片识别,Python3一行代码实现图片文字识别

    1.Python人工智能之图片识别,Python3一行代码实现图片文字识别 2.tesseract-ocr安装包和中文语言包 注意:

  8. python基于百度AI开发文字识别

    很多场景都会用到文字识别,比如app或者网站里都会上传身份证等证件以及财务系统识别报销证件等等 第一步,你需要去百度AI里去注册一个账号,然后新建一个文字识别的应用 然后你将得到一个API Key 和 ...

  9. python实现百度OCR图片识别

    一.直接上代码 import base64 import requests class CodeDemo: def __init__(self,AK,SK,code_url,img_path): se ...

  10. Python实现图片识别加翻译【高薪必学】

    Python使用百度AI接口实现图片识别加翻译 另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字 ...

随机推荐

  1. Vue3实现图片滚轮缩放和拖拽

    在项目开发中遇到一个需求: 1:用鼠标滚轮可对图片进行缩放处理 2:点击按钮可对图片进行缩放处理 3:可对图片进行拖拽处理 我在开发中通过自己实现与百度查看优秀的铁子进行了两种类型的使用 <te ...

  2. element-ui多选(批量)删除

    导出axios请求

  3. Nacos 2.0 性能提升十倍,贡献者 80% 以上来自阿里之外

    简介: 3 月 20 日,Nacos 2.0 正式发布.Nacos 是阿里巴巴在 2018 年开源的一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台,也可以理解为微服务的注册中心 + 配 ...

  4. Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

    ​简介:如何以 Serverless 的方式运行 Spring Boot 应用? ​ 作者:西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 S ...

  5. 致敬 hacker |盘点内存虚拟化探索之路

    ​简介: 内存虚拟化相比裸机,仍然存在较大差异,是当下值得关注的问题! ​ 云与虚拟化 云计算是通过 Internet 服务的方式提供动态可伸缩资源的计算模式,经过多年的发展已成为企业 IT 技术的重 ...

  6. Dubbo3.0|阿里巴巴服务框架三位一体的选择与实践

    ​简介: 服务框架就像铁路的铁轨一样,是互通的基础,只有解决了服务框架的互通,才有可能完成更高层的业务互通,所以用相同的标准统一,合二为一并共建新一代的服务框架是必然趋势.Dubbo3.0 是 Dub ...

  7. [Go] golang 替换组件包 更新 go.mod, go.sum 的方式

    当我们不再使用某个包,或者包名变更时,是如何保证 go.mod 更新的. 只要代码中没有地方 import 使用到某个包了,我们运行: $ go mod tidy module 管理器会帮我们自动清理 ...

  8. [FAQ] 夏玉米 按规则查询域名靠谱吗 ?

    很早就有一个网站叫 夏玉米,可以按规则查询和注册域名,那么它真如我们想的那样 可以找到好域名吗? 虽然看起来很好用,实际上夏玉米的查询只是针对它自己的数据库,不包含未在其平台注册的域名,所以大家要失望 ...

  9. Ubuntu VNC 远程桌面及常见问题

    一.Ubuntu 远程桌面开启 在ubuntu 设置中打开远程桌面 **注意:如果没有共享桌面选项也不要谎,只需要安装 vino 即可 sudo apt update sudo apt install ...

  10. Java获取电脑盘符(最后一个盘符)

    //遍历获得所有盘符 File[] roots = File.listRoots(); for (int i =0; i < roots.length; i++) { System.out.pr ...