跳到主要內容
節省工具箱Jason Tools
專案分享

jt-doc-tools 文件翻譯:保留原始格式與版面的辦公文件翻譯

Jason Cheng 發布 瀏覽 1 次
jt-doc-tools 文件翻譯:保留原始格式與版面的辦公文件翻譯
本文目錄
  1. 支援的檔案格式
  2. 操作方式
  3. 譯文預覽與下載
  4. 保留版面的作法
  5. 模型選擇
  6. 結論
  7. 參考資料

拿到一份英文的合約範本、廠商規格書或簡報,要翻成中文給同事看,最麻煩的往往不是翻譯本身,而是翻完之後版面全亂了:表格被撐破、圖片跑位、頁首頁尾不見,還得花時間一頁一頁調回來。

所以 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 位址,確認無誤後:

  1. 選擇原文語言(可以自動偵測)與目標語言
  2. 把檔案拖進上傳區,或從工作區載入
  3. 選填文件領域,例如法律合約、醫療報告、軟體技術文件、財務報表、網路 / IT 維運文件,可以複選,也可以自己填
  4. 按「開始翻譯」
文件翻譯的上傳與設定畫面:選擇語言、上傳檔案、勾選文件領域
文件翻譯的上傳與設定畫面:選擇語言、上傳檔案、勾選文件領域

文件領域會一起送進 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 一開始的出發點:文件留在自己的機房裡處理。

參考資料

Jason Cheng

Jason Cheng

企業開源技術顧問,專注架構規劃與實務導入

關於作者 →

延伸閱讀