【python】【多线程】巧用Python 实现多线程批量将 PDF 文档转换为 Word 格式

2. PDF文件批量转换Word


使用 Python 实现多线程批量将 PDF 文档转换为 Word 格式的示例代码:

import os
import threading
from pdf2docx import Converterclass PdfToWordThread(threading.Thread):def __init__(self, pdf_file, output_dir):threading.Thread.__init__(self)self.pdf_file = pdf_fileself.output_dir = output_dirdef run(self):pdf_file_path = os.path.join(self.output_dir, self.pdf_file)word_file_path = os.path.join(self.output_dir, os.path.splitext(self.pdf_file)[0] + ".docx")self.convert_pdf_to_word(pdf_file_path, word_file_path)def convert_pdf_to_word(self, pdf_file_path, word_file_path):try:# 使用 pdf2docx 库将 PDF 转换为 Wordcv = Converter(pdf_file_path)cv.convert(word_file_path, start=0, end=None)cv.close()print(f"Converted {pdf_file_path} to {word_file_path}")except Exception as e:print(f"Error converting {pdf_file_path} to Word format: {str(e)}")def main():# 指定输入 PDF 文件夹和输出 Word 文件夹input_dir = "/path/to/your/pdf/files"output_dir = "/path/to/your/word/files"# 获取输入文件夹中的所有 PDF 文件列表pdf_files = [f for f in os.listdir(input_dir) if os.path.isfile(os.path.join(input_dir, f)) and f.lower().endswith(".pdf")]# 创建线程池并设置最大线程数max_threads = 4threads = []# 遍历 PDF 文件列表,为每个 PDF 文件创建一个线程并启动for pdf_file in pdf_files:thread = PdfToWordThread(pdf_file, output_dir)thread.start()threads.append(thread)# 控制最大线程数if len(threads) >= max_threads:for t in threads:t.join()threads = []# 等待所有线程完成for t in threads:t.join()print("All conversions finished.")if __name__ == "__main__":main()

        在这个示例中,我们使用 `pdf2docx` 库将 PDF 文件转换为 Word 文件。我们创建了一个 `PdfToWordThread` 类来表示一个转换任务,并使用多线程方式来同时处理多个任务。您需要将 `input_dir` 和 `output_dir` 替换为实际的输入和输出目录路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的尝试:Codigger + Vim

若您愿意耐心投入,学习 Vim 的过程其实远比想象中轻松。我对 Vim 产生兴趣,主要是源于它对提升生产力的巨大潜力。我尝试了 Neovim、NvChad 以及 Codigger Vim 插件,如今我的工作效率已远超从前。 那么,Vim 究竟是什么呢&#xff…

【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras

【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras_学习率选择-CSDN博客文章浏览阅读9.2k次,点赞6次,收藏55次。keras 版本的LRFinder,借鉴 fast.ai Deep Learning course。前言学习率lr在神经网络中是最难调的全局参数&#x…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Navigator)

路由容器组件,提供路由跳转能力。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 可以包含子组件。 接口 Navigator(value?: {target: string, type?: NavigationType}) …

最新2024年项目基金撰写与技巧及GPT融合应用

随着社会经济发展和科技进步,基金项目对创新性的要求越来越高。申请人需要提出独特且有前瞻性的研究问题,具备突破性的科学思路和方法。因此,基金项目申请往往需要进行跨学科的技术融合。申请人需要与不同领域结合,形成多学科交叉…

包冲突解决之-invalid constant type: 18

背景 现象一:引入了一个包A,服务突然起不来了,后台有报错信息,Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type xxx available: expected at least 1 bean which quali…

Redis删除

一、del命令 del命令是Redis提供的一个常规的删除键的命令。它的语法如下: DEL key [key …] 其中,key是要删除的键名。可以指定多个键名,删除多个键。如果指定的键不存在,则会被忽略。 del命令会直接删除指定的键以及与之相关联…

float、double -- 精度丢失问题

任何使用二进制浮点数的编程语言都会有这个问题精度丢失问题,如 C++、C#、java 等。 C++/C#/Java 这些语言中已经封装好了方法来避免精度的问题. 这里有人有疑问,C++ cout 出来的数据是期望得到的值,就认为 c++ 没这个精度问题,这就是纯胡扯,自己写两行代码试试不就知道了…

Day44-sersync企业实时复制实战

Day44-sersync企业实时复制实战 1. sersync实时复制工具介绍1.1 sersync工具简介1.2 sersync特点1.3 sersync图解原理1.4 sersyncrsync实时复制方案项目实践1.4.1 图解项目方案架构及实现原理1.4.2 确保远程数据传输服务部署完成1.4.3 检查当前系统nfs01是否支持inotify实时监控…

vue使用elementPlus ui框架,如何给Dialog 对话框添加Loading 自定义类名显示隐藏

vue使用elementPlus ui框架时&#xff0c;如何给Dialog 对话框添加Loading 自定义类名&#xff0c;想要实现dialog对话框区域有loading效果 官方给出的这个API配置项customClass&#xff0c;使用不太明确。暂时无法实现绑定class。 最后的实现方式&#xff1a; <template&…

吐槽FineDataLink工具Format函数处理日期转字符串格式的说明文档

一.背景 为公司师带徒的任务做些记录。 二.文档存在的问题 1.文档情况 FORMAT-格式转换- FineBI帮助文档 FineBI帮助文档 函数定义&#xff1a; FORMAT(object,format) formart的格式有哪些呢&#xff1f;我们截图看看&#xff1a; 2.文档说明不足问题 同事的需求是把时…

gen_circle_

read_image (Image, fabrik) gen_circle_contour_xld (ContCircle, 200, 200, 100, 0, 6.28318, positive, 1) gen_circle_sector (CircleSector, 200, 200, 100.5, -0.392699, -1.1781) gen_circle_sector 创建一个圆形扇区。 gen_region_contour_xld 从 XLD 轮廓创建一个区…

AI人工智能培训讲师ChatGPT讲师叶梓培训简历及提纲ChatGPT等AI技术在医疗领域的应用

叶梓&#xff0c;上海交通大学计算机专业博士毕业&#xff0c;高级工程师。主研方向&#xff1a;数据挖掘、机器学习、人工智能。历任国内知名上市IT企业的AI技术总监、资深技术专家&#xff0c;市级行业大数据平台技术负责人。 长期负责城市信息化智能平台的建设工作&#xff…

[数据集][目标检测]牛羊检测数据集VOC+YOLO格式3393张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3393 标注数量(xml文件个数)&#xff1a;3393 标注数量(txt文件个数)&#xff1a;3393 标注…

免费阅读篇 | 芒果YOLOv8改进109:注意力机制SimAM:用于卷积神经网络的简单、无参数注意力模块

免费阅读篇|芒果YOLOv8改进109&#xff1a;注意力机制篇SimAM&#xff1a;用于卷积神经网络的简单、无参数注意力模块 &#x1f4a1;&#x1f680;&#x1f680;&#x1f680;本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接&#x…

C#中的隐式操作符,如何简化类型转换

&#x1f3c6;作者&#xff1a;科技、互联网行业优质创作者 &#x1f3c6;专注领域&#xff1a;.Net技术、软件架构、人工智能、数字化转型、DeveloperSharp、微服务、工业互联网、智能制造 &#x1f3c6;欢迎关注我&#xff08;Net数字智慧化基地&#xff09;&#xff0c;里面…

RocketMQ学习笔记四(黑马)项目

课程地址&#xff1a; 1.Rocket第二章内容介绍_哔哩哔哩_bilibili &#xff08;视频35~88&#xff0c;搭建了一个电商项目&#xff09; 待学&#xff0c;待完善。

JVM相关

文章目录 JVM的类加载过程JAVA内存泄露内存泄露的常见原因内存泄露的影响问题排查 JVM的调优java四种引用类型 JVM的类加载过程 JVM的类加载过程包括加载&#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09…

找准方向选CRM客户管理系统!2023年排行榜推荐

本文将为大家带来2023有哪些好用CRM客户管理系统&#xff1f;CRM系统排行榜基于品牌知名度、功能、产品实力、系统稳定性、用户体量等多重因素考量。其中Zoho CRM、红圈CRM等产品市场表现优异入选此次榜单。 1.Zoho CRM 公司成立时间&#xff1a;1996年 Zoho&#xff08;卓豪…

【算法】AC自动机的优化:增量更新与删除

一、概述 AC自动机&#xff08;Aho-Corasick Automation&#xff09;是著名的多模匹配算法&#xff0c;源于贝尔实验室&#xff0c;并且在实际应用中得到广泛的引用&#xff0c;且具有以下特点&#xff1a; 只需要扫描一次文本&#xff0c;即可获取所有匹配该文本的模式串复杂…

CSS扩展选择器

文章目录 1. 并集选择器2. 交集选择器3. 后代选择器4. 子代选择器5. 兄弟选择器5.1. 相邻兄弟选择器5.2. 通用兄弟选择器 6. 属性选择器7. 伪类选择器7.1. 动态伪类7.2. 结构伪类7.3. 否定伪类 8. 伪元素选择器9. Google 改进案例 1. 并集选择器 选中多个选择器对应的元素。一…