python实现pdf转word详解_手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)...
在日常工作或学习中,经常会遇到这样的无奈:
“小任,你把这个PDF中的文件码出来发我”
倒霉,2M的PDF12点也完不了啊!
很多时候在学习时发现许多文档都是PDF格式,PDF格式却不利于学习使用,因此需要将PDF转换为Word文件,但或许你从网上下载了很多软件,但只能转换前五页(如WPS等),要不就是需要收费,那有没有免费的转换软件呢?
so,菜鸟分析给各位带来了一个免费简单快速的方法,手把手教你用Python批量处理PDF格式文件,获取自己想要的内容,存为word形式。
在实现PDF转Word功能之前,我们需要一个python的编写和运行环境,同时安装好相关的依赖包。 对于python环境,我们推荐使用PyCharm。 在本地电脑环境,anaconda提供了非常便利的安装和部署。
PDF转Word功能所需的依赖包如下:
PDFParser(文档分析器),PDFDocument(文档对象),PDFResourceManager(资源管理器),PDFPageInterpreter(解释器),PDFPageAggregator(聚合器),LAParams(参数分析器)
一、前期准备工作
说明:菜鸟分析是在Windows7下使用python***的3.6版本
1.安装pdfminer3k模块
安装anaconda后,直接可以通过pip安装
2.若安装不成功,可以试试下面方法
首先下载pdfminer3k:https://pypi.python.org/pypi/pdfminer3k;然后安装pdfminer
将下载好的pdfminer3k解压到D:或其他合适的盘符,通过win+r 打开运行窗口,输入cmd;
输入D:切换到D盘,cd pdfminer3k(pdf解压的文件夹),输入setup.py install安装软件。
最终显示Finished,则代表成功
二、代码实操
导入相关包
frompdfminer.pdfparser import PDFParser, PDFDocument
frompdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
frompdfminer.layout import LAParams
frompdfminer.converter import PDFPageAggregator
整体思路为:构造文档对象,解析文档对象,提取所需内容
构造文档对象
构造解释器
2.导入需要解析的PDF文件
将所需解析的文件与执行代码放到同一个目录下,如图:
test.pdf内容
3.具体代码如下:
frompdfminer.pdfparser import PDFParser, PDFDocument
frompdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
frompdfminer.layout import LAParams
frompdfminer.converter import PDFPageAggregator
frompdfminer.pdfinterp import PDFTextExtractionNotAllowed
def parse():
#rb以二进制读模式打开本地pdf文件
fn = open('test.pdf','rb')
#创建一个pdf文档分析器
parser = PDFParser()
#创建一个PDF文档
doc = PDFDocument()
#连接分析器 与文档对象
parser.set_document()
doc.set_parser()
# 提供初始化密码doc.initialize("lianxipython")
# 如果没有密码 就创建一个空的字符串
doc.initialize("")
# 检测文档是否提供txt转换,不提供就忽略
if notdoc.is_extractable:
raise PDFTextExtractionNotAllowed
else:
#创建PDf资源管理器
resource = PDFResourceManager()
#创建一个PDF参数分析器
laparams = LAParams()
#创建聚合器,用于读取文档的对象
device = PDFPageAggregator(resource,laparams=laparams)
#创建解释器,对文档编码,解释成Python能够识别的格式
interpreter = PDFPageInterpreter(resource,device)
# 循环遍历列表,每次处理一页的内容
# doc.get_pages() 获取page列表
forpageindoc.get_pages():
#利用解释器的process_page()方法解析读取单独页数
interpreter.process_page(page)
#使用聚合器get_result()方法获取内容
layout = device.get_result()
#这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象
foroutinlayout:
#判断是否含有get_text()方法,获取我们想要的文字
if hasattr(out,"get_text"):
print(out.get_text())
withopen('test.txt','a')asf:
f.write(out.get_text()+'\n')
if __name__ == '__main__':
parse()
最终得到的test.txt结果如下:
结束:对于Python批量PDF转Word的操作介绍就到此,本文仅仅作为一种运用库展示代码编写过程,具体技术还需要有兴趣的朋友,与我一起讨论专研,互相学习进步。
【编辑推荐】
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0
python实现pdf转word详解_手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)...相关推荐
- python中的super用法详解_【Python】【类】super用法详解
一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...
- python自动生成鸡汤文_用20行Python代码生成鸡汤,打造AI咪蒙指日可待。
作者:Ramtin Alami "Don't think of the overwhelming majority of the impossible." "不要去想不可 ...
- 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法
下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...
- cat命令详解_好程序员Python培训之详解eval好与坏
好程序员Python培训之详解eval好与坏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. eval是Python的一个内置函数,这个函数的作用 ...
- python3占位符详解_占位符最新:Python 占位符的使用方法详解_爱安网 LoveAn.com
关于"占位符"的最新内容 聚合阅读 这篇文章主要介绍了Python 占位符的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...
- python def函数报错详解_【python】详解python函数定义 def()与参数args、可变参数*args、关键参数**args使用实例...
Python内置了很多函数,可以直接调用.Python内置的函数可以通过官方文档查看.也可以通过help()查看帮助信息.函数名是指向函数对象的引用,把函数名赋给变量,相当于给函数起了别名. 1. 定 ...
- python把pdf转word_手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)...
作者:菜鸟分析 Python爱好者社区--专栏作者 个人介绍:一个痴迷于Python语言的业余程序猿,未来的理想是能够与一群痴迷于Python语言的程序猿改变世界 知乎专栏: https://zhua ...
- 手把手 | 20行Python代码教你批量将PDF转为Word
2019独角兽企业重金招聘Python工程师标准>>> 在日常工作或学习中,经常会遇到这样的无奈: "小任,你把这个PDF中的文件码出来发我" 艹,倒霉,2M的P ...
- python协程详解_彻底搞懂python协程-第一篇(关键词1-4)
任何复杂的概念或系统都不是凭空出现的,我们完全可以找到它的演化历程,寻根究底终会发现,其都是在一系列并不那么复杂的简单组件上发展演化而来! by 落花僧 本文通过一系列关键概念,逐步递进理解协程. 0 ...
最新文章
- jenkins pipeline脚本_Jenkins 创建流水线 (Pipeline) 项目的脚本
- cdmp不停增长 oracle_Stream异常导致Oracle不断产生trc文件
- nyoj--891--找点(贪心)
- 你眼中的嵌入式是什么样?
- Vue CLI 3 可以使用 TypeScript 生成新工程
- System.getProperty(user.dir) 获取jar包所在目录
- 经纬度绘图_Python气象绘图教程(二十二)—mpl_toolkits.axes_grid1
- 半监督学习在金融文本分类上的探索和实践
- mysql 数据库的基本操作语法
- 3d数字孪生工厂可视化三维建模平台
- 【C++后台开发面经】面试总结第七波:面试智力题
- 免费的WebService服务器
- mPaaS iOS框架笔记0-mPaaS iOS 框架初探(以MPH5Demo_plugin为例)
- 逻辑推理:张老师的生日
- 计算机睡眠状态能挂游戏,台式电脑怎么设置WIN7睡眠状态下不断网我要挂游戏。...
- 给图片加水印--手把手教新码农如何把技术变成产品
- 软件测试 -- 进阶 11 手工测试与自动化测试
- Java中equals方法造成空指针异常的原因及解决方案
- Java 反射6-动态代理模式
- 盘点 | 10大行业大数据应用痛点及解决策略