使用Python批量将PDF转Word

这篇具有很好参考价值的文章主要介绍了使用Python批量将PDF转Word。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简述

        以下全部代码无法完美对图片、表格等非文字形式的内容转化。要较好的效果需要使用光学字符分析等方法进行转化

        我懒,不想将代码模块拆分出来写注释

        除代码1中有详细注释外,剩下的代码仅在关键部分进行注释

代码1:小规模文件的转换

代码简介

        不使用线程,挨个文件转换格式。

        适用于小规模的PDF文件批量转换。

        需要自己选择PDF文件(可以全选文件,自动筛选PDF格式)

代码内容

import os, sys  # 导入操作系统接口和系统相关的参数和函数
from pdf2docx import Converter  # 导入pdf2docx库中的Converter类,用于将PDF文件转换为docx格式

import tkinter as tk  # 导入Tkinter库,用于创建图形用户界面
from tkinter import filedialog  # 导入Tkinter库中的filedialog模块,用于打开文件对话框

# 定义一个函数,用于将PDF文件转换为docx格式
def convert_pdf_to_docx(file_path):
    if os.path.splitext(file_path)[1] == '.pdf':  # 检查文件的扩展名是否为.pdf
        pdf_filename = os.path.basename(file_path)  # 从file_path中提取出文件名(不含路径)
        word_name = os.path.splitext(pdf_filename)[0] + ".docx"  # 创建新的文件名,将.docx作为扩展名

        cv = Converter(pdf_filename)  # 创建一个Converter对象,用于转换文件
        cv.convert(word_name)  # 调用convert方法,将PDF文件转换为docx格式,并将转换后的文件保存为word_name
        cv.close()  # 关闭转换器对象

        print(f"**{pdf_filename}**处理完成")  # 打印转换完成的信息

# 创建一个Tkinter窗口,但不显示它
root = tk.Tk()
root.withdraw()

# 使用filedialog模块打开一个文件选择对话框,允许用户选择多个文件
file_paths = filedialog.askopenfilenames(title="选择需要处理的文件")
if len(file_paths) == 0:  # 如果没有选择文件,退出程序
    sys.exit()
else:
    print("待处理文件:")  # 打印提示信息
    for file_path in file_paths:  # 遍历所有选择的文件路径
        print("  ", file_path)  # 打印每个文件的路径


# 遍历所有选择的文件路径,并调用convert_pdf_to_docx函数进行转换
for file_path in file_paths:
    convert_pdf_to_docx(file_path)

print("全部PDF转换完成")  # 打印所有PDF文件转换完成的信息

功能的执行

选择需要转换的文件

选择你需要转换的文件,可以直接全选

一次只能转换一个文件夹中的全部文件,无法进入到该文件夹的次级文件夹中

使用Python批量将PDF转Word,Python,python,pdf,word
选择需要转换的PDF文件

开始转换文件

请注意终端信息窗口,会提示转换进度

使用Python批量将PDF转Word,Python,python,pdf,word
开始转换

转换完成

使用Python批量将PDF转Word,Python,python,pdf,word
转换完成

转换效果:

使用Python批量将PDF转Word,Python,python,pdf,word

代码2:较大规模文件的转换

更新功能

1.使用多线程模式,一个文件一条线程的转换文件

2.增加时间计算,统计转换文件需要多少时间,方便后继继续优化提高转换速度

详细代码

import os
import sys
from pdf2docx import Converter
import tkinter as tk
from tkinter import filedialog
import threading
import time

# 定义一个函数,用于将PDF文件转换为docx格式
def convert_pdf_to_docx(file_path):
    try:
        if os.path.splitext(file_path)[1] == '.pdf':
            #pdf_filename = os.path.basename(file_path)
            #word_name = os.path.splitext(pdf_filename)[0] + ".docx"
            cv = Converter(file_path)
            cv.convert(os.path.splitext(os.path.basename(file_path))[0] + ".docx")
            cv.close()
    except Exception as e:
        print(f"转换 {os.path.basename(file_path)} 时发生错误: {e}")

# 创建一个Tkinter窗口,但不显示它
root = tk.Tk()
root.withdraw()

# 使用filedialog模块打开一个文件选择对话框,允许用户选择多个文件
file_paths = filedialog.askopenfilenames(title="选择需要处理的文件")
if not file_paths:
    sys.exit("没有选择文件,操作取消。")


# 打印待处理的文件
print("待处理文件:")
for file_path in file_paths:
    print("  ", file_path)

# 创建一个线程列表用于存储所有的转换线程
threads = []

# 遍历所有选择的文件路径,并创建转换线程
for file_path in file_paths:
    thread = threading.Thread(target=convert_pdf_to_docx, args=(file_path,))
    threads.append(thread)

# 记录开始时间
start_time = time.time()

# 启动所有的转换线程
for thread in threads:
    thread.start()

# 等待所有的转换线程完成
for thread in threads:
    time.sleep(0.1)# 暂停程序1毫秒
    thread.join()

# 记录结束时间
end_time = time.time()

# 计算并打印转换完成所需的总时间
total_time = end_time - start_time
print(f"所有文件转换完成,总共耗时: {total_time:.2f} 秒。")

代码3:超大规模文件的转换

功能的更新

1.引入线程池,控制程序消耗的系统资源

详细代码

import os
import logging
from tkinter import Tk, filedialog
from concurrent.futures import ThreadPoolExecutor, as_completed
from pdf2docx import Converter

# 配置日志格式和级别
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

# 定义一个函数来处理单个PDF文件的转换
def process_pdf_file(pdf_path):
    try:
        pdf_dir = os.path.dirname(pdf_path)
        file_name = os.path.splitext(os.path.basename(pdf_path))[0]
        docx_path = os.path.join(pdf_dir, f"{file_name}.docx")
        
        # 转换PDF到Word
        cv = Converter(pdf_path)
        cv.convert(docx_path, start=0, end=None)
        cv.close()
        
        # 记录文件保存的信息
        logging.info(f"Converted file saved to {docx_path}")
    except Exception as e:
        # 如果发生错误,记录错误信息而不是转换成功信息
        logging.error(f"Error processing file {pdf_path}: {e}")

# 创建主窗口
root = Tk()
root.withdraw()  # 隐藏主界面

# 选择PDF文件
pdf_paths = filedialog.askopenfilenames(title="选择PDF文件", filetypes=[("PDF files", "*.pdf")])

if pdf_paths:
    # 创建一个线程池,限制线程数量为CPU核心数
    with ThreadPoolExecutor(max_workers=os.cpu_count()*2) as executor:
        # 将任务提交到线程池
        futures = [executor.submit(process_pdf_file, pdf_path) for pdf_path in pdf_paths]
        
        # 使用as_completed迭代器等待所有任务完成
        for future in as_completed(futures):
            future.result()
            if future.exception() is not None:
                logging.error(f"An error occurred: {future.exception()}")
            else:
                logging.info(f"File processed successfully: {future.result()}")

    # 所有文件处理完成后,关闭窗口并退出程序
    root.destroy()
else:
    logging.info("没有选择PDF文件。")

代码4:超快速PDF文件转换

功能更新

只转换文字,对任何图片表格会出现问题

详细代码

import os
import logging
from tkinter import Tk, filedialog
from concurrent.futures import ThreadPoolExecutor, as_completed
import fitz  # PyMuPDF

# 配置日志格式和级别
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

# 定义一个函数来处理单个PDF文件的转换
def process_pdf_file(pdf_path):
    try:
        pdf_dir = os.path.dirname(pdf_path)
        file_name = os.path.splitext(os.path.basename(pdf_path))[0]
        docx_path = os.path.join(pdf_dir, f"{file_name}.docx")
        
        # 使用PyMuPDF读取PDF内容
        pdf = fitz.open(pdf_path)
        text = ""
        for page in pdf:
            text += page.get_text()
        
        pdf.close()
        
        # 将文本写入Word文档(这里需要一个将文本转换为docx格式的函数)
        with open(docx_path, 'w', encoding='utf-8') as f:
            f.write(text)
        
        # 记录文件保存的信息
        logging.info(f"Converted file saved to {docx_path}")
    except Exception as e:
        # 如果发生错误,记录错误信息而不是转换成功信息
        logging.error(f"Error processing file {pdf_path}: {e}")

# 创建主窗口
root = Tk()
root.withdraw()  # 隐藏主窗口

# 选择PDF文件
pdf_paths = filedialog.askopenfilenames(title="选择PDF文件", filetypes=[("PDF files", "*.pdf")])

if pdf_paths:
    # 创建一个线程池
    with ThreadPoolExecutor(max_workers=min(len(pdf_paths), os.cpu_count())) as executor:
        # 将任务提交到线程池
        futures = [executor.submit(process_pdf_file, pdf_path) for pdf_path in pdf_paths]
        
        # 等待所有任务完成
        for future in as_completed(futures):
            future.result()

    # 所有文件处理完成后,关闭窗口并退出程序
    root.destroy()
else:
    logging.info("没有选择PDF文件。")

批量删除文件夹内的全部word:使用Python批量删除文件夹内的Word-CSDN博客

程序打包方式见我的这个文章:在Vscode中将python打包为exe,超级简单,还能自定义exe的logo_怎么将vscode编写的代码打包成exe-CSDN博客文章来源地址https://www.toymoban.com/news/detail-850431.html

到了这里,关于使用Python批量将PDF转Word的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python 批量修改文件名(PDF、word、Excel、图片、视频等)

          很多朋友遇到批量修改文件名的问题,网上各种搜,操作麻烦不说还有些需要付费。这里不多废话,直接上代码。 一、支持库 二、 定义函数 三、程序入口 四、运行,微云 下载:文件分享

    2024年01月23日
    浏览(59)
  • 用python批量实现文件夹中所有pdf转成图片并插入到一个word文件中

    要实现这个任务,你需要使用Python的几个库: PyPDF2  用于处理PDF文件, python-docx  用于操作Word文件, PIL (或 Pillow )用于处理图片。 首先,确保你已经安装了这些库。如果没有,你可以使用pip来安装: bash复制代码 pip install PyPDF2 python-docx Pillow 接下来是Python脚本的示例代码

    2024年01月16日
    浏览(61)
  • 使用python将PDF转word

    实现功能,将程序所在当前路径下的所有PDF文件转化为word 上述代码中使用了  os  模块来获取当前路径及构建文件路径,使用了  pdf2docx  模块来进行 PDF 到 DOCX 的转换。通过遍历当前路径下的所有文件和文件夹,并判断是否是 PDF 文件,将其转换为 DOCX 文件。 可以使用以下

    2024年02月15日
    浏览(76)
  • 使用Python将word转换为pdf

    使用Python可以将多个word文件一起转为pdf,操作比较便捷,可以实现自动化办公。 代码如下: 运行结果: 欢迎大家查看作者的主页,主页中还有关于编程与算法方面的更多内容,欢迎大家相互沟通学习。

    2024年02月15日
    浏览(64)
  • 使用Python将Word文档转换为PDF的方法

    摘要: 文介绍了如何使用Python编程语言将Word文档转换为PDF格式的方法。我们将使用python-docx和pywin32库来实现这个功能,这些库提供了与Microsoft Word应用程序的交互能力。 正文: 在现实生活和工作中,我们可能会遇到将Word文档转换为PDF格式的需求。PDF格式具有广泛的应用,可

    2024年02月14日
    浏览(62)
  • 使用python做了一个pdf转word的小工具

    写在前面:近来工作上一直在处理word excel等文档的处理;于是利用新学的python写了一个小工具  1、其实实现起来很简单,主要是利用了pdf2docx这个库来实现 首先安装导入pdf2docx库  2、代码部分: 话不多说直接上代码:

    2024年02月07日
    浏览(47)
  • python如何使用最简单的方式将PDF转换成Word?

    由于PDF的文件大多都是只读文件,有时候为了满足可以编辑的需要通常可以将PDF文件直接转换成Word文件进行操作。 看了网络上面的python转换PDF文件为Word的相关文章感觉都比较复杂,并且关于一些图表的使用还要进行特殊的处理。 本篇文章主要讲解关于如何使用python是实现将

    2024年02月11日
    浏览(61)
  • Python 实现Word转PDF

    通过将 Word 文档转换为 PDF,您可以确保文档在不同设备上呈现一致,并防止其他人对文档内容进行非授权修改。此外,在你需要打印文档时,转换为PDF还能确保打印输出的准确性。本文将介绍如何使用 Python 库将Word文档转换为PDF格式 。 Python 将 Word DOCX/DOC 转换为 PDF Python 将

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包