作者:江夏
| 知乎:www.zhihu.com/people/1024…
| GitHub:github.com/JiangXia-10…
| CSDN:blog.csdn.net/qq_4115394…
| 公众号:1024笔记
本文一共1469字,阅读时长9分钟
PDF格式的文档在我们使用的时候比较方便,因为不会因为编辑器和其他原因导致格式不正常,但是有时候我们又需要对这个文档进行修改,这时候我们就需要将PDF解析成word格式的。网上有很多的格式转换的网站和软件,但是大多数只能免费使用几次,后面再使用的话就要升级vip了,那如果我们自己写一个pdf转换的程序,是不是很方便又很niuability呢?
这篇文章就说说如何使用python来写一个pdf转换word的小工具。
这里我使用的系统是win10系统,python版本是3.7:
使用的依赖包是pdfminer3k,可以通过下面的命令进行安装:
pip install pdfminer3k
具体代码如下,每行代码的功能都写在了注释中,就不再一一进行赘述:
# author:江夏
# date: 2020-10-31
# description:python将pdf文档转换为word格式
import sys
import importlib
importlib.reload(sys)
from pdfminer.pdfparser import PDFParser,PDFDocument
from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter
from pdfminer.converter import PDFPageAggregator
from pdfminer.layout import *
from pdfminer.pdfinterp import PDFTextExtractionNotAllowed
# 首先定义一个解析pdf文档的函数
# 解析pdf文件,获取文件中包含的各种对象
def parse(pdf_path):
# 这里以二进制读模式打开pdf文档
fp = open(pdf_path, '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
else:
# 创建PDf 资源管理器 来管理共享资源
rsrcmgr = PDFResourceManager()
# 创建一个PDF设备对象
laparams = LAParams()
device = PDFPageAggregator(rsrcmgr, laparams=laparams)
# 创建一个PDF解释器对象
interpreter = PDFPageInterpreter(rsrcmgr, device)
# 用来计数页面,图片,曲线,figure,水平文本框等对象的数量
num_page, num_image, num_curve, num_figure, num_TextBoxHorizontal = 0, 0, 0, 0, 0
# 循环遍历列表,每次处理一个page的内容
# doc.get_pages() 获取page列表
for page in doc.get_pages():
# 页面加1
num_page += 1
interpreter.process_page(page)
# 接受该页面的LTPage对象
layout = device.get_result()
for x in layout: 、
# 图片对象
if isinstance(x,LTImage):
num_image += 1
# 曲线对象
if isinstance(x,LTCurve):
num_curve += 1
# figure对象
if isinstance(x,LTFigure):
num_figure += 1
# 获取文本内容
if isinstance(x, LTTextBoxHorizontal):
# 水平文本框对象加1
num_TextBoxHorizontal += 1
# 保存文本内容,生成doc文件的文件名及路径
with open(r'test.doc', 'a',encoding='utf-8') as f:
results = x.get_text()
f.write(results)
f.write('\n')
# 打印出paf文档的对象情况
print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n'
%num_TextBoxHorizontal)
# 执行主函数
if __name__ == '__main__':
#读取pdf文件路径及文件名
pdf_path = r'C:\Users\Jiang\Desktop\test.pdf'
#对该路径下的pdf文件执行上面自定义的解析pdf文档的函数
parse(pdf_path)
pdf文档的内容如下:
执行代码:
解析出doc文档:
打开内容如下:
上面就是python如何使用pdfminer3k将pdf文档转换为doc文本格式,类似的还有将pdf转换为txt、doc转pdf,其实实现方式就差不多了,感兴趣的同学可以自己试试,有任何问题欢迎交流讨论。
另外所有实战文章的源码都会同步至github,有需要的欢迎下载使用。
最后如果觉得本文写得不错,就点下赞和再看推荐给更多的人呗。欢迎关注公众号:1024笔记,免费获取海量学习资源(涵盖视频、源码、文档)!
其他推荐: