python学习笔记之读取pdf文件库pdfminer(二)

上一节中介绍了抽取PDF文本及表格的库pdfplumber,今天介绍另外一个PDF解析库:pdfminer

安装

pip install pdfminer3k

# 或者利用国内镜像源来获取
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pdfminer3k

注意:python2中是pdfminer,python3中是pdfminer3k

读取PDF文本

在网上搜了一圈的资料,实现代码如下:

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

# 用文件对象来创建一个pdf文档分析器
praser = PDFParser(open('浪潮之巅.pdf','rb'))

# 创建一个PDF文档
doc = PDFDocument()

# 连接分析器与文档对象
praser.set_document(doc)
doc.set_parser(praser)

# 提供初始化密码,如果没有密码,就创建一个空的字符串
doc.initialize()

# 检查文档是否可以转成TXT,如果不可以就忽略
if not doc.is_extractable:
    raise PDFTextExtractionNotAllowed
else:
    #创建PDF资源管理器,来管理共享资源
    rsrcmagr = PDFResourceManager()
    #创建一个PDF设备对象
    laparams = LAParams()
    #将资源管理器和设备对象聚合
    device = PDFPageAggregator(rsrcmagr, laparams=laparams)
    #创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmagr, device)
 
    #循环遍历列表,每次处理一个page内容
    #doc.get_pages()获取page列表
    for pg in doc.get_pages():
        interpreter.process_page(pg)
        #接收该页面的LTPage对象
        layout = device.get_result()
        #这里的layout是一个LTPage对象 里面存放着page解析出来的各种对象
        #一般包括LTTextBox,LTFigure,LTImage,LTTextBoxHorizontal等等一些对像
        for x in layout:
            if (isinstance(x,LTTextBox)): # 网上是判断LTTextBoxHorizontal,而在我写代码的时候,只能判断LTTextBox
                print(x.get_text())

输出如下:

经过实现,利用pdfminer想要抽取PDF的文本内容,对比于包 pdfplumber ,pdfminer 有点过于复杂,不符合python的简介。

参考链接:

Python使用pdfminer解析PDF_光明~~~-CSDN博客_pdfminer

【Python 库】解析PDF文本及表格——pdfminer、tabula、pdfplumber 的用法及对比 - 丹枫无迹 - 博客园

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旋转小马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值