拿到一份英文的合約範本、廠商規格書或簡報,要翻成中文給同事看,最麻煩的往往不是翻譯本身,而是翻完之後版面全亂了:表格被撐破、圖片跑位、頁首頁尾不見,還得花時間一頁一頁調回來。
所以 jt-doc-tools 加入了新工具「文件翻譯」。搭配 LLM Server 整合後,上傳文書檔案即可進行翻譯,而且維持文件原本的格式與內容樣式輸出。翻完會產出前幾頁的預覽圖,可以先比對原文與譯文的效果,再決定要不要下載檔案。
本文截圖的成果,翻譯時採用 Gemma 4 26B 模型,運作於 Ollama 與 DGX Spark 上,整個過程資料都沒有離開自己的機房。
支援的檔案格式
目前支援三大類、九種格式:
- 文件
.doc / .docx / .odt - 簡報
.ppt / .pptx / .odp - 試算表
.xls / .xlsx / .ods
九種格式都做過實際檔案的往返測試:產出的檔案打得開、譯文也確實寫進去了。舊的二進位格式(.doc、.xls、.ppt)會先轉成新格式再翻,翻完再轉回去,所以你上傳什麼副檔名,拿回來的就是什麼副檔名。
PDF 文件的處理方式
文件翻譯不直接收 PDF,原因是 PDF 裡根本沒有「段落」這種東西,文字是一塊一塊定位好的碎片,換成長度不同的譯文之後,版面一定跑掉。
解法是先利用本專案內的「PDF 轉文書檔」工具,轉回有段落的 .docx 或 .odt,再交給文件翻譯接手處理即可。
注意:PDF 轉文書檔時,轉換引擎請選 pdf2docx。同一份 12 頁文件實測,pdf2docx 保住了 11 個完整段落;而版面最漂亮的 jtdt-layout 把每一行釘在固定位置,跨行的句子全被切開,送給模型的都是半句話,翻出來會接不起來。
如果只是想看懂 PDF 在寫什麼、不需要產出檔案,用另一支「逐句翻譯」工具更直接,它會以左邊原文、右邊譯文的方式對照呈現。
操作方式
操作很單純,畫面上方會顯示這次使用的模型與 LLM Server 位址,確認無誤後:
- 選擇原文語言(可以自動偵測)與目標語言
- 把檔案拖進上傳區,或從工作區載入
- 選填文件領域,例如法律合約、醫療報告、軟體技術文件、財務報表、網路 / IT 維運文件,可以複選,也可以自己填
- 按「開始翻譯」

文件領域會一起送進 LLM 的提示裡,用來提升專業用詞的精確度。同一個英文字在合約、醫療、IT 文件裡的譯法可能完全不同,這一欄填了差很多。
上傳後畫面會先顯示這份文件有多少可翻譯段落與字元數,心裡大概有個底。翻譯是在伺服器上的背景作業執行,可以直接關掉這個頁面,完成後到「我的作業」下載即可;中途想停也可以按「停止翻譯」。
譯文預覽與下載
翻譯完成後,會產出前 6 頁的預覽圖,左邊原文、右邊譯文並排,就是本文首圖的畫面。可以先比對版面有沒有跑掉、譯文順不順,滿意了再按「下載翻譯後的檔案」,點預覽圖還能放大看細節。
從首圖可以看到,標題的粗體、編號清單的層次、藍色的說明文字,以及文件中間那張對話框截圖,全部都留在原本的位置,只有文字換成了中文。
保留版面的作法
一般把文件丟給 AI 翻譯,常見作法是把整份內容抽成純文字、翻完再重新排版,版面當然回不去。文件翻譯的作法不一樣:直接在檔案的 XML 上動手,只把文字換成譯文,框線、表格、頁首頁尾、圖片都不動。
這中間有幾個細節是實際踩過才知道的:
- 以段落為單位送翻
Word 裡一句話常被切成好幾個文字片段,例如中間有一個字改成粗體就會切開。逐片段翻等於把半句話丟給模型,譯文一定走樣,所以一律以完整段落送出 - 保留每一行的格式
試算表很常見「說明文字+換行+紅色斜體補充」的寫法,能依行切開的地方就依行寫回,紅字提示翻完之後還是紅字 - 不該翻的不送
純數字、日期、網址、頁碼欄位都不送給模型,既省時間,也避免頁碼被翻成一句話 - 段數對不上絕不硬湊
為了速度會把多個段落合成一次請求,但模型回來的段數對不上時,整批退回逐段重翻。硬湊會把 A 段的譯文寫進 B 段,產出的文件看起來完全正常,只有讀的人會發現意思全錯 - 單段失敗保留原文
某一段翻譯失敗時保留原文,不會讓整份作業失敗
另外,翻成繁體中文時會套用一份台灣用語對照表,跟專案內的逐句翻譯共用同一份,避免出現「軟件」「數據庫」這類用語。
模型選擇
這支工具一份文件動輒幾十次 LLM 請求,模型選擇對速度影響很大。以 Gemma 4 這一家來說,要看的不是總參數,而是每個 token 實際算幾個參數:
- gemma4:26b(推薦)
MoE 架構,總參數 26B,但每個 token 只啟用約 4B,產生速度接近 4B 模型,吞吐量最好;Q4 量化約需 14 GB 記憶體 - gemma4:12b
dense 架構,12B 全部都要算,反而比 26B 慢,只有記憶體不夠(約 7 GB)時才選它 - gemma4:31b
dense 架構,品質最強但也最慢
管理員可以在 LLM 設定頁,單獨替文件翻譯指定模型,不影響其他工具。實測 gemma4:26b 搭配並行 4,每段約 0.5 秒,一份 200 段的文件大概一分多鐘就翻完。
注意:Ollama 預設的上下文長度偏小,長段落的提示超過時,Ollama 不會報錯,而是安靜地截掉開頭,翻出來的結果會亂掉。建議調到 16K(16384)以上,LLM 設定頁按「測試連線」可以看到模型實際載入的上下文長度。
結論
文件翻譯想解決的就是那個最煩人的步驟:翻完還要重新排版。現在只要上傳檔案、確認預覽後再下載,即可取得同格式、同版面的中文版。
而且搭配地端的 LLM Server,合約、規格書這類敏感文件不用上傳到雲端翻譯服務,也不用擔心 token 費用,這正是 jt-doc-tools 一開始的出發點:文件留在自己的機房裡處理。
參考資料
- jt-doc-tools:原始碼庫(GitHub)
https://github.com/jasoncheng7115/jt-doc-tools - jt-doc-tools:LLM 整合說明
https://github.com/jasoncheng7115/jt-doc-tools/blob/main/LLM.md - jt-doc-tools:自架的 PDF 與 Office 文件處理平台
https://blog.jason.tools/2026/07/jt-doc-tools-1.html



