用Python开发一个PDF转Word的小工具

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: PDF格式的文档在我们使用的时候比较方便,因为不会因为编辑器和其他原因导致格式不正常,但是有时候我们又需要对这个文档进行修改,这时候我们就需要将PDF解析成word格式的。网上有很多的格式转换的网站和软件,但是大多数只能免费使用几次,后面再使用的话就要升级vip了,那如果我们自己写一个pdf转换的程序,是不是很方便又很niuability呢?

PDF格式的文档在我们使用的时候比较方便,因为不会因为编辑器和其他原因导致格式不正常,但是有时候我们又需要对这个文档进行修改,这时候我们就需要将PDF解析成word格式的。网上有很多的格式转换的网站和软件,但是大多数只能免费使用几次,后面再使用的话就要升级vip了,那如果我们自己写一个pdf转换的程序,是不是很方便又很niuability呢?

这篇文章就说说如何使用python来写一个pdf转换word的小工具。


这里我使用的系统是win10系统,python版本是3.7:


微信截图_20220517192451.png


使用的依赖包是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文档的内容如下:


5f5456fd5af34817824f033ee80847ec~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


执行代码:


6756f4c584f74c3ea4b4c1c29c043470~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


解析出doc文档:


ddfed9bab0b54313901a677ef351df84~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


打开内容如下:


cde6285aa3374608afe7c7f2c01da2b2~tplv-k3u1fbpfcp-zoom-in-crop-mark_1304_0_0_0.webp.jpg


上面就是python如何使用pdfminer3k将pdf文档转换为doc文本格式,类似的还有将pdf转换为txt、doc转pdf,其实实现方式就差不多了,感兴趣的同学可以自己试试,有任何问题欢迎交流讨论。

目录
相关文章
|
5天前
|
IDE 测试技术 开发工具
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
在Python开发中,调试是提升效率的关键技能。本文总结了10个实用的调试方法,涵盖内置调试器pdb、breakpoint()函数、断言机制、logging模块、列表推导式优化、IPython调试、警告机制、IDE调试工具、inspect模块和单元测试框架的应用。通过这些技巧,开发者可以更高效地定位和解决问题,提高代码质量。
67 8
10个必备Python调试技巧:从pdb到单元测试的开发效率提升指南
|
9天前
|
人工智能 文字识别 数据挖掘
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
MarkItDown 是微软开源的多功能文档转换工具,支持将 PDF、PPT、Word、Excel、图像、音频等多种格式的文件转换为 Markdown 格式,具备 OCR 文字识别、语音转文字和元数据提取等功能。
78 9
MarkItDown:微软开源的多格式转Markdown工具,支持将PDF、Word、图像和音频等文件转换为Markdown格式
|
19天前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
73 5
|
1月前
|
机器学习/深度学习 人工智能 关系型数据库
Python开发
Python开发
40 7
|
1月前
|
前端开发 安全 数据库
使用Python开发独立站的全面指南
本文详细介绍了如何使用Python及其Web框架Django和Flask快速搭建功能完善、易于管理的独立站。从Python和Web开发基础讲起,逐步覆盖环境搭建、项目创建、数据库设计、视图与URL路由、模板创建、表单处理、测试调试、部署优化及安全维护等内容,旨在帮助开发者高效构建稳定的Web应用。
72 1
|
1月前
|
缓存 API 数据库
Python哪个框架合适开发速卖通商品详情api?
在跨境电商平台速卖通的商品详情数据获取与整合中,Python 语言及其多种框架(如 Flask、Django、Tornado 和 FastAPI)提供了高效解决方案。Flask 简洁灵活,适合快速开发;Django 功能全面,适用于大型项目;Tornado 性能卓越,擅长处理高并发;FastAPI 结合类型提示和异步编程,开发体验优秀。选择合适的框架需综合考虑项目规模、性能要求和团队技术栈。
27 2
|
1月前
|
存储 API 数据安全/隐私保护
Python开发淘宝详情API的深入探索
通过Python开发淘宝详情API,你可以高效地获取商品信息,为电商运营和市场分析提供强有力的数据支持。本文详细介绍了注册开发者账号、获取API密钥、构建请求、解析响应数据等步骤,并探讨了相关的注意事项和最佳实践。希望这些内容能够帮助你更好地理解和使用淘宝开放平台的API接口,实现你的业务需求。
39 1
|
1月前
|
JSON API 数据格式
如何使用Python开发天猫获得淘宝买家秀API接口?
本文介绍了如何使用Python开发天猫和淘宝买家秀API接口,包括注册开放平台账号、创建应用获取API权限、构建请求URL、发送请求获取响应及解析数据等步骤,帮助开发者高效获取和处理商品信息与用户评价数据。
30 0
|
Python
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
周二推了一篇Python编辑ppt的文章,行哥告诉读者学会重复处理PPT接单兼职更加高效。因为Python是一种生产工具,掌握生产工具后就应该拿去尝试赚钱。
259 0
学会Python自动制作Word,将看到一个5天4位数的赚钱机会
|
23天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!