python(中外合作办学)

授课人


 4.2.1 pdfminer

 

4.2.1 pdfminer

概述

pdfminer是一个可以从PDF文档中提取信息的工具。它注重的完全是获取和分析文本数据。pdfminer允许获取某一页中文本的准确位置和一些诸如字体、行数的信息。它包括一个PDF转换器,可以把PDF文件转换成HTML等格式。它还有一个扩展的PDF解析器,可以用于除文本分析以外的其他用途。

PDFMiner内置两个好用的工具:pdf2txt.py和dumppdf.py

pdf2txt.py从PDF文件中提取所有纯文本内容。但不能识别画成图片的文本。

安装

pdfminer是不兼容于Python 3的。该家族的一个分支PDFMiner.six和pdfminer3k在Python 3上完全能胜任同样的功能目前大多使用后者。安装方法和其他第三方库的安装方法一样。

pip3 install pdfminer3k

在编写代码时,该库的名称依然是pdfminer

pdfminer的使用比较复杂,而且官方相关文档很少。使用时需要运用查询工具来弄清楚如何有效使用。用一个案例来示范pdfming的使用

【医学案例4-6】

读取世界卫生组织2017全球结核病报告摘要的pdf文件gtbr2017_executive_summary_zh.pdf 中的文本内容并输出到 tb2017.txt 文本文件中。原文件部分内容如下

图4-8 报告部分

代码

1from pdfminer.pdfparser import PDFParser

2from pdfminer.pdfdocument import PDFDocument

3from pdfminer.pdfpage import PDFPage

4from pdfminer.pdfpage import PDFTextExtractionNotAllowed

5from pdfminer.pdfinterp import PDFResourceManager

6from pdfminer.pdfinterp import PDFPageInterpreter

7from pdfminer.pdfdevice import PDFDevice

8from pdfminer.layout import *

9from pdfminer.converter import PDFPageAggregator

10

11fp = open(gtbr2017_executive_summary_zh.pdf, rb)

12#创建一个pdf文档分析器

13parser = PDFParser(fp)

14#创建一个PDF文档对象存储文档结构

15document = PDFDocument(parser)

16

17# 检查文件是否允许文本提取

18if not document.is_extractable:

19 raise PDFTextExtractionNotAllowed

20else:

21 # 创建一个PDF资源管理器对象来存储共赏资源

22 rsrcmgr=PDFResourceManager()

23 # 设定参数进行分析

24 laparams=LAParams()

25 # 创建一个PDF设备对象

26 device=PDFPageAggregator(rsrcmgr,laparams=laparams)

27 # 创建一个PDF解释器对象

28 interpreter=PDFPageInterpreter(rsrcmgr,device)

29

30 # 处理每一页

31 for page in PDFPage.create_pages(document):

32 interpreter.process_page(page)

33 # 接受该页面的LTPage对象

34 layout=device.get_result()

35 for x in layout:

36 if(isinstance(x,LTTextBoxHorizontal)):

37 with open(tb2017.txt,a, encoding = utf-8) as f:

38 f.write(x.get_text() + \n)

运行后生成一个txt文件,用记事本打开后内容如下图

图4-9 tb2017.txt

对比原文件和提取的内容可以看到,对pdf文件内图像中的文字,pdfminer无法处理。而且只能处理文本信息,无法获得文本格式。在段落和分行上,pdfminer无法维持pdf文本的布局。如果有必要,这些都要在后续的程序设计中,进一步进行处理。

pdfminer几个重要类的作用

PDFParser:从一个文件中获取数据

PDFDocument:保存获取的数据,和PDFParser是相互关联的

PDFPageInterpreter处理页面内容

PDFDevice将其翻译成你需要的格式

PDFResourceManager用于存储共享资源,如字体或图像。

布局分析返回的PDF文档中的每个页面LTPage对象。这个对象和页内包含的子对象,形成一个树结构。一般包括LTTextBox, LTFigure, LTImage, LTTextBoxHorizontal 等等。想要获取文本就获得对象的text属性

具体使用可查阅官方文档

http://www.unixuser.org/~euske/python/pdfminer/index.html

 
关键词:文本  对象  文档  

 评论 01 / 1

相关资源