>>> from env_helper import info; info()
页面更新时间: 2024-04-05 10:27:52
运行环境:
    Linux发行版本: Debian GNU/Linux 12 (bookworm)
    操作系统内核: Linux-6.1.0-18-amd64-x86_64-with-glibc2.36
    Python版本: 3.11.2

4.1. PDF文档

PDF(便携式文件格式,Portable Document Format)是由Adobe Systems在1993年用于文件交换所发展出的文件格式。 PDF主要由三项技术组成:衍生自PostScript;字型嵌入系统;资料压缩及传输系统。它的优点在于跨平台、能保留文件原有格式(Layout)、开放标准,能免版税(Royalty-free)自由开发PDF相容软体,是一个开放标准,2007年12月成为ISO 32000国际标准。

PDF格式的主要优点:

  • 跨平台性:PDF文件格式与操作系统平台无关,文件不管是在 Windows,Unix还是在苹果公司的 Mac OS 操作系统中都是通用的。

  • 易于阅读:不同平台、不同阅读软件打开不会出错或变形,以及转换成PDF后可以避免其他软件产生的不兼容和字体替换问题,使得文档的灵活性提高。

  • 不易编辑:PDF是板式文档,可防止他人无意中触到键盘修改文件内容。

  • 体积小巧:PDF文件使用了工业标准的压缩算法,通常比 PostScript 文件小,易于传输与储存。

  • 信息丰富:PDF文件格式可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中。该格式文件还可以包含超文本链接、声音和动态影像等电子信息。

4.1.1. Python处理PDF常用类库

注意: 2023年,pyPdf、PyPDF2和PyPDF4都已经回归到 pypdf 了。 在 Debian 12中,通过下面命令安装:

sudo apt install -y python3-pypdf

大多数组织以PDF形式发布其数据。随着AI的发展,我们需要更多数据来进行预测和分类。 PDF处理有些困难,但是我们可以利用下面的API来简化它。 本文将简要介绍如何使用Python处理PDF。Python处理PDF的第三库也有很多,主要有:

  • PDFMiner Python中用于PDF处理的库。容易安装,也容易使用。PDFMiner为非程序员提供命令实用程序,为程序员提供API接口。

  • PyPDF 这个Python PDF库是可扩展的。可以从pdf中提取文本,裁剪,然后将PDF文档与加密和解密功能合并。PyPDF有很多版本。在PyPDF4之前,PyPDF2更加流行。目前都已经合并到 pypdf .

  • pdfrw 与上面两个提及非常相似。除了这种相似性之外,pdfrw还具有自己的USP(唯一卖点)。pdfrw:一个替代的PDF操作包。Patrick Maupin创建了一个名为pdfrw的软件包,它可以完成许多与PyPDF2相同的工作。除了加密的特殊情况外,本文后面提到PyPDF2的所有操作,pdfrw均可以实现。pdfrw的最大区别在于它与ReportLab软件包集成,因此你可以使用一些或所有预先存在的PDF构建一个新的PDF。

  • Slate 它是PDFMiner的包装实现。

  • reportlab Reportlab的特长在于创建PDF文件,尤其是程序动态生成PDF文件的功能十分强大,但是遗憾的是开源版本没有提供读取PDF文件的相关功能。

  • pyMuPDF MuPDF可以访问PDF,XPS,OpenXPS,CBZ,EPUB和FB2(电子书)格式的文件,并且以其最佳性能和高渲染质量而著称。

  • tabula-py tabula 是专门用来提取PDF表格数据的,同时支持PDF导出为CSV、Excel格式,但是这工具是用 java 写的,依赖 java7/8。tabula-py 就是对它做了一层 python 的封装

  • pdfplumber pdfplumber 是按页来处理 pdf 的,可以获得页面的所有文字,并且提供的单独的方法用于提取表格。

4.1.2. pyPdf,PyPDF2和PyPDF4的历史

最初的pyPdf软件包于2005年发布。pyPdf的最后一个正式版本是在2010年。 大约一年后,一家名为Phasit的公司赞助了一个名为PyPDF2的pyPdf分支。 该代码编写为向后与原始代码兼容,并且用了好多年,效果一直很好,其最后一个版本是在2016年。

有一个名为PyPDF3的软件包简短系列版本,然后该项目被重命名为PyPDF4。 所有这些项目都完全相同,但pyPdf和PyPDF2 +之间的最大区别在于后者版本增加了Python 3支持。 Python 3的原始pyPdf有一个不同的Python 3分支,但是这个分支已经多年没有维护了。

最新版本的PyPDF4支持PyPDF2的大多数功能,但也有部分功能不兼容。

pypdf4主要功能

PyPDF4是一个纯Python PDF库,能够拆分,合并,裁剪和转换PDF文件的页面。它还可以将自定义数据,查看选项和密码添加到PDF文件。它可以从PDF检索文本和元数据,以及将整个文件合并在一起。

  • 提取文档信息(标题,作者等)

  • 逐页拆分文档

  • 逐页合并文档

  • 裁剪页面

  • 将多个页面合并为一个页面

  • 加密和解密PDF文件

还有更多的功能需要探索。