社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

Python爱好者社区 • 8 年前 • 1018 次点击  

作者:菜鸟分析
个人介绍:一个痴迷于Python语言的业余程序猿,未来的理想是能够与一群痴迷于Python语言的程序猿改变世界
知乎专栏: https://zhuanlan.zhihu.com/c_149865214
专栏介绍:恋习Python|因痴恋Python而起,因学习Python而聚,与大家一起疯狂练习Python代码


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

“小任,你把这个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,则代表成功

二、代码实操

导入相关包

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

整体思路为:构造文档对象,解析文档对象,提取所需内容

构造文档对象

构造解释器

2.导入需要解析的PDF文件

将所需解析的文件与执行代码放到同一个目录下,如图:

test.pdf内容

3.具体代码如下:

from pdfminer.pdfparser import PDFParser, PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter from pdfminer.layout import LAParams from pdfminer.converter import PDFPageAggregator from pdfminer.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 not doc.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列表        for page in doc.get_pages():            #利用解释器的process_page()方法解析读取单独页数            interpreter.process_page(page)            #使用聚合器get_result()方法获取内容            layout = device.get_result()            #这里layout是一个LTPage对象,里面存放着这个page解析出的各种对象            for out in layout:                #判断是否含有get_text()方法,获取我们想要的文字                if hasattr(out,"get_text"):                    print(out.get_text())                    with open('test.txt','a') as f:                        f.write(out.get_text()+'\n') if __name__ == '__main__':    parse()

最终得到的test.txt结果如下:

结束:对于Python批量PDF转Word的操作介绍就到此,本文仅仅作为一种运用库展示代码编写过程,具体技术还需要有兴趣的朋友,与我一起讨论专研,互相学习进步。

赞赏作者

Python爱好者社区历史文章大合集

Python爱好者社区历史文章列表(每周append更新一次)

福利:文末扫码立刻关注公众号,“Python爱好者社区”开始学习Python课程

关注后在公众号内回复 课程即可获取

小编的Python入门视频课程!!!

崔老师爬虫实战案例免费学习视频。

丘老师数据科学入门指导免费学习视频。

陈老师数据分析报告制作免费学习视频。

玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。

丘老师Python网络爬虫实战免费学习视频。



今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/rAPw9CoDIm
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/7541