本文将说明如何使用 PyPDF2 以及正则表达式操作 PDF 文件,并从中提取有关信息。
在 Python 中,用于处理 PDF 文件的库有很多,比如:
以上列举的几个是比较典型的库,此外还有很多,不再一一列举。
本文介绍的库名为 PyPDF2 ,其安装方法(注意,区分大小写)
|
|
每个用于读取 PDF 文件的库都有自己的特点,PyPDF2 亦非万能,如果 PDF 文件太模糊、有特殊编码、加密,或者创建的 PDF 文件的特定程序与PyPDF2不兼容,都将无法读取。所以,要多了解一些,艺不压身。
还有可能,这些库都不起作用,这是因为 PDF 有许多不同的参数,而且这些设置非常不标准,比如 PDF 中就是图片,而不是 utf-8 编码的文字。
PyPDF2 只能读取 PDF 文档中的文本,无法从 PDF 中获取图像或其他媒体文件。
首先,引入 PyPDF2
,如下所示:
|
|
打开一个 PDF 文件。注意,函数 open()
中的模式设置为读取二进制的 'rb'
模式,不能只是 'r'
。
|
|
这里打开的文件名为 US_Declaration.pdf
(《独立宣言》文稿),此文件下载地址:https://drive.google.com/file/d/115DPlPclA69A2VvIAfrRPoSRWA26SDvd/view?usp=sharing 。
然后读取此文件中的内容:
|
|
不能使用 Python 编写 PDF 文件,因为 Python 的字符串与 PDF 文件中的各种字体、位置和其他参数之间存在差异。
对 PDF 文件,能称之为“写”的操作,只能是将某个指定的 PDF 页面追加到已有 PDF 文件中。如下操作所示:
|
|
搞定!复制了一个页面,并将其添加到另一个新文档中!
前面使用 PyPDF2
,读取了特定页面的文本。是否可以一次性就获取 PDF 的所有文本呢?“这个应该有”。显然,一个简单方法就是循环。
|
|
现在,可以通过 pdf_text
的切片打印相应页面的内容,例如 print(pdf_text[1])
,会将 PDF 文件的第 1 页打印出来。
注意,最后要执行 f.close()
关闭文件,这是一个好习惯。
在 aistudio.baidu.com 中有专门探讨从 word 文档、PDF 文档中读取文本的多种方法的项目,可以参考