目录

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文件:函数总结相关推荐

  1. python 读取文件读出来是什么格式-深入学习python解析并读取PDF文件内容的方法...

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  2. python中读取文件内容-深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  3. python读取pdf文件_深入学习python解析并读取PDF文件内容的方法

    这篇文章主要学习了python解析并读取PDF文件内容的方法,包括对学习库的应用,python2.7和python3.6中python解析PDF文件内容库的更新,包括对pdfminer库的详细解释和应 ...

  4. python怎么读取pdf文件_Python解析并读取PDF文件内容的方法

    本文实例讲述了Python解析并读取PDF文件内容的方法.分享给大家供大家参考,具体如下: 一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要 ...

  5. python实现:读取PDF文件中的英文单词,并将前二十个高频词储存到一个docx文档中

    总体思路如下: 1.读取PDF文件,将其中的英文单词提取出来 2.获得每个英文单词的词频,通过字典将英文单词及其词频配对 3.将英文单词按照词频由大到小排序 4.创建并写入docx文档 首先打开PDF ...

  6. 【python PDF解析】python 读取PDF文件内容

    一.问题描述 利用python,去读取pdf文本内容. 二.效果 三.运行环境 python2.7 四.需要安装的库 pip install pdfminer 五.实现源代码 代码1(win64) # ...

  7. 【word2vec】python读取pdf文件,通过词向量寻找相关词语

    1. 什么是Word2vec 对于自然语音处理而言,首先要做的就是将文字转换为计算机能看懂的数字,也就是说,将词语进行数字化. (1)one-hot编码,比较常用的一种编码方式,又叫独热编码. 对于一 ...

  8. python读取PDF文件中跨页表格思路分享

    目录 背景 背景知识 实现思路 1.判断当前页面是否以表格结尾 2.判断下一页面是否以表格开头 3.注意事项 参考 背景 最近需要读取PDF文件中的表格,遇到的一个难点之一是如何识别并合并PDF中跨页 ...

  9. python读取pdf文件_python读取pdf文件

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 一.安装pdfminer3k模块?二. 读取pdf文件import sysimp ...

最新文章

  1. Django的ORM映射机制与数据库实战
  2. java 抽象类,接口,object类详解
  3. bootstrap checkbox选中事件
  4. LSGO软件技术团队2015~2016学年第三周(0914~0920)总结
  5. php多人点餐可以看到对方点的菜,千万不要小看你身边那个会点菜的人,因为
  6. Epoll例子的使用
  7. android edittext 正则限制,Android EditText 使用正则表达式进行输入过滤
  8. 【问题解决方案】谷歌浏览器如何打开“开发者工具”窗口
  9. Coin3D三维可视化教程2
  10. 抱薪者说 | 廿七喜得子老王为名忧,论坛聚英豪树鑫拔头筹
  11. php集成坏境下载,常见php集成环境安装包
  12. 手机修改ntp服务器地址,修改手机ntp服务器ip地址
  13. 卖肉了也没火的十大悲催女星
  14. 【id:180】【20分】D. DS二叉树--赫夫曼树解码(不含代码框架)
  15. 网络监控器mrtg全攻略
  16. Ubuntu上让Firefox使用Chrome最新版PepperFlash插件
  17. 现代循环神经网络-1.门控循环单元(GRU)【动手学深度学习v2】
  18. Python数据分析之制作全球地震散点图:JSON格式
  19. 【Kindle】Kindle设备阅读PDF文档优化
  20. BIOS-CXL CxlIpLib 源码解析

热门文章

  1. git入门:概念、原理、使用
  2. 计算机主机安装系统安装系统,系统重装
  3. 电容充放电原理图_干货 | 入门开关电源,这些原理图一定要读懂
  4. 输入年月日 输出该日期是星期几。javascript_快速提升拼音输入法的几个技巧 高手都会用!...
  5. 计算机的磁盘地址格式,如何查看电脑硬盘是GPT分区还是MBR分区
  6. 字节跳动践行节能减排,数据中心能效居行业前列
  7. 成功解决ValueError: Cannot feed value of shape (80, 15, 1, 1) for Tensor 'Placeholder_1:0', which has sh
  8. Py之pixellib:pixellib库的简介、安装、经典案例之详细攻略
  9. 成功解决cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion fa
  10. Dataset之WebVision:WebVision数据集简介、下载、使用方法之详细攻略