iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python解析PDF程序代码
  • 929
分享到

python解析PDF程序代码

python解析PDFpythonPDF代码 2022-06-02 22:06:51 929人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

说在前面 和Word的文本相比pdf更类似于一张张图片,图上放着一个个文字。对其的解析是将图片上的文字提取到text文件中,方便之后的分析。 添加依赖 在python的环境中安装PDFminer3k,不要装错了,一开

说在前面

Word的文本相比pdf更类似于一张张图片,图上放着一个个文字。对其的解析是将图片上的文字提取到text文件中,方便之后的分析。

添加依赖

python的环境中安装PDFminer3k,不要装错了,一开始我装的是PDFminer,结果有几个包不能用
pip install pdfminer3k

源程序代码


#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# pip3 install pdfminer3k

import os
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter, PDFTextExtractionNotAllowed
from pdfminer.pdfdevice import PDFDevice


def read_pdf(pdf_name, result_name):
    # 以二进制读模式打开
    fp = open(pdf_name, 'rb')
    # 用文件对象来创建一个pdf文档分析器
    parser = PDFParser(fp)
    # 创建一个pdf文档
    doc = PDFDocument()
    # 连接分析器 与文档对象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密码,如果没有密码 就创建一个空的字符串
    doc.initialize('')
    # 检测文档是否提供txt转换,不提供就抛出异常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 创建PDf 资源管理器 来管理共享资源
    rsrcmgr = PDFResourceManager()
    # 创建一个PDF设备对象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmgr, device)

    with open(result_name, "w", encoding="u8") as fd_out:
        # 循环遍历列表,每次处理一个page的内容
        for i, page in enumerate(doc.get_pages(), 1):
            index = "===========《第{}页》===========".fORMat(i)
            print(index)
            fd_out.write(index + "\n")
            interpreter.process_page(page)
            # 接受该页面的LTPage对象
            layout = device.get_result()
            for x in layout:
                # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox,
                # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性
                if not isinstance(x, LTTextBoxHorizontal):
                    continue
                results = x.get_text()
                print(results)
                fd_out.write(results)

if __name__ == '__main__':

    # 获取读取文件夹
    filePath = '../PDFfile'
    #遍历文件夹
    for i,j,k in os.walk(filePath):
        for m in k:
            # 格式化输出的名称和地址
            result = '../TextFile/' + m[:-4] + '.txt'
            # 格式化源文件路径
            fileName = i + '/' + m
            # 调用函数解析
            read_pdf(fileName, result)

参考以下代码内容:Python 读取pdf文本内容


#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# pip3 install pdfminer3k
  
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import LAParams, LTTextBoxHorizontal
from pdfminer.pdfparser import PDFParser, PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter, PDFTextExtractionNotAllowed
from pdfminer.pdfdevice import PDFDevice
 
def read_pdf(pdf_name, result_name):
    # 以二进制读模式打开
    fp = open(pdf_name, 'rb')
    # 用文件对象来创建一个pdf文档分析器
    parser = PDFParser(fp)
    # 创建一个pdf文档
    doc = PDFDocument()
    # 连接分析器 与文档对象
    parser.set_document(doc)
    doc.set_parser(parser)
    # 提供初始密码,如果没有密码 就创建一个空的字符串
    doc.initialize('')
    # 检测文档是否提供txt转换,不提供就抛出异常
    if not doc.is_extractable:
        raise PDFTextExtractionNotAllowed
    # 创建PDf 资源管理器 来管理共享资源
    rsrcmgr = PDFResourceManager()
    # 创建一个PDF设备对象
    laparams = LAParams()
    device = PDFPageAggregator(rsrcmgr, laparams=laparams)
    # 创建一个PDF解释器对象
    interpreter = PDFPageInterpreter(rsrcmgr, device)
     
    with open(result_name,"w",encoding="u8") as fd_out:
        # 循环遍历列表,每次处理一个page的内容
        for i,page in enumerate(doc.get_pages(),1):
            index = "===========《第{}页》===========".format(i)
            print(index)
            fd_out.write(index + "\n")
            interpreter.process_page(page)
            # 接受该页面的LTPage对象
            layout = device.get_result()
            for x in layout:
                # 这里layout是一个LTPage对象 里面存放着 这个page解析出的各种对象 一般包括LTTextBox,
                # LTFigure, LTImage, LTTextBoxHorizontal 等等 想要获取文本就获得对象的text属性
                if not isinstance(x, LTTextBoxHorizontal):
                    continue
                results = x.get_text()
                print(results)
                fd_out.write(results)   
                       
if __name__ == '__main__':
    pdf_name = 'test.pdf'
    result = 'test.txt'
    read_pdf(pdf_name, result)

以上就是python解析PDF的详细内容,更多关于python解析PDF的资料请关注编程网其它相关文章!

--结束END--

本文标题: python解析PDF程序代码

本文链接: https://www.lsjlt.com/news/10977.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python程序编程代码大全,python编程代码详解
    大家好,本文将围绕python程序编程代码大全展开说明,python编程游戏代码是一个很多人都想弄明白的事情,想搞清楚python代码大全简单需要先了解以下几个事情。 1、python编程例子有哪些? python编程经典例子: 画爱心表...
    99+
    2023-09-08
    pygame 开发语言
  • python的一些简单的程序代码,python的简单程序代码
    大家好,给大家分享一下python的一些简单的程序代码,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!   Python 100个简单小例子(持续更新中) 1 编写一个计算平年还是闰年的小例子其核心是年份可以整除4和...
    99+
    2023-10-10
    python
  • C++程序代码举例分析
    本篇内容主要讲解“C++程序代码举例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++程序代码举例分析”吧!对C++程序代码如下:#include <iostream>...
    99+
    2023-06-17
  • Python程序的分支结构实例代码分析
    这篇文章主要讲解了“Python程序的分支结构实例代码分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python程序的分支结构实例代码分析”吧!单分支结构:if 语句Python 中 i...
    99+
    2023-07-06
  • python 程序重启的代码
    # 重启程序 def restart_program(): print("重启。。。。。。。") python = sys.executable os.execl(py...
    99+
    2023-01-31
    重启 代码 程序
  • spark编程python代码分析
    今天小编给大家分享一下spark编程python代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。spark编程pyth...
    99+
    2023-07-05
  • Python基础之python代码程序内
    我们知道我们定义一个了一个变量,我们如果不需要这个变量时,需要释放该变量的运行内存,所以我们可以通过两种常用两种方式去释放这个内存。我们看下以下两个例子: 1.python回收机制 nav = 1 nav = 2 print(nav) 输...
    99+
    2023-01-30
    代码 基础 程序
  • python装饰器代码解析
    目录1.装饰器通用模型2.多个装饰器装饰的函数执行3.带参数的装饰器4.类装饰器1.装饰器通用模型 def wrapper(fn):     def inner(*args, **k...
    99+
    2024-04-02
  • Python 装饰器代码解析
    前言: 以往看到我博客的小伙伴可能都知道,我的前言一般都是吐槽和讲废话环节,哈哈哈哈。今天难得休息,最近可真是太忙了,博主已经连续一年都在996了,所以最近没怎么学习新东西,只能回顾...
    99+
    2024-04-02
  • Python编程密码学文件加密与解密代码解析
    目录本章要点1 纯文本文件2 使用置换密码加密文件的源代码transpositionFileCipher.py3 运行置换密码加密文件程序的样例4 文件操作4.1 打开文件4.2 数...
    99+
    2024-04-02
  • Python实现PDF转MP3的示例代码
    目录一、PDF转为MP3 二、准备工作三、代码很简单四、变更播音员总结一、PDF转为MP3  我们平常看到很多文件都是PDF格式,网上的各类书籍多为此格式。有时候...
    99+
    2023-05-18
    Python实现PDF转MP3 Python PDF转MP3 Python PDF MP3
  • 时间序列模型SCINet(代码解析)
    前言 SCINet模型,精度仅次于NLinear的时间序列模型,在ETTh2数据集上单变量预测结果甚至比NLinear模型还要好。在这里还是建议大家去读一读论文,论文写的很规范,很值得学习,论文地址S...
    99+
    2023-09-10
    人工智能 python SCINet 时间序列预测 因果神经网络
  • 是程序员,就用python导出pdf
    这两天一直在做课件,我个人一直不太喜欢PPT这个东西……能不用就不用,我个人特别崇尚极简风。 谁让我们是程序员呢,所以就爱上了Jupyter写课件,讲道理markdown也是个非常不错的写书格式啊。 安装Jupyter其实非常简单,你会...
    99+
    2023-01-31
    就用 程序员 pdf
  • Python解析CDD文件的代码详解
    目录前言基本介绍前言 在实际诊断测试开发中,我们写测试脚本会用到CDD文件中的诊断,常规做法可能是用到哪个就定义哪个,这样做的弊端是有可能造成重复定义,或者整个工程中有不同的变量名,...
    99+
    2024-04-02
  • Python高级教程之线程进程和协程的代码解析
    目录进程进程 5 种基本状态进程的特点进程间数据共享进程池进程的缺点线程线程的定义使用线程模块的简单示例代码解析协程协程与线程Python 协程协程的执行关闭协程链接协程以创建管道总...
    99+
    2024-04-02
  • 最炫Python烟花代码全解析
    导语: 除夕除夕,就是除去烦脑,迎接新的希望!在这里小编先祝大家除夕快乐,岁岁常欢笑,事事皆如意! 正文: 创建画布 setup和draw是p5.js的两个主函数,里头的crea...
    99+
    2024-04-02
  • python中解析和生成pdf文件
    python中可以对pdf文件进行解析和生成,分别需要安装pdfminer/pdfminer3k和reportlab文件库。 一、pdf文件的解析 pdfminer安装文件路径,分别使用于python2.0/3.0版本: https:...
    99+
    2023-01-31
    文件 python pdf
  • Python整蛊小程序代码怎么写
    今天小编给大家分享一下Python整蛊小程序代码怎么写的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。要打包成一个 exe 程...
    99+
    2023-06-30
  • python代码实现小程序登录流程时序总结
    目录官方文档小程序登录登录流程时序说明:注意:小程序的登录总结案例官方文档 https://developers.weixin.qq.com/miniprogram/dev/fram...
    99+
    2024-04-02
  • python读取pdf格式文档的实现代码
    python读取pdf文档 一、 准备工作 安装对应的库 pip install pdfminer3k pip install pdfminer.six 二、部分变量的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作