今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样:

python读取PDF无非就是三种方式(我所了解的),pdfminer、pdf2htmlEX 和 Tabula。综合考虑后,选择了最后一种。下面对三种方式分别介绍:

pdfminer

该方式从网上搜索的结果是,可以提取pdf文本数据,但是提取后表格信息就乱了。所以本人没有亲自实验,就果断放弃了实验该方法。如果只是提取pdf里面的文本内容,该方式可能是比较合适的。

pdf2htmlEX

#-*- conding: utf-8 -*-

import subprocess

subprocess.call('"D:\Program Files (x86)\pdf2htmlEX-win32-0.14.6-upx-with-poppler-data\pdf2htmlEX.exe" --dest-dir E:\\test\extract\\2017gq\\out E:\\test\extract\\2017gq\\a53277ce525547088780c4b94accb7b5.pdf', shell=True)

执行以上代码,会在指定目录 E:\test\extract\2017gq\out 下生成对应html文件,浏览器中查看效果:

可以看到整体转换的效果非常不错,但是转换后的标签没有特点,使数据的提取变得非常困难。多番尝试后,感觉该方法不够通用,没法解决我的需求。也许对于单纯的pdf转html,该方式可能是最好的选择。

Tabula

Tabula是专门用来提取PDF表格数据的,同时支持PDF导出为CSV、Excel格式。

官网: http://tabula.technology/

Github: https://github.com/chezou/tabula-py

首先安装tabula-py: pip install tabula-py

tabula-py依赖库包括java、pandas、numpy,所以需保证运行环境中安装了这些库。

#-*- conding: utf-8 -*-

import tabula

df = tabula.read_pdf("E:\\test\\extract\\2017gq\\a53277ce525547088780c4b94accb7b5.pdf", encoding='gbk', pages='all')

print(df)

for indexs in df.index:

# 遍历打印企业名称

print(df.loc[indexs].values[1].strip())

执行以上代码,成功打印出表格中的所有企业名称,查看打印的 df 的结构,如下图:

总结

以上三种方式中,最后一种方式完美的解决了我的从PDF表格中提取数据的需求,希望能抛砖引玉,大家在使用时选择最适合自己的方法,如有介绍不当之处,望留言中指正,谢过。

python提取pdf表格数据 无边框_Python使用Tabula提取PDF表格数据相关推荐

  1. python读取pdf表格_Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

  2. Bootstrap——表格(基本实例、表头选项、条纹状表格、带边框的表格、无边框的表格、鼠标指针悬停、紧凑表格、状态类、响应式表格)

    在网页制作中,通常会用到表格的鼠标悬停.隔行变色等功能.Bootstrap中提供了一系列表格布局样式,利用该样式可以帮助开发者快速开发出美观的表格,作用于<table>元素的表格样式如下表 ...

  3. python tabula 使用方法_Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

  4. java读取pdf多表格_在Java中使用tabula提取PDF中的表格数据

    问题:如何将pdf文件中指定的表格数据提取出来? 尝试过的工具包有:pdfbox.tabula.最终选用tabula 两种工具的比较 pdfbox 其中,pdfbox能将pdf中的内容直接提取成Str ...

  5. python写入excel怎么跨列居中_Python使用OpenPyXL处理Excel表格

    官方文档: http://openpyxl.readthedocs.io/en/default/ OpenPyXL库 --单元格样式设置 单元格样式的控制,依赖openpyxl.style包,其中定义 ...

  6. python读取json文件制作中国人口地图_Python对JSON文件世界人口数据进行可视化

    制作世界人口地图,用json模块来处理,将人口数据进行可视化!!! 下载JSON格式的人口数据,下面附上完整的,在网站中https://datahub.io/下载的数据集的详细过程!!! 1.下载世界 ...

  7. python之33个关键字详解_Python解析、提取url关键字的实例详解

    解析url用的类库: python2版本: from urlparse import urlparse import urllib python3版本: from urllib.parse impor ...

  8. 用python进行多页数据爬取_Python Scrapy如何实现多页数据爬取?

    Python Scrapy如何实现多页数据爬取? 发布时间:2020-06-23 11:47:46 来源:亿速云 阅读:112 作者:清晨 这篇文章将为大家详细讲解有关Python Scrapy如何实 ...

  9. python 40位的数减个位数_Python数据分析入门教程(五):数据运算

    作者 | CDA数据分析师 进行到这一步就可以算是开始正式的烹饪了,在这部分之前的数据操作部分我们列举了一些不同维度的分析指标,这一章我们主要看看这些指标都是怎么计算出来的. 一.算术运算 算术运算就 ...

  10. python 录入数据不重复_python Django批量导入不重复数据

    本文为大家分享了python Django批量导入不重复数据的实现代码,供大家参考,具体内容如下 程序如下: #coding:utf-8 import os os.environ.setdefault ...

最新文章

  1. 【老孙随笔】关羽和吕蒙——天才的失败
  2. mysql字段中ID值自动增长
  3. USB基础---设备、配置、接口、端点和字符串描述符
  4. opencv4.10不能使用sift = cv2.xfeatures2d.SIFT_create()
  5. 树莓派入门教程 - 0 - 准备篇 - 0.1 第一次开机
  6. Codeforces 1039D You Are Given a Tree (看题解)
  7. 最新游戏帐号交易平台源码+支持游戏币交易
  8. 计算机无法切换用户权限,“无法更改的Administrator账户密码”的解决方案
  9. 算法转 Java 后端,2021秋招斩获腾讯、京东、百度等大厂 offer 面经分享!
  10. 摄像头各参数的意义_摄像机参数及性能指标浅谈
  11. 攻防世界 web高手进阶区 9分题 favorite_number
  12. 我在淘宝做前端的这三年 — 第一年
  13. 黑炫酷的监控界面,实际上是用了什么开源工具?
  14. matlab中Rip是什么意思,rip什么意思
  15. VS2008与Office2007冲突解决办法
  16. 把复杂的事物及逻辑尽量简单化
  17. 01-Spring是什么?Spring有什么用?
  18. [蓝桥杯] 剪邮票 (Python 实现)
  19. 怎么更改计算机管理员用户名和密码,Win10系统无法修改管理员账户密码怎么办?...
  20. 办理离职手续流程的详细流程(离职交接的标准流程)

热门文章

  1. R语言建立VAR模型分析联合内生变量的动态关系
  2. 教师计算机知识培训内容,新学期教师计算机培训方案
  3. 中国通信简史 (上)
  4. vmoptions默认配置_idea VM options参数优化
  5. 字段计算器python教程_字段计算器综合(python-02)
  6. MyDiskTest v2.98-U盘扩容检测工具
  7. 【数据分析系列】Python数据预处理总结篇
  8. dtft性质及证明_信号处理基础-- DTFT、DFT和STFT基本概念
  9. 水电缴费系统php源码_php水电费缴费管理系统
  10. 广州地铁线路查询程序C语言,c语言广州地铁系统报错,帮帮忙看一看哈?