python解析并读取PDF文件:函数总结
目录
1.PyPDF2
2. pdfminer & pdfminer3k
3. pdfplumber
4. Camelot
虽然PDF文件对文本布局非常好,容易打印并阅读,但软件要将它们解析为纯文本并不容易,Python目前解析PDF的扩展包有很多,本文将分别介绍PyPDF2、pdfplumber、pdfminer3k以及Camelot(若发现还有其他函数,继续补充),并分析优缺点,告诉你哪个是好用的PDF解析工具。
1.PyPDF2
PyPDF2 没有办法从 PDF 文档中提取图像、图表或其他媒体,但它可以提取文 本,并将文本返回为 Python 字符串。
缺点:PyPDF2从PDF提取文本时可能会出错,甚至根本打不开某些PDF文件。
基本实现代码如下:
import PyPDF2# 使用open的‘rb’方法打开pdf文件,使用二进制模式
mypdf = open('pdfexample.pdf',mode='rb')# 调用PdfFileReader函数
pdf_document = PyPDF2.PdfFileReader(mypdf)# 使用PdfFileReader对象的变量,获取各个信息,如numPages属性获取PDF文档的页数
pdf_document.numPages # 调用PdfFileReader对象的getPage()方法,传入页码,取得Page对象:输出PDF文档的第一页内容
first_page = pdf_document.getPage(0)# 调用Page对象的extractText()方法,返回该页文本的字符串
text = first_page.extractText())
2. pdfminer & pdfminer3k
PDFMiner是一个从PDF文档中提取信息的工具。与其他pdf相关的工具不同,它完全专注于获取和分析文本数据。PDFMiner允许获取页面中文本的确切位置,以及其他信息,比如字体或行。它包括一个PDF转换器,可以将PDF文件转换成其他文本格式(如HTML)。它有一个可扩展的PDF解析器,可以用于其他目的而不是文本分析。
pdfminer3k 是 pdfminer 的 python3 版本,主要用于读取 pdf 中的文本,下面是pdfminer 解析PDF文档的流向图。
pdfminer方法解析PDF可以很好的提取文本内容,但是对于表格数据,能提取出文字,但是没有格式,会很不友好。因此你如果只需要提取文本内容的话,可以使用pdfminer扩展包,这个包也能很好的支持中文。
参考:
https://www.cnblogs.com/wj-1314/p/9429816.html
3. pdfplumber
Pdfplumber是一个可以处理pdf格式信息的库,可以很好地解析PDF的文本和表格内容。可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试,并且对中文有很好的支持,十分推荐使用该方法。
参考:https://blog.csdn.net/blmoistawinde/article/details/82051915
pdfplumber.pdf中包含了.metadata和.pages两个属性:
- .metadata是一个包含pdf信息的字典。
- .pages是一个包含页面信息的列表。
每个pdfplumber.page的类中包含了几个主要的属性:
- .page_number 页码
- .width 页面宽度
- .height 页面高度
- .objects/.chars/.lines/.rects 这些属性中每一个都是一个列表,每个列表都包含一个字典,每个字典用于说明页面中的对象信息, 包括直线,字符, 方格等位置信息。
一些常用的方法:
- .extract_text() 用来提页面中的文本,将页面的所有字符对象整理为的那个字符串
- .extract_words() 返回的是所有的单词及其相关信息
- .extract_tables() 提取页面的表格
- .to_image() 用于可视化调试时,返回PageImage类的一个实例
1. 解析文本内容
pdfplumber中的extract_text()函数是可以直接识别PDF中的文本内容:
import pdfplumber
import pandas as pdwith pdfplumber.open(path) as pdf: content = ''for i in range(len(pdf.pages)):# 读取PDF文档第i+1页page = pdf.pages[i] # page.extract_text()函数即读取文本内容,下面这步是去掉文档最下面的页码page_content = '\n'.join(page.extract_text().split('\n')[:-1])content = content + page_content# 提取以上解析结果中,“地方法规”和“2.其他有关资料”之间的内容
result = content.split('地方法规列举如下:')[1].split('2.其他有关资料')[0]
2. 解析表格内容
pdfplumber中的extract_tables()函数是可以直接识别PDF中的表格的,使用extract_tables函数得到的是Table一个嵌套的List类型,转化成DataFrame会更方便查看和分析。
import pdfplumber
import pandas as pdwith pdfplumber.open(path) as pdf: first_page = pdf.pages[0] tables = first_page.extract_tables()for table in tables df = pd.DataFrame(table) # 第一列当成表头: df = pd.DataFrame(table[1:],columns=table[0])
4. Camelot
Camelot读取PDF文件中的表格数据很好用,并且能够很好的支持中文,但是Camelot有很多局限性:
- 首先,使用stream时,表格无法被自动侦测到,stream把整个页面当成一个table。
- 其次,camelot只用使用基于文本的PDF文件而不能使用扫描文档。
import camelot
import pandas as pdtables = camelot.read_pdf(filepath=path,pages='1',flavor='stream')
df = pd.DataFrame(tables[0].data)
综上所述,建议使用pdfplumber扩展包来解析PDF文档的文本和表格,如果只解析文本内容,也可以使用pdfminer ,而解析英文文档内容,可以使用PyPDF2。
python解析并读取PDF文件:函数总结相关推荐
- python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- python中读取文件内容-深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- python读取pdf文件_深入学习python解析并读取PDF文件内容的方法
这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...
- python怎么读取pdf文件_Python解析并读取PDF文件内容的方法
本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...
- python实现:读取PDF文件中的英文单词,并将前二十个高频词储存到一个docx文档中
总体思路如下: 1.读取PDF文件,将其中的英文单词提取出来 2.获得每个英文单词的词频,通过字典将英文单词及其词频配对 3.将英文单词按照词频由大到小排序 4.创建并写入docx文档 首先打开PDF ...
- 【python PDF解析】python 读取PDF文件内容
一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要安装的库 pip install pdfminer 五.实现源代码 代码1(win64) # ...
- 【word2vec】python读取pdf文件,通过词向量寻找相关词语
1. 什么是Word2vec 对于自然语音处理而言,首先要做的就是将文字转换为计算机能看懂的数字,也就是说,将词语进行数字化. (1)one-hot编码,比较常用的一种编码方式,又叫独热编码. 对于一 ...
- python读取PDF文件中跨页表格思路分享
目录 背景 背景知识 实现思路 1.判断当前页面是否以表格结尾 2.判断下一页面是否以表格开头 3.注意事项 参考 背景 最近需要读取PDF文件中的表格,遇到的一个难点之一是如何识别并合并PDF中跨页 ...
- python读取pdf文件_python读取pdf文件
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...
最新文章
- Django的ORM映射机制与数据库实战
- java 抽象类,接口,object类详解
- bootstrap checkbox选中事件
- LSGO软件技术团队2015~2016学年第三周(0914~0920)总结
- php多人点餐可以看到对方点的菜,千万不要小看你身边那个会点菜的人,因为
- Epoll例子的使用
- android edittext 正则限制,Android EditText 使用正则表达式进行输入过滤
- 【问题解决方案】谷歌浏览器如何打开“开发者工具”窗口
- Coin3D三维可视化教程2
- 抱薪者说 | 廿七喜得子老王为名忧,论坛聚英豪树鑫拔头筹
- php集成坏境下载,常见php集成环境安装包
- 手机修改ntp服务器地址,修改手机ntp服务器ip地址
- 卖肉了也没火的十大悲催女星
- 【id:180】【20分】D. DS二叉树--赫夫曼树解码(不含代码框架)
- 网络监控器mrtg全攻略
- Ubuntu上让Firefox使用Chrome最新版PepperFlash插件
- 现代循环神经网络-1.门控循环单元(GRU)【动手学深度学习v2】
- Python数据分析之制作全球地震散点图:JSON格式
- 【Kindle】Kindle设备阅读PDF文档优化
- BIOS-CXL CxlIpLib 源码解析
热门文章
- git入门:概念、原理、使用
- 计算机主机安装系统安装系统,系统重装
- 电容充放电原理图_干货 | 入门开关电源,这些原理图一定要读懂
- 输入年月日 输出该日期是星期几。javascript_快速提升拼音输入法的几个技巧 高手都会用!...
- 计算机的磁盘地址格式,如何查看电脑硬盘是GPT分区还是MBR分区
- 字节跳动践行节能减排,数据中心能效居行业前列
- 成功解决ValueError: Cannot feed value of shape (80, 15, 1, 1) for Tensor 'Placeholder_1:0', which has sh
- Py之pixellib:pixellib库的简介、安装、经典案例之详细攻略
- 成功解决cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion fa
- Dataset之WebVision:WebVision数据集简介、下载、使用方法之详细攻略