如何翻譯多欄 PDF 而不打亂閱讀順序
在翻譯雙欄 PDF 之前,先檢查其閱讀順序,並根據檢查結果選擇版面保留、OCR 或重建工作流程,然後審查翻譯後的欄位、圖說和溢出內容。

快速解答:翻譯前先檢查閱讀順序
雙欄 PDF 可能看起來整齊,但提供給翻譯工具的段落順序卻是錯的。發生這種情況時,翻譯可能逐句流暢,但整頁卻變得毫無意義。沒有工具能從它以錯誤順序讀取的來源中翻譯出正確結果。
因此,工作順序是:
- 檢查頁面的閱讀方式。 複製一個具代表性的頁面,確認每個段落都按照人們閱讀的順序輸出。
- 根據檢查結果選擇工作流程。 當順序正確時,使用保留版面的 PDF 翻譯;當文字無法使用時,使用 OCR 模式;當你需要可編輯的檔案時,使用轉換並修復的路徑。
- 檢查翻譯後的欄位。 查看欄位分隔、圖表標題、全寬註釋、腳註以及過長的行。
本指南的其餘部分將透過一個你可以下載並自行執行的小測試,說明為什麼步驟 1 不能跳過。它涵蓋具有真實文字層的 PDF,例如匯出的報告、論文和新聞通訊。如果你的頁面是掃描件,請先參閱如何翻譯掃描的 PDF。
我們測試了什麼
在 2026-10-20,我們從同一段文字建立了三個單頁 PDF:一個標題、左欄頂部的一個圖表框、每欄三個段落、一個跨越兩欄的粗體註釋,以及一個腳註。每個段落都以 P1 到 P8 的標記開頭,因此正確的閱讀順序是 P1 到 P8。

這三個檔案在螢幕上看不出來的差異在於:
two-column-stream-logical.pdf先儲存左欄文字,再儲存右欄文字。two-column-stream-rowwise.pdf看起來相同,但逐行儲存文字,在兩欄之間交替。two-column-no-figure-rowwise.pdf逐行儲存文字,且沒有圖表框。它是對照檔案。
然後我們用七種常見的開源方法擷取文字,並記錄每種方法傳回的段落順序:
| 擷取工具 | 邏輯儲存,有圖表 | 逐行儲存,有圖表 | 逐行儲存,無圖表 |
|---|---|---|---|
| pdftotext 26.08.0(預設) | P4 P1 P5 P6 P2 P3 P7 P8 | P4 P1 P5 P6 P2 P3 P7 P8 | P1–P8 正確 |
pdftotext -raw | P1–P8 正確 | P1 P4 P5 P2 P6 P3 P7 P8 | P1 P4 P5 P2 P6 P3 P7 P8 |
pdftotext -layout | P4 P5 P6 P1 P2 P3 P7 P8 | P4 P5 P6 P1 P2 P3 P7 P8 | P1 P4 P5 P2 P6 P3 P7 P8 |
pypdf 5.1.0 extract_text() | P1–P8 正確 | P1 P4 P5 P2 P6 P3 P7 P8 | P1 P4 P5 P2 P6 P3 P7 P8 |
| pdfminer.six 20240706 | P4 P5 P6 P1 P2 P3 P7 P8 | P4 P5 P6 P1 P2 P3 P7 P8 | P1–P8 正確 |
PyMuPDF 1.24.14 get_text() | P1–P8 正確 | P1 P4 P5 P2 P6 P3 P7 P8 | P1 P4 P5 P2 P6 P3 P7 P8 |
PyMuPDF 1.24.14 get_text(sort=True) | P4 P5 P6 P1 P2 P3 P7 P8 | P4 P5 P6 P1 P2 P3 P7 P8 | P1 P4 P5 P2 P6 P3 P7 P8 |
這七種方法沒有一種能正確處理全部三個檔案。每一種正確處理一個檔案的方法,都會弄錯另一個檔案。在對照檔案中,pdftotext -raw、pdftotext -layout 以及設定 sort=True 的 PyMuPDF 也都印出了三行,每行都混合了兩欄的文字,這正是讀者看到複製文字跨越欄間空白時的情況。設定 sort=True 的 PyMuPDF 在另外兩個檔案中也各產生了一行這樣的內容。
這個測試刻意設計得很小:一個用 ReportLab 建立、未加標籤的合成英文頁面。它並不是要為這些函式庫排名,也沒有測試任何翻譯產品,包括 BookTranslator。它揭示的範圍更窄但也更有用:看起來相同的頁面可能產生不同的來源順序,因此唯一可靠的檢查方式就是使用你自己的檔案。
你可以用測試樣本產生器、三個 PDF(邏輯順序、逐列順序、無圖表逐列順序)、順序檢查器、呼叫全部七種方法的擷取器執行器,以及結果 CSV 來重現這個測試。
為什麼同一頁面會有不同的閱讀順序
擷取器採用兩種策略之一,而每一種都會在另一個檔案上失敗。
策略一:遵循檔案中儲存的順序。 PDF 會按照建立者寫入的順序繪製文字。poppler 手冊將 pdftotext -raw 描述為保留「內容串流順序中的文字」(且已不再建議使用該模式),而 PyMuPDF 的文件則說其預設輸出是「依照文件中的編碼方式」呈現的純文字(poppler pdftotext 手冊、PyMuPDF 文字操作指南)。當檔案以閱讀順序儲存文字時,這種方法有效。但當儲存的順序是逐列排列時,就像我們的第二個檔案那樣,即使頁面看起來相同,這種方法也會失敗。
策略二:根據文字在頁面上的位置重建順序。 pdftotext 的預設模式會嘗試以「閱讀順序」輸出文字,pdfminer.six 會將鄰近的行分組為區塊,並讓你在排序時權衡「水平與垂直位置」,而 PyMuPDF 的 sort=True 則會「從左上到右下」排序(pdfminer.six LAParams)。這些方法忽略儲存的順序,因此邏輯順序檔案和逐列順序檔案會得到相同的結果。
對照檔案解釋了失敗的原因。沒有圖表時,pdftotext 的預設模式和 pdfminer.six 都能正確讀取 P1 到 P8。在左欄頂端加入一個圖表方塊後,右欄的第一段(P4)就成為頁面上位置最高的文字。權衡垂直位置的方法會從那裡開始讀取頁面。
這是一種常見的頁面設計,而非邊緣案例:論文會在左欄開頭放圖表或摘要方塊,雜誌會在圖片下方開始一欄,手冊會在第一步驟上方放警告方塊。全寬註記(P7)和腳註(P8)在每次執行中都保持在原位,因此只檢查頁面底部的做法會漏掉這個問題。
步驟一:五分鐘內檢查你自己的 PDF
我們測試檔案中的標記並不存在於你的文件中,但同樣的檢查方式可以用你自己挑選的幾個句子來進行。
- 挑選最難的頁面,而不是第一頁。 選擇一個雙欄頁面,其中一欄頂端附近有圖表、表格或方框註記,並且頁面中段有全寬標題或註記。
- 按照閱讀順序寫下五個錨點短語:左欄的開頭文字、左欄的結尾文字、右欄的開頭文字、全寬元素,以及圖說文字。
- 從你的 PDF 檢視器複製整個頁面,並貼到純文字編輯器中。如果你使用的工具提供來源預覽,請改用該預覽,因為它會顯示工具實際收到的順序。
- 在貼上的文字中尋找這些錨點。 它們應該按照你寫下的順序出現,而且任何一行都不應該同時包含兩欄的文字。
- 對另一種不同的頁面類型重複此步驟,例如參考文獻頁、有側邊欄的頁面,或章節的第一頁。
請這樣解讀結果:
| 貼上的文字顯示的內容 | 通常代表的意義 | 下一步 |
|---|---|---|
| 錨點按順序出現,沒有混合的行 | 文字和閱讀順序皆可使用 | 保留版面配置的 PDF 翻譯 |
| 右欄先於左欄開始 | 頁面正依垂直位置讀取 | 在付費翻譯整份檔案前,先以此頁面測試翻譯工具 |
| 行內混雜了兩欄的文字 | 頁面正被水平直線讀取 | 不要複製貼上;改用檔案式工作流程並測試此頁 |
| 段落在各欄之間跳躍 | 儲存順序為逐列或已錯亂 | 測試檔案式工作流程;若失敗,先修復或轉換 |
| 無法貼上,或字元有誤 | 純圖片頁面或文字層損壞 | 使用 OCR;參見 PDF 文字擷取與 OCR 的比較 |
複製貼上只是快速檢查,不能證明其他工具會如何處理。我們的表格顯示,兩個工具可能以不同方式讀取同一個檔案。檢視器的結果告訴你這個檔案的風險有多高。工具本身的預覽,或單頁測試翻譯,則能告訴你該工具實際讀取到的內容。
如果貼上的文字字母正確,但間距或換行錯亂,請先修正複製貼上的文字問題,再判斷欄位順序。
步驟 2:根據所見選擇工作流程
根據檢查結果選擇工作流程,而不是根據工具聲稱能保留版面配置。
順序正確且文字可選取。 以檔案方式翻譯 PDF,而非貼上片段。保留版面配置的工作流程會將譯文放回頁面,讓欄位、圖表和頁眉保持在讀者預期的位置。在 BookTranslator 中,這就是標準的 PDF 翻譯 路徑。任何保留版面配置的承諾(包括我們的),都應視為需要在步驟 1 找到的最棘手頁面上驗證的事項,而非保證。
順序僅在圖表或方框元素附近出錯。 在翻譯整份文件前,先用你選擇的工具處理一個問題頁面。如果該頁面輸出順序正確,表示該工具並未採用與你複製檢查時相同的策略。如果輸出順序錯亂,請改變工作流程,而不是期望檔案其餘部分會有不同表現。
頁面為掃描檔,或文字層無法使用。 請使用 OCR。BookTranslator 的 OCR 模式 會讀取頁面影像,並重建乾淨的翻譯 PDF。該頁面建議將此模式用於教科書、學術論文、表格和圖片密集的頁面,因為在這些情況下,保留內容比保留確切版面更重要。我們並未在本指南的測試樣本上測試此模式。取捨很明確:OCR 模式不會嘗試保留原始版面、字型或字級。特別是掃描檔,請參閱如何翻譯掃描版 PDF。
你無論如何都需要可編輯的文件。 將 PDF 轉換為 Word,在該處修正閱讀順序,然後翻譯 DOCX。這最費力,但這是唯一能在翻譯前直接修正段落順序的途徑。它也會改變版面配置,因此當輸出需要進一步編輯時使用,而非必須看起來與原始頁面相同時。
避免將欄位貼到聊天機器人或文字方塊中。 你必須在每一頁手動重建順序、圖說和註腳。我們的表格顯示,在開始之前順序有多容易出錯。
對於學術論文,同樣的問題會與方程式、引用和參考文獻結合,請遵循研究論文翻譯工作流程。關於適用於所有 PDF 類型的一般保留版面配置流程,請參閱如何在保留格式的同時翻譯 PDF。
步驟 3:檢查翻譯後的欄位
多欄翻譯的失敗點,往往在快速瀏覽時容易被忽略。請在步驟 1 測試過的每種頁面類型上,檢查以下五個地方:
- 欄位分隔處。 閱讀左欄的最後一句和右欄的第一句。論述應該延續,而不是跳到不同的段落。
- 圖說與圖表。 每個圖說仍應位於其所屬圖表下方、經過翻譯,且不應偏移到正文之中。
- 全寬元素。 橫跨兩欄的標題、註記和引言應仍然橫跨兩欄,且不應被拆成兩個半句。
- 註腳與頁眉。 正文中的註腳標記應與頁面底部的註記相符,頁眉不應出現在段落中間。
- 窄欄中的溢出。 譯文通常比原文更長。W3C 關於翻譯中的文字大小的指引引用了 IBM 的數據:超過 70 個字元的英文原文翻譯成歐洲語言時,長度約增加 130%,較短字串的增幅更大。窄欄幾乎沒有空間容納這些多出的文字,因此要留意被裁切的行、縮小的字體,或與圖表重疊的文字。標題和表格儲存格最容易溢出。
審閱時,雙語檔案很有幫助,但其版面配置很重要。將原文和譯文放在同一頁,會把兩種語言擠進原本就很窄的欄位。在 BookTranslator 的標準 PDF 翻譯中(關閉 OCR 模式),雙語 PDF 提供兩種版面配置:同一頁和分開頁面。對於多欄文件,請選擇分開頁面:每個原文頁面後面跟著其譯文頁面,因此每一欄都保持原始寬度。您仍然可以另外下載純譯文版本。我們的 PDF 翻譯品質檢查清單涵蓋其餘的檔案層級檢查。
如果譯文 PDF 還需要與螢幕閱讀器搭配使用,僅有視覺順序是不夠的。標記閱讀順序需要另行檢查。W3C 指出,標記 PDF 的閱讀順序「主要由文件元素的標籤順序決定」(W3C PDF3)。我們的譯文 PDF 無障礙性指南說明了如何測試。
本指南未主張的事項
- 這不是工具排名。 這七款擷取工具之所以入選,是因為它們常見且易於重新執行。每一款都至少在三份檔案中的一份上失敗,而不同的測試檔案可能會改變哪些工具會失敗。
- 這沒有測試翻譯產品。 我們沒有在這些檔案上執行 BookTranslator、DeepL、Google Translate 或任何其他翻譯工具。上述產品描述來自 BookTranslator 目前的產品文案,而非來自本次測試。
- 一頁不等於一份文件。 真實檔案混合了不同的頁面設計,因此請至少檢查兩種頁面類型。
- 標記 PDF 的表現可能不同。 我們的測試檔案未經標記。經過適當標記的 PDF 帶有明確的閱讀順序,部分工具會加以利用。
實用原則依然成立:在翻譯之前,先了解您的 PDF 如何閱讀。如果順序正確,就翻譯檔案並檢查欄位。如果順序錯誤,請改變工作流程,而不是翻譯設定。





