python编程:tabula、pdfplumber、camelot进行表格数据识别
本文就目前python图表识别的库进行测试
1、tabula
2、pdfplumber
3、camelot
准备数据
excel:names.xlsx,两个表格
表格1:所有字段都被线条包围
表格2:最外层没有线条包围
将excel另存为pdf:names.pdf
1、tabula
java项目:https://github.com/tabulapdf
自带可视化界面的pdf提取表格数据工具:
https://tabula.technology/
python接口:https://github.com/chezou/tabula-py
安装:
pip install tabula-py
依赖:
Java 7, 8
代码示例:
import tabulatabula.convert_into(input_path="source/names.pdf",output_path="source/names.csv",output_format='csv'
)
转换出来的names.csv,发现只有表格1
被提取出来了,而且不规范,中间多了逗号
"姓名",年龄,性别
"李雷",,20 男
"韩梅梅",,23 女
"赵小三",,25 女
2、pdfplumber
github: https://github.com/jsvine/pdfplumber
安装
pip install pdfplumber
代码示例:
import pdfplumber
import pandas as pdwith pdfplumber.open("source/names.pdf") as pdf:# 获取第一页first_page = pdf.pages[0]# 解析文本text = first_page.extract_text()print(text)# 解析表格tables = first_page.extract_tables()for table in tables:print(table)# df = pd.DataFrame(table[1:], columns=table[0])for row in table:for cell in row:print(cell, end="\t|")print()
"""
表格1:
姓名 年龄 性别
李雷 20 男
韩梅梅 23 女
赵小三 25 女Table2:
Name Age Gender
Tom 30 Male
Jack 33 Male
Jone 31 Female[['姓名', '年龄', '性别'], ['李雷', '20', '男'], ['韩梅梅', '23', '女'], ['赵小三', '25', '女']]姓名 |年龄 |性别 |
李雷 |20 |男 |
韩梅梅 |23 |女 |
赵小三 |25 |女 |[['30'], ['33']]30 |
33 |"""
文本解析的很全,只有表格1
解析完全了,表格2只是解析了有框的部分
3、camelot
github: https://github.com/socialcopsdev/camelot
安装:
pip install camelot-py[cv]
示例
import camelottables = camelot.read_pdf("source/names.pdf")
tables.export("source/names.csv")
生成2个文件:
source/names-page-1-table-1.csv
"姓名","年龄","性别"
"李雷","20 男",""
"韩梅梅","23 女",""
"赵小三","25 女",""
source/names-page-1-table-2.csv
"Name","Age","Gender"
"Tom","","30 Male"
"Jack","","33 Male"
"Jone","","31 Female"
发现表格2
的内容被解析出来了,不过两个表格的内容都错位了
经过测试后,发现这3个库对表格识别都不是太好
总结
库名 | 说明 |
---|---|
tabula | 能提取完整表格,提取结果不规范 |
pdfplumber | 能提取完整表格,提取结果较为规范 |
camelot | 能提取完整表格和不完整表格,提取结果不规范 |
python编程:tabula、pdfplumber、camelot进行表格数据识别相关推荐
- 2018年全国高校教师“Python编程、应用及华为大数据”培训班
关于举办2018年全国中高等院校教师 "Python编程.应用及华为大数据"培训班通知 全国各中高等院校计算机.软件等相关院(系): Python是一门免费.开源的跨平台高级动态编 ...
- 2018年全国中高等院校教师“Python编程、应用及华为大数据” 、“网络空间安全”、“区块链”培训班...
关于举办2018年全国中高等院校教师"Python编程.应用及华为大数据" ."网络空间安全"."区块链"培训班通知 全国各中高等院校计算机 ...
- python 提取pdf表格_用Python提取pdf文件中的表格数据
本文作者:杨慧琳 本文编辑:周聪聪 技术总编:张学人有问题,不要怕!访问 http://www.wuhanstring.com/uploads/5_aboutus/爬虫俱乐部-用户问题登记表.docx ...
- python读取html文件中的表格数据_Python 读取各类文件格式的文本信息 | doc,excel,html,mht...
原标题:Python 读取各类文件格式的文本信息 | doc,excel,html,mht 众所周知,python最强大的地方在于,python社区汇总拥有丰富的第三方库,开源的特性,使得有越来越多的 ...
- Python实现将多个Excel表格数据一键合并到一个表格,轻松提升办公效率!
老板最近越来越过分了,快下班了发给我几百个表格让我把内容合并到一个表格内去. 还好我会Python,分分钟就搞定了,这要是换个不会Python的,不得加班到第二天天亮去了~ 这么好用的技能,必须分享给 ...
- python怎么编辑excel_python 修改excel表格数据-关于如何用python 编辑 excel表格
python对Excel中数据的处理 把你的写入excel 的内容编码一哈 例如 str('内容').encode('utf-8') 或者str('内容').encode('gbk') 再写入exce ...
- python编程从入门到实践 之 数据可视化部分总结和回顾(未完待续)
15.1生成数据 matplotlib:是一个数学绘图库,使用它可以制作简单的图标. pygal包:专注于生成适合在数字设备上显示的图标.通过使用pygal,可以在与图表交互时突出元素以及调整大小,还 ...
- python编程简单案例_[五组数据]详解一个简单的卡尔曼滤波器python编程实例
上半年毕设的时候接触了卡尔曼滤波器,用matlab实现了该过程,尝试在一个课后作业中用三维度矩阵来存储变量的方式,结构似乎更好理解,记录一下分析的过程. 假如有一块电阻,你不知道它的阻值是多少,你想 ...
- python读取html文件中的表格数据_使用解析html表pd.read_html文件其中单元格本身包含完整表...
不能使用^{}读取嵌套表,但可以滚动自己的html阅读器,并对表单元格使用read_html:import pandas as pd import bs4 with open('up_pf00344. ...
最新文章
- TPOT: 自动化的sklearn
- 国外AI教学网红网站
- DigSci科学数据挖掘大赛:如何在3天内拿下DigSci亚军
- 寒冬悟道者马云:阿里巴巴逢单出击(4)
- Tomcat解决HTTP GET中文乱码
- 查询某一支接口,指定时间段的数据 按分钟排序
- ai建立使用图案_ai自定义图案的方法详解步骤图
- CCNA学习与实验指南(640-802)
- python实现二分法查找_python二分法查找
- Ajax (菜鸟教程)学习笔记
- 如何删除双系统中的其中一个(完全删除)
- Appium+python自动化(二十一)- 让猴子按你指令大闹手机,让我们都成为耍猴高手(超详解)...
- discuz教程 毫无基础常识的站长搭建HTTPS。图文并茂
- Mysql必知必会概要总结
- 王者服务器维护s24,王者荣耀:体验更新S24数据,征召模式痛点解决,不会再失手了...
- 业务逻辑漏洞挖掘-某网站绕过下载付费机制进行下载文件
- USB2.0接口CM4_5G mini驱动板搭配广和通FM650在Win11下的测速
- 阿里云服务器4核8G配置CPU性能报价表
- 中学化学教学参考杂志社中学化学教学参考编辑部2022年第12期目录
- 新未来,决战支付大数据
热门文章
- 扩展巴科斯范式 EBNF
- jquery给input赋值
- Java#37(反射)
- 王者荣耀服务器什么时候维护好2020,2020年王者荣耀到底经历了什么?来给你好好捋一捋...
- es审计日志_elasticsearch 事务日志translog
- windows下载redis、windows安装redis、windows启动redis
- 关于天地图覆盖物-聚合点数据问题
- c语言 mpi程序设计,MPI并行程序设计-基础
- [SDOI2010] 所驼门王的宝藏
- No module named mpl_toolkits解决方案