python pdf转word的两种方法
第一种方法:多线程处理
优点:可以同时处理多个文件,速度非常快。
缺点:只能识别文字信息,对于图片等非文本内容无法识别;另外,pdf文档中避免出现 ‘\n’ 等转义字符,否则可能会出现一些识别歧义。
使用情景:文件量大,且只对文本信息有要求的情况
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
from docx.oxml.ns import qn
from docx.shared import Pt# 将pdf解析成文本文件
def read_from_pdf(file_path):with open(file_path, 'rb') as file:resource_manager = PDFResourceManager() # pdf资源管理器 管理共享资源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 remove_control_characters(content):mpa = dict.fromkeys(range(13))return content.translate(mpa)# 将文本保存到word文档中
def save_text_to_word(content, file_path):doc = Document()for line in content.split('\n'):paragraph = doc.add_paragraph()text = paragraph.add_run(remove_control_characters(line))text.font.size = Pt(15)text.font.name = 'Times New Roman' # 控制是西文时的字体text.element.rPr.rFonts.set(qn('w:eastAsia'), u'楷体')doc.save(file_path)# pdf转word的整个过程打包
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', encoding='utf-8')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':continuefile_name = os.path.splitext(file)[0]pdf_file = config['pdf_folder'] + '/' + fileword_file = config['word_folder'] + '/' + file_name + '.docx'print('正在处理:', file)result = executor.submit(pdf_to_word, pdf_file, word_file) # 转到pdf_to_word函数tasks.append(result)while True:exit_flag = Truefor task in tasks:if not task.done():exit_flag = Falseif exit_flag:print('完成')exit(0)if __name__ == '__main__':if __name__ == '__main__':main()
这里用到config.cfg(配置文件)。在当前目录建立一个config.cfg文件,将一些重要的参数信息放在这个文件里面。如果觉得麻烦其实也可以直接写在代码中。
config.cfg
[default]
pdf_folder=/Python_ALL/Python_File/3_Interest/testfile
word_folder=/Python_ALL/Python_File/3_Interest/testfile
max_worker=3
第二种方法:使用pdf2docx库来完成
优点:使用包装好的库来进行处理,可以较完美地处理文本和图片等不同内容的信息,还原度较高。
缺点:处理速度较慢,对pdf文档中一页一页进行识别。
适用场景:文件量少,对pdf文档整体信息都有需求的情况。
from pdf2docx import Converter
from configparser import ConfigParser
import osdef main():config_parser = ConfigParser()config_parser.read('config.cfg', encoding='utf-8')config = config_parser['default']for file in os.listdir(config['pdf_folder']):extension_name = os.path.splitext(file)[1]if extension_name != '.pdf':continuefile_name = os.path.splitext(file)[0]pdf_file = config['pdf_folder'] + '/' + fileword_file = config['word_folder'] + '/' + file_name + '.docx'cv = Converter(pdf_file)cv.convert(word_file)cv.close()if __name__=='__main__':main()
python pdf转word的两种方法相关推荐
- python文字教程-Python在图片中添加文字的两种方法
本文主要介绍的是利用Python在图片中添加文字的两种方法,下面分享处理供大家参考学习,下来要看看吧 一.使用OpenCV 在图片中添加文字看上去很简单,但是如果是利用OpenCV来做却很麻烦.Ope ...
- python自带的shell是什么-python中执行shell的两种方法总结
一.使用python内置commands模块执行shell commands对Python的os.popen()进行了封装,使用SHELL命令字符串作为其参数,返回命令的结果数据以及命令执行的状态: ...
- python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...
今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...
- 站长在线Python精讲:在Python中格式化字符串的两种方法详解
欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中格式化字符串的两种方法详解>.本知识点主要内容有:使用%操作符格式化字符串和使用format()方法格式化字 ...
- python 手动安装包的两种方法
python 手动安装包的两种方法 对于 .tar.gz 的包来说 解压缩文件 aaaxxxx-1.0.1.tar.gz 移动到压缩文件所在目录 使用tar -zxvf aaaxxxx-1.0.1.t ...
- python list列表排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...
- CAD图纸怎么转换成PDF格式?这两种方法快速转换
怎么把CAD图纸转换成PDF格式呢?大家在使用CAD绘图工具制作CAD图纸的时候,在将图纸绘制好后为了能够方便发送和浏览,会选择把图纸转换成PDF文件格式来保存发送,这样就不会出现文件打不开的现象.但 ...
- Java调用打印机打印PDF文档的两种方法
最近,由于项目需求,需要增加系统调用打印机打印PDF文档功能.以前在Asp.Net项目中做过套打,但是现在的需求直接文档打印,下面是实现代码调用打印机的两种方法. 1.Java Print Servi ...
- OFD文件怎么转换成PDF格式?这两种方法轻松实现转换
怎么把OFD文件转换成PDF格式呢?OFD文件大家可能不太熟悉,使用的也不多,它其实也是一种归档保存的一种文件格式,在很多方面与PDF文件有些相似,但是打开它需要使用到相关的OFD阅读器,这个就会让很 ...
最新文章
- 精通python要多久-小白到精通python要多久
- Go 语言读写 Excel
- 基于Boost::beast模块的无栈协程WebSocket服务器
- 自定义ViewGroup实现仿微信图片选择器
- node.js——麻将算法(七)简易版麻将出牌AI2.0
- Java图片压缩 BufferedImage Linux 下代码阻塞不工作
- 开源 -- 机器学习相关报道
- SAS编程基础 - 数据获取与数据集操作(1)
- 虚拟机网卡和linux bridge上tap设备的关系
- stm32f103r6最小系统原理图_stm32f103c8t6封装及最小系统原理图
- HPU算法协会公开课第一期:【基础算法1】(STL 自定义sort 前缀和差分)
- SyntaxError:Non-UTF-8 code starting with ‘\xb6‘ in file E:/...py on line 16, but no encoding declare
- 第六届世界互联网大会乌镇峰会简评
- 分享一款CHROME极速下载管理器插件
- AI会让AI工程师失业吗?
- 微信开发者.js.json_非中国开发者如何利用微信的1.1B每月活跃用户
- 移动网络运营商显示无服务器,无线路由器忽然拨不上号,显示网络运营商远端无响应怎么处理...
- 十二核能让联发科引爆核弹战吗?
- 【流畅的Python学习笔记】2023.4.29
- 华为交换机的配置大全
热门文章
- 以太网模块支持SCADA 软件通过三菱以太网协议连接
- bjui框架中用icheck实现单选全选效果
- 这个仰望星空的地方,藏着马化腾的梦想
- 手机密码用计算机怎么解锁,手机忘记开机密码怎么办,有这四招1分钟就搞定...
- 储能系统双向DCDC变换器蓄电池充放电仿真模型有buck模式 储能系统双向
- 以患者到医院就诊为背景,使用列表对象(ArrayList)和泛型机制实现就诊排队叫号系统
- 用循环不停地输出2的倍数
- 浩顺考勤机二次开发(第二版,附实测可用的demo)
- iphone计算机如何打字速度,如何使用iphone打字速度倍增 4个技能不能错过
- 量化分析师的Python日记【第4天:一大波金融Library来袭之scipy篇】