驚呆同事的自動化小工具來了!Python 批次將 PDF 轉 Word

數據分析那些事
7 min readSep 28, 2022

--

無論在工作還是學習中,大家都會遇到一個問題 “將 PDF 中的內容(文字和圖片)轉換為 Word 的格式” ,也可以說從只讀轉換成可編輯的格式。當然網上有很多工具可以實現,但大多數都是收費的。

那今天的分享就是透過利用 Python 實現批次將 PDF 轉換成 Word 並做成一個桌面小工具。

好處一方面是 Python 有免費的開源庫可供我們使用;另一方面可以根據我們需求靈活定製功能,最後工具可以重複使用,即使你的同事電腦沒有 Python 開發環境,也可以輕鬆使用。

一、實現效果

二、環境準備

2.1 pdf 轉 word

實現這個功能,主要使用的是 pdf2docx 這個庫,也是最推薦的。

只要是標準 PDF 文件,裡面的圖片和表格都可以保留格式,要注意的是 Python 版本必須是 3.6 或以上,本文使用的是 Python 3.8。安裝命令如下:

2.2 繪製圖形使用者介面

Python 有許多 GUI 工具包可供選擇,本文使用 PySimpleGUI,使用起來比較簡單,對於我們這個需求足夠用。更多可參考:PySimpleGUI 文件[1],有非常多的示例,本文不做過多拓展。使用之前也需要安裝一下,注意大小寫。

pip install PySimpleGUI

2.3 py 程式打包 exe

pyinstaller 是一個非常簡單的打包 Python 的 py 檔案的庫,一條命令即可實現打包。更多可參考官方文件:pyinstaller[2]

pip install pyinstaller

三、程式碼實現

3.1 PDF 轉 Word 函式

from pdf2docx import Converter
import PySimpleGUI as sg


def pdf2word(file_path):
file_name = file_path.split('.')[0]
doc_file = f'{file_name}.docx'
p2w = Converter(file_path)
p2w.convert(doc_file, start=0, end=None)
p2w.close()
return doc_file

3.2 設計圖形使用者介面

def main():
# 选择主题
sg.theme('LightBlue5')
# 设置窗口
layout = [
[sg.Text('pdfToword', font=('微软雅黑', 12)),
sg.Text('', key='filename', size=(50, 1), font=('微软雅黑', 10), text_color='blue')],
[sg.Output(size=(80, 10), font=('微软雅黑', 10))],
[sg.FilesBrowse('选择文件', key='file', target='filename'), sg.Button('开始转换'), sg.Button('退出')]]
# 创建窗口
window = sg.Window("Python与数据分析_青青", layout, font=("微软雅黑", 15), default_element_size=(50, 1))

3.3 實現單個檔案和批次檔案操作

# 事件循环
while True:
# 窗口的读取,有两个返回值(1.事件;2.值)
event, values = window.read()
print(event, values)

if event == "开始转换":
# 单个文件
if values['file'] and values['file'].split('.')[1] == 'pdf':
filename = pdf2word(values['file'])
print('文件个数 :1')
print('\n' + '转换成功!' + '\n')
print('文件保存位置:', filename)
# 多个文件
elif values['file'] and values['file'].split(';')[0].split('.')[1] == 'pdf':
print('文件个数 :{}'.format(len(values['file'].split(';'))))
for f in values['file'].split(';'):
filename = pdf2word(f)
print('\n' + '转换成功!' + '\n')
print('文件保存位置:', filename)
else:
print('请选择pdf格式的文件哦!')
if event in (None, '退出'):
break

window.close()

3.4 呼叫主要功能函式

main()

四、打包程式碼

開啟 DOS 視窗並切換到 demo.py(這裡我新建了資料夾,放到了D盤)檔案所在的目錄,注意路徑中不要有中文:

pyinstaller 指令的常見可選引數:

-i 給應用程式新增圖示

-F 指定打包後只生成一個exe格式的檔案

-D –onedir 建立一個目錄,包含exe檔案,但會依賴很多檔案(預設選項)

-c –console, –nowindowed 使用控制檯,無介面(預設)

-w –windowed, –noconsole 使用視窗,無控制檯

  • p 新增搜尋路徑

在當前的目錄下,將會生成兩個資料夾:build 和 dist。

dist 資料夾裡就是所有可執行的 exe 檔案,傳送快捷方式到桌面,點選 exe 即可執行。

五、解決 exe 檔案過大問題【可略】

如果生成 exe 之後,若發現程式異常的慢,可檢查導包程式碼,儘量不要出現以下寫法,否則每次啟動程式,都會匯入大量函式佔用大量時間。

from ··· import * 
改成 import 包名

擴充套件連結

[1] PySimpleGUI 文档 https://github.com/PySimpleGUI/PySimpleGUI
[2] pyinstaller https://pyinstaller.readthedocs.io/en/latest/usage.html

好了,到這裡本期分享的內容就結束了,其主要目的是為大家提高工作效率,為辦公自動化提供一種思路。

來源:Cherish
文章連結:https://www.jianshu.com/p/4837343451fe

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~

文章推薦

餅圖變形記,肝了3000字,收藏就是學會!

MySQL必須掌握4種語言!

太實用了!4種方法教你輕鬆製作互動式儀表板!

跟資料打交道的人都得會的這8種資料模型,滿足工作中95%的需求

妙呀!一行Python程式碼

--

--

數據分析那些事
數據分析那些事

Written by 數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

No responses yet