python-使用百度AipOcr实现表格文字图片识别
注:本博客中的代码实现来自百度问答: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实现表格文字图片识别的更多相关文章
- 小白学Python——用 百度AI 实现 OCR 文字识别
百度AI功能还是很强大的,百度AI开放平台真的是测试接口的天堂,免费接口很多,当然有量的限制,但个人使用是完全够用的,什么人脸识别.MQTT服务器.语音识别等等,应有尽有. 看看OCR识别免费的量 快 ...
- Springboot 结合百度IORC实现自定义模板图片识别
前言: 首先呢,最近再公司的项目当中遇到这样的一个问题,就是需要识别图片,提取图片当中的关键语句,而且识别的语句当然是人家手写体识别,翻来覆去一想,最终还是决定使用百度的OCR帮助我解决这一项需求 话 ...
- python截图+百度ocr(图片识别)+ 百度翻译
一直想用python做一个截图并自动翻译的工具,恰好最近有时间就在网上找了资料,根据资料以及自己的理解做了一个简单的截图翻译工具.整理一下并把代码放在github给大家参考.界面用python自带的G ...
- Python通过百度Ai识别图片中的文字
版本:python3.7 工作中有需要识别图片中的汗字,查看了半天大神们的博客,但没找到完全可以用的源码,经过自己的实践,以下源码可以实现: 创建应用 首先你需要登录百度AI,选择文字识别,创建一个应 ...
- Python使用EasyOCR库对行程码图片进行OCR文字识别介绍与实践
关注「WeiyiGeek」点我,点我 设为「特别关注」,每天带你在B站玩转网络安全运维.应用开发.物联网IOT学习! 希望各位看友[关注.点赞.评论.收藏.投币],助力每一个梦想. 文章目录 0x00 ...
- 使用python爬取百度贴吧内的图片
1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...
- Python人工智能之图片识别,Python3一行代码实现图片文字识别
1.Python人工智能之图片识别,Python3一行代码实现图片文字识别 2.tesseract-ocr安装包和中文语言包 注意:
- python基于百度AI开发文字识别
很多场景都会用到文字识别,比如app或者网站里都会上传身份证等证件以及财务系统识别报销证件等等 第一步,你需要去百度AI里去注册一个账号,然后新建一个文字识别的应用 然后你将得到一个API Key 和 ...
- python实现百度OCR图片识别
一.直接上代码 import base64 import requests class CodeDemo: def __init__(self,AK,SK,code_url,img_path): se ...
- Python实现图片识别加翻译【高薪必学】
Python使用百度AI接口实现图片识别加翻译 另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字 ...
随机推荐
- 争论不休的一个话题:金额到底是用Long还是BigDecimal?
在网上一直流传着一个争论不休的话题:金额到底是用Long还是用BigDecimal?这个话题一出在哪都会引起异常无比激烈的讨论.... 比如说这个观点:算钱用BigDecimal是常识 有支持用Lon ...
- requests模块发送post请求,flask开启服务接收请求,python
request模块部分 import requests import json if __name__ == '__main__': url = 'http://127.0.0.1:5000' dat ...
- Borůvka MST算法
当我认为最MST(最小生成树)已经没有什么学的了,才发现世界上还有个这个kruskal和prim结合的玩意 Borůvka 运用并查集的思想,先将每一个初始点集初始化为有且只有自己的点集,然后每一次合 ...
- 轻松搭建基于 Serverless 的 ThinkPHP 应用
ThinkPHP 是什么? ThinkPHP 是一个免费开源的,快速.简单的面向对象的轻量级 PHP 开发框架,是为了敏捷 WEB 应用开发和简化企业应用开发而诞生的.ThinkPHP 从诞生以来一直 ...
- 简单、有效、全面的Kubernetes监控方案
简介:近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中 ...
- OceanBase再破纪录!核心成员陈萌萌:坚持HTAP就是坚持我们做数据库的初心
简介: 2021年5月20日,据国际事务处理性能委员会(TPC,Transaction Processing Performance Council)官网披露,蚂蚁集团自主研发的分布式关系型数据库Oc ...
- 【ClickHouse 技术系列】- ClickHouse 中的嵌套数据结构
简介:本文翻译自 Altinity 针对 ClickHouse 的系列技术文章.面向联机分析处理(OLAP)的开源分析引擎 ClickHouse,因其优良的查询性能,PB级的数据规模,简单的架构,被 ...
- [FAQ] 腾讯企业邮箱成员的名字如何多次更改 ?
可以通过给成员的邮箱增加别名,先点击成员信息最右侧的 "编辑",在编辑页面顶部的 "更多操作" 这个按钮中,比较隐蔽. Refer:腾讯邮箱成员名字更改 Lin ...
- WPF 获取全局所有窗口的创建显示事件 监控窗口打开
本文将告诉大家如何在 WPF 里面进行全局监控任意的窗口创建显示打开,可以获取到每个 WPF 窗口的打开的时机.如此可以用来辅助定位问题和输出日志 这篇博客是有背景的,老司机告诉我说他的应用不响应鼠标 ...
- dotnet C# 如何正确获取藏文的字数
在咱国内有很多有趣的文字,其中藏文属于有趣的文字里面特别有趣的一项,特别是对于做文本库的同学,大概都知道什么叫合写字吧.合写字的含义就是多个字符一起组成一个字.但是多个字符在内存中,本身就是多个字符对 ...