社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python 如何实现一键批量将 PDF 文档转 Word?

AI科技大本营 • 1 年前 • 264 次点击  
作者 | 欣一
来源 | Python爱好者集中营

无论是在工作还是学习当中,大家都会遇到这样一个问题,将“PDF当中的内容(文本和图片)转换为Word的格式”,也就是说从只读转换成可编辑的格式。网上绝大多数的工具也都是收费的,今天小编就给大家制作了一款批量将PDF文件转换为Word的神器,使用起来也是相当的方便。


实现效果


我们首先来看一下出来的效果,如下图所示


环境准备


用到的模块叫做pdf2docx,我们通过pip命令进行下载,如下

pip install pdf2docx

后续我们还可以为py文件打包,用到的库是pyinstaller

pip install pyinstaller


代码实现


我们先简单地实现将单个PDF文档转换成Word文档,代码如下

from pdf2docx import Convertercv = Converter(r"pdf文件的路径")cv.convert("test.docx", start=0,end=None)cv.close()

那么上面的是单个PDF文件,要是涉及到是多个PDF文件,则需要用到遍历上传过来的每一个文件,用到for循环遍历

def startAction(self):    output_path_1 = Path.joinpath(Path.home(), "Desktop")    output_path_2 = str(output_path_1) + "\\output"    if not os.path.exists(output_path_2):        os.mkdir(output_path_2)
for path_list in pdfPath_list: print("路径: ", path_list) name = path_list.split("/")[-1].split(".")[0] cv = Converter(path_list) cv.convert(output_path_2 + "\\{}.docx".format(name), start=0, end=None) cv.close()
msg_box = QMessageBox(QMessageBox.Information, '完成', '提取完成', QMessageBox.Yes) msg_box.exec_()

上述的代码,我们首先将指定好输出的Word文档的位置,这里小编设置的是在桌面,然后通过for循环去遍历处理每一个PDF文档,当所有的步骤都完成的时候,提示我们已经完成了。

当然整个可视化界面当中还有一个上传文件的功能,代码如下

# 选择本地文件上传def uploadFiles(self):    global pdfPath_list  # 这里为了方便别的地方引用文件路径,将其设置为全局变量    pdfPath_list, fileType = QFileDialog.getOpenFileNames(self.ui, "上传文件", r"路径", "*.pdf;;All Files(*)")    # 显示所选文件的路径    self.ui.lineEdit.setText(",".join(pdfPath_list))

整体的代码如下所示

from PySide2.QtWidgets import QApplication, QMessageBox, QFileDialogfrom PySide2.QtUiTools import QUiLoaderfrom pdf2docx import Converterfrom pathlib import Pathimport os
class OCRQt: def __init__ (self): self.ui = QUiLoader().load('pdf2word.ui') self.ui.pushButton.clicked.connect(self.uploadFiles) self.ui.pushButton_2.clicked.connect(self.startAction)
def uploadFiles(self): ........ ........
def startAction(self): ....... .......
if __name__ == '__main__': app = QApplication([]) # 显示创建的界面 MainWindow = OCRQt() # 创建窗体对象 MainWindow.ui.show() # 显示窗体 app.exit(app.exec_()) # 程序关闭时退出进程


往期回顾

迷惑行为大赏:在手中硬核「植入」芯片,只为解锁一辆车?


自从学了Pandas,妹子直呼很Nice!


亚马逊云科技的 AI 新引擎,如何助力企业应对“乌卡时代”?


为了在上海租房,我用python连夜爬了20000多条房源信息


分享

点收藏

点点赞

点在看

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/146687
 
264 次点击