懶惰之最|GitHub 實測

PDF 轉 Word 免費工具 pdf2docx 實測:表格 26 格全對,掃描檔卻一個字都改不了

2026-10-11|專案:ArtifexSoftware/pdf2docx|Markdown 版

重點摘要

  • pdf2docx 把 1 頁、7 列 4 欄表格的報價單 PDF 轉成 Word 只花 0.30–0.36 秒,26 格有內容的儲存格全部正確。
  • 跨欄、跨列的合併儲存格與圖片在轉換後都保留,雙欄排版的段落順序 1→12 正確。
  • 50 頁報價單一次轉換 3.5–4.2 秒,開多程序 2.8 秒,50 個表格一個不少。
  • 掃描版 PDF 轉出的 Word 只有一張圖,可編輯文字 0 字,工具會警告不支援掃描檔。
  • 結論: 電腦產生的 PDF(尤其是表格)交給 pdf2docx 很省事,掃描檔則完全轉不出可編輯文字。
  • 適合: 想在自己電腦上把報價單、收支表等電腦產生的 PDF 轉成可編輯 Word,且能打一行指令的人。
  • 不適合: 處理掃描檔或手機拍照 PDF、要求排版與字型完全不變、或完全不想碰指令列的人。
實測項目 結果
安裝(pip install .) 44 秒
報價單 1 頁 0.30–0.36 秒,表格 26/26 格正確;日期行與客戶行被併成一段
合併儲存格收支表 0.23–0.30 秒,合併與圖片保留,金額全對
雙欄通訊 12 段 0.21 秒,順序正確,轉成 Word 兩欄版面
50 頁報價單 3.5–4.2 秒;--multi_processing 2.8 秒;50 個表格
掃描版(150 dpi 圖片) 0.19–0.26 秒,段落 0、表格 0、圖片 1
維護狀態 README 註明 Artifex 已不再積極維護,改 MIT 授權

搬家公司、裝潢師傅、學校家長會傳來的文件,十之八九是 PDF。你只想改一個數量、補一行備註再傳回去,卻發現 PDF 根本改不動;買編輯軟體要月費,丟到線上轉檔網站又擔心報價單上的姓名地址外流。

pdf2docx 是一個開源的 Python 工具,一行指令就能在自己電腦上把 PDF 轉成 Word(.docx),檔案不用上傳到別人的伺服器。它在 GitHub 有 3,500 多顆星,名氣遠不如那些線上轉檔網站。我準備了四種常見文件實際轉一遍,從最順排到最慘。

測試設備:Mac mini M4 Pro(12 核、64GB)。測試版本:pdf2docx 0.5.13(commit 33e1c23),搭配 PyMuPDF 1.28.2。所有測試文件都是自己做的,姓名、地址、金額皆為虛構。

安裝與基本用法

pip install pdf2docx          # 這次實測 44 秒裝好
pdf2docx convert quote.pdf quote.docx

只轉其中幾頁、或文件很長想開多程序加速(頁數範圍參數依官方文件,這次沒測;多程序有實測):

pdf2docx convert long50.pdf long50.docx --start=0 --end=10
pdf2docx convert long50.pdf long50.docx --multi_processing=True

實測結果排名

名次 測試文件 轉換時間 結果
1 搬家報價單(1 頁,7 列 4 欄表格) 0.30–0.36 秒 表格 26 格內容全對,黃色表頭保留
2 家長會收支表(跨欄、跨列合併儲存格+一張圖) 0.23–0.30 秒 合併儲存格與圖片都保留,數字全對
3 雙欄社區通訊(12 段) 0.21 秒 段落順序 1→12 正確,轉成 Word 的兩欄版面
— 50 頁報價單 3.5–4.2 秒(多程序 2.8 秒) 50 個表格一個不少
最後 掃描版報價單(整頁是圖片) 0.19–0.26 秒 可編輯文字 0 字,只得到一張圖

報價單轉換後,用 python-docx 讀出表格內容:7 列 4 欄、每格數字都對

第一名:一般報價單

表格是這類文件最怕跑掉的部分。轉出來的 Word 用 python-docx 逐格讀回,7 列 4 欄、26 格有內容的儲存格全部正確,合計 11,150 也是粗體。原本 PDF 裡「30 個」因為欄寬太窄被擠成兩行,Word 裡同樣是兩行,這是照原樣搬過去,不算錯。

但有兩個小地方要自己修:

  1. 兩行黏成一段:原本「報價日期…報價單號」和「客戶…搬遷地址」是分開的兩行,轉出後變成同一段文字,中間沒有換行。
  2. 字型沿用 PDF 裡的名稱:轉出的 Word 指定的是 PDF 內嵌的字型(這次是 Droid Sans Fallback、Nimbus Sans),電腦沒裝這些字型就會被替換。我用 Mac 的快速查看預覽時,整份文件變成明體。欄寬也略有不同,「樓層加價(五樓無電梯)」在預覽裡被擠成兩行。

第二名:合併儲存格的收支表

家長會收支表上方有跨兩欄的「收入」「支出」,左邊有跨兩列的「月份」,最下面「結餘」也是合併儲存格。轉出後這些合併都還在(python-docx 讀回時,合併格會重複出現同一個文字,這正是合併成功的特徵),所有金額沒有一個錯。右下角的藍色圖片也保留了。

第三名:雙欄排版

社區通訊左右兩欄各 6 段。轉出的 Word 把內文設定成「兩欄」的版面,段落順序從第 1 段到第 12 段完全正確,沒有左右交錯。要注意的是 Mac 快速查看不支援 Word 的分欄設定,預覽時看起來會變成上下排列,用 Word 開才是兩欄。

速度:50 頁一次轉

把報價單複製成 50 頁,一次轉換花了 3.5 到 4.2 秒(測兩次),轉出 50 個表格、250 段文字。開啟 --multi_processing=True 後是 2.8 秒。一般人手上的文件,速度不會是問題。

最後一名:掃描檔

掃描版 PDF 轉成 Word 後,看起來一模一樣,但整頁只是一張圖

我把同一份報價單轉成 150 dpi 的圖片,再包成 PDF,模擬掃描檔或手機拍照轉的 PDF。pdf2docx 不到半秒就轉完,但會跳出警告:

[WARNING] Words count: 0. It might be a scanned pdf, which is not supported yet.

打開轉出的 Word,畫面跟原本一模一樣,可是整頁只是一張圖片:段落 0、表格 0、可編輯的字 0 個。這是最容易被騙的情況,因為看起來「轉成功了」。

怎麼判斷你的 PDF 是不是掃描檔? 在 PDF 閱讀器裡試著反白選取文字,選不起來就是圖片。這種檔案要先做文字辨識(OCR),pdf2docx 本身不會做。

結論:誰適合用

我會把它留在電腦裡。用 Word、Excel 或系統直接匯出的 PDF,尤其是有表格的報價單、收支表,它不到一秒就轉好,表格與合併儲存格保留得很好,剩下的只是修換行與字型。

另外要知道:官方 README 已註明 Artifex 不再積極維護這個專案,並改用 MIT 授權開放社群接手,遇到問題可能得自己找解法或改用社群分支。

測試設備:Mac mini M4 Pro(12 核、64GB)。內容依實際執行結果撰寫,數據為撰寫當時的實測值。

← 所有實測