在日常工作或学习中,经常会遇到这样的无奈:

“小任,你把这个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格式(包教包会)...相关推荐

  1. python中的super用法详解_【Python】【类】super用法详解

    一.问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: class A: def __init__(sel ...

  2. python自动生成鸡汤文_用20行Python代码生成鸡汤,打造AI咪蒙指日可待。

    作者:Ramtin Alami "Don't think of the overwhelming majority of the impossible." "不要去想不可 ...

  3. 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...

  4. cat命令详解_好程序员Python培训之详解eval好与坏

    好程序员Python培训之详解eval好与坏,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面我们一起来看一下吧. eval是Python的一个内置函数,这个函数的作用 ...

  5. python3占位符详解_占位符最新:Python 占位符的使用方法详解_爱安网 LoveAn.com

    关于"占位符"的最新内容 聚合阅读 这篇文章主要介绍了Python 占位符的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以 ...

  6. python def函数报错详解_【python】详解python函数定义 def()与参数args、可变参数*args、关键参数**args使用实例...

    Python内置了很多函数,可以直接调用.Python内置的函数可以通过官方文档查看.也可以通过help()查看帮助信息.函数名是指向函数对象的引用,把函数名赋给变量,相当于给函数起了别名. 1. 定 ...

  7. python把pdf转word_手把手|20行Python代码教你批量将PDF文件转为Word格式(包教包会)...

    作者:菜鸟分析 Python爱好者社区--专栏作者 个人介绍:一个痴迷于Python语言的业余程序猿,未来的理想是能够与一群痴迷于Python语言的程序猿改变世界 知乎专栏: https://zhua ...

  8. 手把手 | 20行Python代码教你批量将PDF转为Word

    2019独角兽企业重金招聘Python工程师标准>>> 在日常工作或学习中,经常会遇到这样的无奈: "小任,你把这个PDF中的文件码出来发我" 艹,倒霉,2M的P ...

  9. python协程详解_彻底搞懂python协程-第一篇(关键词1-4)

    任何复杂的概念或系统都不是凭空出现的,我们完全可以找到它的演化历程,寻根究底终会发现,其都是在一系列并不那么复杂的简单组件上发展演化而来! by 落花僧 本文通过一系列关键概念,逐步递进理解协程. 0 ...

最新文章

  1. jenkins pipeline脚本_Jenkins 创建流水线 (Pipeline) 项目的脚本
  2. cdmp不停增长 oracle_Stream异常导致Oracle不断产生trc文件
  3. nyoj--891--找点(贪心)
  4. 你眼中的嵌入式是什么样?
  5. Vue CLI 3 可以使用 TypeScript 生成新工程
  6. System.getProperty(user.dir) 获取jar包所在目录
  7. 经纬度绘图_Python气象绘图教程(二十二)—mpl_toolkits.axes_grid1
  8. 半监督学习在金融文本分类上的探索和实践
  9. mysql 数据库的基本操作语法
  10. 3d数字孪生工厂可视化三维建模平台
  11. 【C++后台开发面经】面试总结第七波:面试智力题
  12. 免费的WebService服务器
  13. mPaaS iOS框架笔记0-mPaaS iOS 框架初探(以MPH5Demo_plugin为例)
  14. 逻辑推理:张老师的生日
  15. 计算机睡眠状态能挂游戏,台式电脑怎么设置WIN7睡眠状态下不断网我要挂游戏。...
  16. 给图片加水印--手把手教新码农如何把技术变成产品
  17. 软件测试 -- 进阶 11 手工测试与自动化测试
  18. Java中equals方法造成空指针异常的原因及解决方案
  19. Java 反射6-动态代理模式
  20. 盘点 | 10大行业大数据应用痛点及解决策略

热门文章

  1. 设计模式在vue中的应用(五)
  2. MyBatis(4)动态SQL
  3. javascript返回上一页的三种写法
  4. 浅谈python的深浅拷贝
  5. 超燃开学演讲:不读书不吃苦,你要青春干嘛
  6. create-react-app 配置sass
  7. cookies和session
  8. 优先队列(个人模版)
  9. Write operations are not allowed in read-only mode
  10. 最佳适应算法模拟内存分配