首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

60行Python代码将 PDF 文档转换为 Word 文档

前言

相信 PDF 文档转 Word 文档在您工作中是非常常见的一个问题,往往都找不到有效的解决办法,可以使用很多工具软件转换,但是大多都需要收费,还不能保证转换后格式、内容的完整性。不愿付费的你,今天教你怎样用64 行 Python 代码实现 PDF 文档转换成 Word 文档。

在 Python 中有很多功能强大的库,能帮助我们解决很多工作中遇到的难题。今天就来讲讲实现 PDF 文档转 Word 文档所用到的  pdfminer 和 python-docx 两个开发库。

pdfminer ,pdfminer 是用于从 PDF 文档提取信息的工具库,通过该该库可以识别 PDF 文档中的图片、文字、表格等信息,具有快速解析且高效提取的特点。

注意:在 Python 3 中使用 pdfminer3k,Python 2 中使用 pdfminer,这两个版本是不能兼容的。

python-docx ,Python 中 Word 文档读取写入等操作工具库。在 PDF 转 Word 过程中将 pdfminer 提取出来的写入 Word 文档中。

安装

pdfminer 在 Python 3 中安装:pip install pdfminer3k。

pdfminer 在 Python 2 中安装:pip install pdfminer。

python-docx 安装:pip install python-docx。

开始 Coding

导入必要的开发包

import sysimport importlibfrom docx import Documentfrom pdfminer.converter import PDFPageAggregatorfrom pdfminer.layout import LAParams, LTTextBoxHorizontalfrom pdfminer.pdfinterp import PDFTextExtractionNotAllowed, PDFResourceManager, PDFPageInterpreterfrom pdfminer.pdfparser import PDFParser, PDFDocumentimportlib.reload(sys)

这里只是做一个展示,在实际操作过程中,可以根据开发工具 PyCharm 提示选择导入开发包。

新建一个 PDF2Word 类,用于初始化 pdfminer 相关变量。

class PDF2Word: def __init__(self, pdf_path): # 以二进制读模式打开 PDF fp = open(pdf_path, 'rb') # 用文件对象来创建一个 PDF 文档分析器 parser = PDFParser(fp) # 创建一个 PDF 文档 self.doc = PDFDocument() # 连接分析器 与文档对象 parser.set_document(self.doc) self.doc.set_parser(parser)

# 提供初始化密码 # 如果没有密码 就创建一个空的字符串 self.doc.initialize()

PDF 转 Word 实现方法

# PDF 转 Word def pdf_to_word(self, sve_path): # 检测文档是否提供 txt 转换,不提供就忽略 if not self.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

# 首先创建一个文档对象 document = Document() # 循环遍历列表,每次处理一个page的内容 for page in self.doc.get_pages(): # doc.get_pages() 获取page列表 num_page += 1 # 页面增一 interpreter.process_page(page) # 接受该页面的LTPage对象 layout = device.get_result() for x in layout: if isinstance(x, LTTextBoxHorizontal): # 获取文本内容 results = x.get_text() document.add_paragraph(results) document.save(sve_path)

调用 PDF 转 Word 方法

if __name__ == '__main__': pdf_path = '人教版数学四上第六单元重难点、重点题型.pdf' covertFile = PDF2Word(pdf_path) covertFile.pdf_to_word('人教版数学四上第六单元重难点、重点题型.docx')

这是识别前的文档部分内容。

这是识别后的部分内容。

至此, PDF 文档转 Word 文档的方法就写完了,您学会了吗?欢迎关注我,跟我一起学习 Python 吧!当然想要学习 Python 还是得有教程的,如果您是 Python 新人,推荐您选择从 Python 基础教程开始学习。

封面图:Pixabay License

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200430A01FQN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券