BabelDOC:論文神器!PDF翻譯與雙語對照,新手也能輕鬆上手
身為學術研究者或是需要閱讀大量外文文獻的你,一定常常為了啃那些艱澀的英文(或其他語言)論文而感到頭痛。傳統的翻譯方式不僅耗時費力,還可能因為翻譯品質不佳而誤解原文意思。今天,要為大家介紹一款超實用的工具——BabelDOC,它能幫你快速翻譯 PDF 論文,還能生成雙語對照的版本,讓你輕鬆掌握論文精華!
什麼是 BabelDOC?
BabelDOC 是一個 Python 函式庫,主要功能是將 PDF 格式的科學論文進行翻譯,並提供雙語對照的功能。它不僅提供簡單的命令列介面,還有 Python API,方便嵌入到其他程式中使用。簡單來說,你可以把它想像成一個專門為論文翻譯而生的工具,而且還是開源的!
官方還推出了線上版本 Immersive Translate – BabelDOC ( https://app.immersivetranslate.com/babel-doc/ ),每個月提供 1000 頁的免費翻譯額度,讓使用者可以先體驗看看。如果需要更進階的功能,也可以考慮使用 PDFMathTranslate ( https://github.com/Byaidu/PDFMathTranslate ) 進行自架。
為什麼要用 BabelDOC?
- 快速翻譯: 不需要手動複製貼上,BabelDOC 可以直接讀取 PDF 文件並進行翻譯。
- 雙語對照: 生成的 PDF 文件可以選擇雙語對照模式,方便你同時查看原文和翻譯,確保理解的準確性。
- 免費或自架: 你可以選擇使用官方提供的線上服務(有免費額度),或者將程式碼下載到本地端自行架設。
- 開源專案: BabelDOC 是一個開源專案,意味著你可以自由使用、修改和分享它。
BabelDOC 的核心概念
BabelDOC 的核心在於將 PDF 文件的翻譯過程拆解成兩個主要的階段:
- 解析 (Parsing): 這個階段的目標是讀取 PDF 文件的結構,包括文字區塊、圖片、表格等等。簡單來說,就是讓程式知道 PDF 裡面有哪些東西,以及它們的位置。
- 渲染 (Rendering): 這個階段的目標是將解析出來的結構重新組合成一個新的 PDF 或其他格式的文件。也就是說,把翻譯好的內容放回適當的位置,讓它看起來像一份正常的論文。
BabelDOC 提供了一個中間的表示形式,讓你可以在這兩個階段之間進行調整和客製化。例如,你可以選擇不同的翻譯引擎,或者修改排版方式。
新手入門:如何開始使用 BabelDOC?
對於初學者來說,最簡單的方式就是使用 BabelDOC 的命令列介面。以下是一些基本的使用步驟:
- 安裝 BabelDOC
BabelDOC 建議使用
uv
這個工具來安裝,它可以更有效率地管理 Python 的虛擬環境和套件。- 安裝 uv: 請參考 uv installation 依照指示安裝 uv,並且設定好
PATH
環境變數。 - 使用 uv 安裝 BabelDOC: 在終端機輸入以下指令:
uv tool install --python 3.12 BabelDOC
這個指令會安裝 BabelDOC,並且指定使用 Python 3.12 版本。
- 安裝 uv: 請參考 uv installation 依照指示安裝 uv,並且設定好
-
執行 BabelDOC
安裝完成後,就可以使用
babeldoc
指令來翻譯 PDF 文件了。- 基本用法:
babeldoc --bing --files example.pdf
這個指令會使用 Bing 翻譯引擎來翻譯
example.pdf
這個檔案。 -
翻譯多個檔案:
babeldoc --bing --files example1.pdf --files example2.pdf
這個指令會同時翻譯
example1.pdf
和example2.pdf
這兩個檔案。
- 基本用法:
-
從原始碼安裝(進階):
如果你想要修改 BabelDOC 的程式碼,或者使用最新的開發版本,可以從原始碼安裝。
- Clone 程式碼:
git clone https://github.com/funstory-ai/BabelDOC
- 進入專案目錄:
cd BabelDOC
- 使用 uv 執行 BabelDOC:
uv run babeldoc --help
這個指令會顯示 BabelDOC 的說明文件。
- Clone 程式碼:
BabelDOC 的進階選項
BabelDOC 提供了許多進階選項,讓你更精確地控制翻譯的過程。以下是一些常用的選項:
- 語言設定:
--lang-in
,-li
: 指定來源語言的代碼(預設為英文en
)。--lang-out
,-lo
: 指定目標語言的代碼(預設為中文zh
)。
例如,如果你要將一份法文論文翻譯成繁體中文,可以使用以下指令:
babeldoc --lang-in fr --lang-out zh-TW --files example.pdf
- PDF 處理選項:
--files
: 指定要翻譯的 PDF 文件路徑。可以同時指定多個檔案。--pages
,-p
: 指定要翻譯的頁面範圍。例如,1,2,1-,-3,3-5
表示翻譯第 1 頁、第 2 頁、第 1 頁到第 3 頁、第 3 頁到第 5 頁。如果沒有指定,則翻譯所有頁面。--split-short-lines
: 強制將短行分割成不同的段落。這個選項可能會影響排版,但有時候可以改善翻譯品質。--skip-clean
: 跳過 PDF 清理步驟。這個步驟會移除一些不必要的元素,但有時候會導致翻譯錯誤。--dual-translate-first
: 在雙語 PDF 模式中,將翻譯後的頁面放在前面。預設是原文頁面在前面。--enhance-compatibility
: 啟用所有相容性增強選項。這個選項相當於同時使用--skip-clean
、--dual-translate-first
和--disable-rich-text-translate
。--max-pages-per-part
: 將大型文件分割成多個部分進行翻譯。這個選項可以避免因為文件過大而導致的錯誤。--skip-scanned-detection
: 跳過掃描文件檢測。如果你確定你的文件不是掃描的,可以使用這個選項來加速處理。
- 翻譯服務選項:
--qps
: 限制翻譯服務的每秒查詢次數 (Queries Per Second)。預設值為 4。--ignore-cache
: 忽略翻譯快取,強制重新翻譯。--no-dual
: 不要輸出雙語 PDF 文件。--no-mono
: 不要輸出單語 PDF 文件。--min-text-length
: 設定要翻譯的最小文字長度。預設值為 5。--openai
: 使用 OpenAI 來進行翻譯。
- OpenAI 相關選項:
--openai-model
: 指定要使用的 OpenAI 模型。預設值為gpt-4o-mini
。--openai-base-url
: 指定 OpenAI API 的 Base URL。--openai-api-key
: 指定 OpenAI 服務的 API 金鑰。
- 輸出控制:
--output
,-o
: 指定翻譯後的檔案輸出目錄。如果沒有指定,則使用目前的工作目錄。--debug
,-d
: 啟用除錯模式。這個模式會輸出詳細的除錯訊息,並且將中間結果儲存在~/.cache/yadt/working
目錄中。--report-interval
: 設定進度報告的間隔時間(秒)。預設值為 0.1。
- 離線資源管理:
--generate-offline-assets
: 產生一個離線資源包,包含所有需要的模型和字型。--restore-offline-assets
: 從一個離線資源包還原資源。
這些選項對於需要在沒有網路連線的環境中使用 BabelDOC 的使用者非常有用。
-
設定檔:
--config
,-c
: 指定設定檔的路徑。設定檔使用 TOML 格式。
使用設定檔可以更方便地管理 BabelDOC 的選項。
實作心得與錯誤排除
在使用 BabelDOC 的過程中,可能會遇到一些問題。以下是一些常見的問題和解決方案:
- 翻譯品質不佳:
- 嘗試使用不同的翻譯引擎。BabelDOC 支援多種翻譯引擎,例如 Bing、Google 和 OpenAI。你可以根據你的需求選擇最適合的引擎。
- 調整翻譯選項。例如,可以嘗試啟用
--split-short-lines
選項,或者調整--min-text-length
選項。 - 檢查原文是否有錯誤。如果原文有錯誤,翻譯結果也會受到影響。
- 排版錯誤:
- 嘗試調整 PDF 處理選項。例如,可以嘗試啟用
--skip-clean
選項,或者調整--short-line-split-factor
選項。 - 檢查 PDF 文件的結構。有些 PDF 文件的結構比較複雜,可能會導致排版錯誤。
- 嘗試調整 PDF 處理選項。例如,可以嘗試啟用
- 記憶體不足:
- 將大型文件分割成多個部分進行翻譯。可以使用
--max-pages-per-part
選項來實現。 - 增加記憶體。
- 將大型文件分割成多個部分進行翻譯。可以使用
- 相容性問題:
- 嘗試啟用
--enhance-compatibility
選項。 - 更新 BabelDOC 的版本。
- 嘗試啟用
BabelDOC 的 Python API
除了命令列介面之外,BabelDOC 還提供了 Python API,讓你可以在自己的程式中使用 BabelDOC 的功能。
貢獻與回饋
BabelDOC 是一個開源專案,歡迎大家一起來貢獻。你可以透過以下方式參與:
- 提交 Issue: 如果你發現了 Bug 或者有任何建議,可以在 GitHub 上提交 Issue。
- 提交 Pull Request: 如果你會寫程式,可以提交 Pull Request 來修復 Bug 或者新增功能。
- 參與討論: 你可以在 GitHub 上的討論區參與討論,分享你的想法和經驗。
總結
BabelDOC 是一個非常實用的 PDF 論文翻譯工具,它不僅可以快速翻譯 PDF 文件,還能生成雙語對照的版本,讓你輕鬆掌握論文精華。如果你是學術研究者或者需要閱讀大量外文文獻,BabelDOC 絕對是你不可或缺的好幫手!現在就趕快下載 BabelDOC,開始你的論文翻譯之旅吧!
相關連結
- BabelDOC GitHub 專案: https://github.com/funstory-ai/BabelDOC
- Immersive Translate – BabelDOC (線上服務): https://app.immersivetranslate.com/babel-doc/
- PDFMathTranslate: https://github.com/Byaidu/PDFMathTranslate
- uv installation: https://github.com/astral-sh/uv#installation
參考閱讀
https://github.com/funstory-ai/BabelDOC