- Python程序设计
- 张雪萍主编
- 607字
- 2020-08-27 23:59:44
3.4 处理.pdf文件
Python 之所以强大,在于它有大量第三方库的支持(几乎每个月都有新的库产生),同一问题往往可用多个库解决。Python 对.pdf 文件的处理也不例外。这里,选择以 PDFMiner 库[7]为例来介绍对.pdf 文件的处理。也许当你拿到本书时,你已经有更好的库来处理.pdf文件了,那就用你喜欢的库吧,只要能解决问题就好。
1.安装PDFMiner库
在Windows命令行窗口下,通过命令“pip list”查看是否安装此库。如果没有,使用 pip 工具进行安装。这里,先使用一个第三方库 PDFMiner3K 把.pdf 文件读成字符串,然后用StringIO将其转换成文件对象。注意安装库的名字是“pdfminer3k”,如下:
再次强调,我们安装的是 Anaconda 环境。如果要分析现有.pdf 文件的内容,可用PDFMiner。
2.处理.pdf文件
在具体使用 PDFMiner 库处理.pdf 文件之前,需要先学习解析.pdf 文件用到的类(见表3-5)[8]。
表3-5 PDFMiner库中解析.pdf文件常用的类
【例3-21】 将指定目录下的.pdf文件的内容读取到一个.txt文件中。
运行以上程序后打开“D:\PythonTest\pdf_document\pdf_text_1.txt”文件,.txt文本文件中的部分内容显示如下:
处理.pdf文件的基本思路和流程:
(1)打开文件(二进制方式),声明文件对象。
(2)用文件对象创建一个文件解析器对象(PDFParser)。
(3)创建一个 pdf 文件对象,用于存储文件结构(PDFDocument),PDFDocument与PDFParser是相互关联的。
(4)连接pdf文件解析器和pdf文件对象(praser.set_document、doc.set_parser)。
(5)创建一个pdf资源管理器对象来存储共享资源(PDFResourceManager)。
(6)创建一个pdf页面聚合对象,作为PDFPageInterpreter的参数传入(PDFPage-Aggregator)。
(7)创建一个pdf解析器对象来解析page页面内容(PDFPageInterpreter)。
(8)处理文件中每一个page页面的内容(get_pages()获取page列表)。