美文网首页
提取PDF文本信息:入门

提取PDF文本信息:入门

作者: StataPython数据分析 | 来源:发表于2020-06-17 11:03 被阅读0次

本文作者:王碧琪
文字编辑:钱梦璇
技术总编:张 邯

PDF格式的文件经常出现在我们的办公生活中,它更像是一张图片,我们没办法进行编辑和复制等操作。所以为了解决这一问题,pdfminer应运而生,今天就来试一下,用pdfminer提取简单文字的pdf文档内容。

一、简介

pdfminer是Python中的一个库,它可以告诉我们某文本在分页上具体的位置和字体信息。可以通过pip安装,注意库的名字在Python3中改为pdfminer3k了:

pip install pdfminer3k 

本文使用一个简单文字的PDF文档,内容如下:


image

二、处理

(一)导入pdfminer

from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBox

这些类的功能如下所示:

类名 含义
PDFParser 从文件中获取数据
PDFDocument 存储文档数据结构到内存中
PDFPageInterpreter 解析page内容
PDFDevice 把解析到的内容转化为你需要的东西
PDFResourceManager 存储共享资源,例如字体或图片

(二)读入待处理PDF文档
创建一个PDF文档实例,打开示例文件:

doc = PDFDocument()
parser = PDFParser(open(r"G:\simple1.pdf")) 

连接分析器与文档对象,这两句不能颠倒:

parser.set_document(doc) 
doc.set_parser(parser) 

我们可以调用doc的get_pages() 方法查看每一页:

print(doc.get_pages())

结果是:

<generator object PDFDocument.get_pages at 0x00000266CEBE4848>

这里是一个生成器,因为pdfminer的解析原则是“用了再干”,而并不会先将整个文档解析,生成器的相关内容可以查看推文《可迭代对象、迭代器、生成器傻傻分不清楚》。可以通过for循环遍历内容:

for page in doc.get_pages():
    print(page)

结果是:

<PDFPage: Resources={'ProcSet': <PDFObjRef:6>, 'Font': {'F1': <PDFObjRef:7>}}, MediaBox=[0, 0, 612, 792]>

小编查找官方文档,得知这些是返回的page的一些属性。Resources代表pdf的来源,标注了名称以及字体,mediabox是page的位置坐标。这些不用过分在意,只需要继续进行提取,完成任务即可。

(三)解析页面
创建一个PDF解释器对象:

device = PDFPageAggregator( PDFResourceManager(), laparams = LAParams() )
interpreter = PDFPageInterpreter( PDFResourceManager(), device)

pdfminer会通过解释器解析每一页的内容,得到每一页的LTPage对象,其中包括LTTextBox\LTFigure等。他们的关系如下图所示:


image

(图片源自网络,侵删)
本篇文章仅提取文本,所以只需要提取LTTextBox,接下来的系列文章还会讲到图片、表格等内容,会用到其他的对象。

(四)获取文字内容
使用循环遍历每一页,针对每一页进行解析,提取LTTextBox并输出:

for page in doc.get_pages():
    interpreter.process_page(page)                        
    layout = device.get_result()        
    for x in layout:
        if isinstance(x, LTTextBox):
            print(x.get_text().strip())

运行结果如下:


image

至此,pdf文档中的文本内容已经成功提取出来了。

相关文章

  • 提取PDF文本信息:入门

    本文作者:王碧琪文字编辑:钱梦璇技术总编:张 邯 PDF格式的文件经常出现在我们的办公生活中,它更像是一张图片,...

  • PDF文本信息提取(二)

    PDF文本信息提取(二) 本文作者:王碧琪文字编辑:方 言技术总编:张 邯 在之前的推文《提取PDF文本信...

  • PDF表格信息提取

    本文作者:王碧琪文字编辑:钱梦璇技术总编:张 邯 在《提取PDF文本信息:入门》中,我们介绍了使用pdfmi...

  • PDFBox

    解析PDF中的表格 从现有的PDF文档中提取文本 提取文本是PDFBox的主要功能之一。 可以使用PDFTextS...

  • PDF图片提取

    本文作者:王碧琪文字编辑:戴 雯技术总编:张 邯 之前我们使用pymupdf提取了PDF文档中的文本信息,...

  • 个人永久性免费-Excel催化剂功能第89波-批量多图片转PDF

    前一篇展示了从PDF中提取到有用信息如图片、文本、表格等功能,部分人可能对自己手中的转PDF格式的保护性有所顾虑,...

  • python、java、ruby、node等如何提取office

    我相信大家都有过这样的需求,把doc、ppt、excel、pdf、txt中的文本内容提取出来。提取出来的文本内容可...

  • OpenCV6-OpenCV3编程入门

    《OpenCV3编程入门》PDF及配套代码:《OpenCV3编程入门》资料 提取码: jr7y

  • 在 Linux 上使用 gImageReader 从图像和 PD

    在 Linux 上使用 gImageReader 从图像和 PDF 中提取文本[http://www.linuxe...

  • Java 提取PDF文本内容

    概述 一般来说,我们无法对PDF文档格式的内容进行修改编辑,但当我们确有此需求时,可通过提取文本内容的方式来实现。...

网友评论

      本文标题:提取PDF文本信息:入门

      本文链接:https://www.haomeiwen.com/subject/ciijxktx.html