当前位置:

首页 > 编程开发 > 怎么用两行Python代码实现pdf转word功能

怎么用两行Python代码实现pdf转word功能

PDF Expert for Mac 2 简体中文
PDF Expert for Mac 2 简体中文

是由Adobe公司发明的,一种非依附于软件、硬件和操作系统呈现文档的文件格式。

立即下载
¥299
2026-08-22
Mac软件 读写虚拟 本月促销

一、安装依赖包pipinstall--indexhttps://pypi.mirrors.ustc.edu.cn/simple/python-office二、pdf转word2.1代码实现importofficeoffice.pdf.pdf2docx(file_path='test.pdf')运行过程如下:[1/4]Openingdocument...[INFO][2/4]Analyzingdocument...[WARNING]'created'timestampseem

本文目录

      一、安装依赖包

      pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ python-office

      二、pdf转word

      2.1 代码实现

      import office
      office.pdf.pdf2docx(file_path = 'test.pdf')

      运行过程如下:

      [1/4] Opening document...
      [INFO] [2/4] Analyzing document...
      [WARNING] 'created' timestamp seems very low; regarding as unix timestamp
      [WARNING] 'modified' timestamp seems very low; regarding as unix timestamp
      [WARNING] 'created' timestamp seems very low; regarding as unix timestamp
      [WARNING] 'modified' timestamp seems very low; regarding as unix timestamp
      [INFO] [3/4] Parsing pages...
      [INFO] (1/9) Page 1
      [INFO] (2/9) Page 2
      [INFO] (3/9) Page 3
      [INFO] (4/9) Page 4
      [INFO] (5/9) Page 5
      [INFO] (6/9) Page 6
      [INFO] (7/9) Page 7
      [INFO] (8/9) Page 8
      [INFO] (9/9) Page 9
      [INFO] [4/4] Creating pages...
      [INFO] (1/9) Page 1
      [INFO] (2/9) Page 2
      [INFO] (3/9) Page 3
      [INFO] (4/9) Page 4
      [INFO] (5/9) Page 5
      [INFO] (6/9) Page 6
      [INFO] (7/9) Page 7
      [INFO] (8/9) Page 8
      [INFO] (9/9) Page 9
      [INFO] Terminated in 1.30s.
       
      Process finished with exit code 0

      2.2 pdf内容

      怎么用两行Python代码实现pdf转word功能

      2.3 转换后的word

      怎么用两行Python代码实现pdf转word功能

      由上可见,效果还不错。

      补充

      除了上文的办法,小编还为大家整理了更多Python实现的PDF转Word方法,需要的可以参考一下

      方法一:

      import os
      from configparser import ConfigParser
      from io import StringIO
      from io import open
      from concurrent.futures import ProcessPoolExecutor
      
      from pdfminer.pdfinterp import PDFResourceManager
      from pdfminer.pdfinterp import process_pdf
      from pdfminer.converter import TextConverter
      from pdfminer.layout import LAParams
      from docx import Document
      
      
      def read_from_pdf(file_path):
          with open(file_path, 'rb') as file:
              resource_manager = PDFResourceManager()
              return_str = StringIO()
              lap_params = LAParams()
      
              device = TextConverter(
                  resource_manager, return_str, laparams=lap_params)
              process_pdf(resource_manager, device, file)
              device.close()
      
              content = return_str.getvalue()
              return_str.close()
              return content
      
      
      def save_text_to_word(content, file_path):
          doc = Document()
          for line in content.split('\n'):
              paragraph = doc.add_paragraph()
              paragraph.add_run(remove_control_characters(line))
          doc.save(file_path)
      
      
      def remove_control_characters(content):
          mpa = dict.fromkeys(range(32))
          return content.translate(mpa)
      
      
      def pdf_to_word(pdf_file_path, word_file_path):
          content = read_from_pdf(pdf_file_path)
          save_text_to_word(content, word_file_path)
      
      
      def main():
          config_parser = ConfigParser()
          config_parser.read('config.cfg')
          config = config_parser['default']
      
          tasks = []
          with ProcessPoolExecutor(max_workers=int(config['max_worker'])) as executor:
              for file in os.listdir(config['pdf_folder']):
                  extension_name = os.path.splitext(file)[1]
                  if extension_name != '.pdf':
                      continue
                  file_name = os.path.splitext(file)[0]
                  pdf_file = config['pdf_folder'] + '/' + file
                  word_file = config['word_folder'] + '/' + file_name + '.docx'
                  print('正在处理: ', file)
                  result = executor.submit(pdf_to_word, pdf_file, word_file)
                  tasks.append(result)
          while True:
              exit_flag = True
              for task in tasks:
                  if not task.done():
                      exit_flag = False
              if exit_flag:
                  print('完成')
                  exit(0)
      
      
      if __name__ == '__main__':
          main()

      方法二:

      加密过的PDF转word

      #-*- coding: UTF-8 -*- 
      #!/usr/bin/python
      #-*- coding: utf-8 -*-
      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
      import os
      #设置工作目录文件夹
      os.chdir(r'c:/users/dicey/desktop/codes/pdf-docx')
      #解析pdf文件函数
      def parse(pdf_path):
       fp = open('diya.pdf', '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的内容
        for page in 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,LTImage): # 图片对象
           num_image += 1
          if isinstance(x,LTCurve): # 曲线对象
           num_curve += 1
          if isinstance(x,LTFigure): # figure对象
           num_figure += 1
          if isinstance(x, LTTextBoxHorizontal): # 获取文本内容
           num_TextBoxHorizontal += 1 # 水平文本框对象增一
           # 保存文本内容
           with open(r'test2.doc', 'a',encoding='utf-8') as f: #生成doc文件的文件名及路径
            results = x.get_text()
            f.write(results)
            f.write('\n')
        print('对象数量:\n','页面数:%s\n'%num_page,'图片数:%s\n'%num_image,'曲线数:%s\n'%num_curve,'水平文本框:%s\n'
          %num_TextBoxHorizontal)
      
      if __name__ == '__main__':
       pdf_path = r'diya.pdf' #pdf文件路径及文件名
       parse(pdf_path)
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Python PDF Word
      相关文章 更多
      线上PDF转Word怎么操作?如何在线转换PDF为Word?
      线上PDF转Word怎么操作?如何在线转换PDF为Word?

      打开PDF.cn的PDF转Word页面,上传文件,核对状态后点击开始转换,下载Word。普通导出型PDF转后基本可编辑;扫描型需先OCR。单次限传1个文件,超过50MB或多份文件建议使用客户端。转换后需检查文字、表格是否错位。

      python删除一个列表里的重复元素的方法与代码示例
      python删除一个列表里的重复元素的方法与代码示例

      学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

      Python写接口的步骤及完整代码示例
      Python写接口的步骤及完整代码示例

      详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

      codex怎么读取word文档及docx文件操作教程
      codex怎么读取word文档及docx文件操作教程

      介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

      怎么在Python中调用C语言代码提升性能
      怎么在Python中调用C语言代码提升性能

      详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

      Python与C语言的性能差异及底层原理
      Python与C语言的性能差异及底层原理

      深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

      Python和C语言哪个更适合编程入门
      Python和C语言哪个更适合编程入门

      客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

      selenium上传文件教程本地文件路径设置方法
      selenium上传文件教程本地文件路径设置方法

      深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

      针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

      langgraph python guide中文入门教程详解
      langgraph python guide中文入门教程详解

      本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

      即将离开本站
      您即将前往第三方网站,请确认是否继续?