書譯
書譯

如何翻譯多欄 PDF 而不打亂閱讀順序

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

BookTranslator

BookTranslator Team

19 min read

快速解答:翻譯前先檢查閱讀順序

雙欄 PDF 可能看起來整齊,但提供給翻譯工具的段落順序卻是錯的。發生這種情況時,翻譯可能逐句流暢,但整頁卻變得毫無意義。沒有工具能從它以錯誤順序讀取的來源中翻譯出正確結果。

因此,工作順序是:

  1. 檢查頁面的閱讀方式。 複製一個具代表性的頁面,確認每個段落都按照人們閱讀的順序輸出。
  2. 根據檢查結果選擇工作流程。 當順序正確時,使用保留版面的 PDF 翻譯;當文字無法使用時,使用 OCR 模式;當你需要可編輯的檔案時,使用轉換並修復的路徑。
  3. 檢查翻譯後的欄位。 查看欄位分隔、圖表標題、全寬註釋、腳註以及過長的行。

本指南的其餘部分將透過一個你可以下載並自行執行的小測試,說明為什麼步驟 1 不能跳過。它涵蓋具有真實文字層的 PDF,例如匯出的報告、論文和新聞通訊。如果你的頁面是掃描件,請先參閱如何翻譯掃描的 PDF。

我們測試了什麼

在 2026-10-20,我們從同一段文字建立了三個單頁 PDF:一個標題、左欄頂部的一個圖表框、每欄三個段落、一個跨越兩欄的粗體註釋,以及一個腳註。每個段落都以 P1 到 P8 的標記開頭,因此正確的閱讀順序是 P1 到 P8。

雙欄測試頁面,左欄頂部有一個圖表框,下方是段落 P1 到 P3,右欄是 P4 到 P6,以及一個全寬註釋 P7

這三個檔案在螢幕上看不出來的差異在於:

  • 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 P8P4 P1 P5 P6 P2 P3 P7 P8P1–P8 正確
pdftotext -rawP1–P8 正確P1 P4 P5 P2 P6 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
pdftotext -layoutP4 P5 P6 P1 P2 P3 P7 P8P4 P5 P6 P1 P2 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
pypdf 5.1.0 extract_text()P1–P8 正確P1 P4 P5 P2 P6 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
pdfminer.six 20240706P4 P5 P6 P1 P2 P3 P7 P8P4 P5 P6 P1 P2 P3 P7 P8P1–P8 正確
PyMuPDF 1.24.14 get_text()P1–P8 正確P1 P4 P5 P2 P6 P3 P7 P8P1 P4 P5 P2 P6 P3 P7 P8
PyMuPDF 1.24.14 get_text(sort=True)P4 P5 P6 P1 P2 P3 P7 P8P4 P5 P6 P1 P2 P3 P7 P8P1 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

我們測試檔案中的標記並不存在於你的文件中,但同樣的檢查方式可以用你自己挑選的幾個句子來進行。

  1. 挑選最難的頁面,而不是第一頁。 選擇一個雙欄頁面,其中一欄頂端附近有圖表、表格或方框註記,並且頁面中段有全寬標題或註記。
  2. 按照閱讀順序寫下五個錨點短語:左欄的開頭文字、左欄的結尾文字、右欄的開頭文字、全寬元素,以及圖說文字。
  3. 從你的 PDF 檢視器複製整個頁面,並貼到純文字編輯器中。如果你使用的工具提供來源預覽,請改用該預覽,因為它會顯示工具實際收到的順序。
  4. 在貼上的文字中尋找這些錨點。 它們應該按照你寫下的順序出現,而且任何一行都不應該同時包含兩欄的文字。
  5. 對另一種不同的頁面類型重複此步驟,例如參考文獻頁、有側邊欄的頁面,或章節的第一頁。

請這樣解讀結果:

貼上的文字顯示的內容通常代表的意義下一步
錨點按順序出現,沒有混合的行文字和閱讀順序皆可使用保留版面配置的 PDF 翻譯
右欄先於左欄開始頁面正依垂直位置讀取在付費翻譯整份檔案前,先以此頁面測試翻譯工具
行內混雜了兩欄的文字頁面正被水平直線讀取不要複製貼上;改用檔案式工作流程並測試此頁
段落在各欄之間跳躍儲存順序為逐列或已錯亂測試檔案式工作流程;若失敗,先修復或轉換
無法貼上,或字元有誤純圖片頁面或文字層損壞使用 OCR;參見 PDF 文字擷取與 OCR 的比較

複製貼上只是快速檢查,不能證明其他工具會如何處理。我們的表格顯示,兩個工具可能以不同方式讀取同一個檔案。檢視器的結果告訴你這個檔案的風險有多高。工具本身的預覽,或單頁測試翻譯,則能告訴你該工具實際讀取到的內容。

如果貼上的文字字母正確,但間距或換行錯亂,請先修正複製貼上的文字問題,再判斷欄位順序。

步驟 2:根據所見選擇工作流程

根據檢查結果選擇工作流程,而不是根據工具聲稱能保留版面配置。

順序正確且文字可選取。 以檔案方式翻譯 PDF,而非貼上片段。保留版面配置的工作流程會將譯文放回頁面,讓欄位、圖表和頁眉保持在讀者預期的位置。在 BookTranslator 中,這就是標準的 PDF 翻譯 路徑。任何保留版面配置的承諾(包括我們的),都應視為需要在步驟 1 找到的最棘手頁面上驗證的事項,而非保證。

順序僅在圖表或方框元素附近出錯。 在翻譯整份文件前,先用你選擇的工具處理一個問題頁面。如果該頁面輸出順序正確,表示該工具並未採用與你複製檢查時相同的策略。如果輸出順序錯亂,請改變工作流程,而不是期望檔案其餘部分會有不同表現。

頁面為掃描檔,或文字層無法使用。 請使用 OCR。BookTranslator 的 OCR 模式 會讀取頁面影像,並重建乾淨的翻譯 PDF。該頁面建議將此模式用於教科書、學術論文、表格和圖片密集的頁面,因為在這些情況下,保留內容比保留確切版面更重要。我們並未在本指南的測試樣本上測試此模式。取捨很明確:OCR 模式不會嘗試保留原始版面、字型或字級。特別是掃描檔,請參閱如何翻譯掃描版 PDF。

你無論如何都需要可編輯的文件。 將 PDF 轉換為 Word,在該處修正閱讀順序,然後翻譯 DOCX。這最費力,但這是唯一能在翻譯前直接修正段落順序的途徑。它也會改變版面配置,因此當輸出需要進一步編輯時使用,而非必須看起來與原始頁面相同時。

避免將欄位貼到聊天機器人或文字方塊中。 你必須在每一頁手動重建順序、圖說和註腳。我們的表格顯示,在開始之前順序有多容易出錯。

對於學術論文,同樣的問題會與方程式、引用和參考文獻結合,請遵循研究論文翻譯工作流程。關於適用於所有 PDF 類型的一般保留版面配置流程,請參閱如何在保留格式的同時翻譯 PDF。

步驟 3:檢查翻譯後的欄位

多欄翻譯的失敗點,往往在快速瀏覽時容易被忽略。請在步驟 1 測試過的每種頁面類型上,檢查以下五個地方:

  1. 欄位分隔處。 閱讀左欄的最後一句和右欄的第一句。論述應該延續,而不是跳到不同的段落。
  2. 圖說與圖表。 每個圖說仍應位於其所屬圖表下方、經過翻譯,且不應偏移到正文之中。
  3. 全寬元素。 橫跨兩欄的標題、註記和引言應仍然橫跨兩欄,且不應被拆成兩個半句。
  4. 註腳與頁眉。 正文中的註腳標記應與頁面底部的註記相符,頁眉不應出現在段落中間。
  5. 窄欄中的溢出。 譯文通常比原文更長。W3C 關於翻譯中的文字大小的指引引用了 IBM 的數據:超過 70 個字元的英文原文翻譯成歐洲語言時,長度約增加 130%,較短字串的增幅更大。窄欄幾乎沒有空間容納這些多出的文字,因此要留意被裁切的行、縮小的字體,或與圖表重疊的文字。標題和表格儲存格最容易溢出。

審閱時,雙語檔案很有幫助,但其版面配置很重要。將原文和譯文放在同一頁,會把兩種語言擠進原本就很窄的欄位。在 BookTranslator 的標準 PDF 翻譯中(關閉 OCR 模式),雙語 PDF 提供兩種版面配置:同一頁和分開頁面。對於多欄文件,請選擇分開頁面:每個原文頁面後面跟著其譯文頁面,因此每一欄都保持原始寬度。您仍然可以另外下載純譯文版本。我們的 PDF 翻譯品質檢查清單涵蓋其餘的檔案層級檢查。

如果譯文 PDF 還需要與螢幕閱讀器搭配使用,僅有視覺順序是不夠的。標記閱讀順序需要另行檢查。W3C 指出,標記 PDF 的閱讀順序「主要由文件元素的標籤順序決定」(W3C PDF3)。我們的譯文 PDF 無障礙性指南說明了如何測試。

本指南未主張的事項

  • 這不是工具排名。 這七款擷取工具之所以入選,是因為它們常見且易於重新執行。每一款都至少在三份檔案中的一份上失敗,而不同的測試檔案可能會改變哪些工具會失敗。
  • 這沒有測試翻譯產品。 我們沒有在這些檔案上執行 BookTranslator、DeepL、Google Translate 或任何其他翻譯工具。上述產品描述來自 BookTranslator 目前的產品文案,而非來自本次測試。
  • 一頁不等於一份文件。 真實檔案混合了不同的頁面設計,因此請至少檢查兩種頁面類型。
  • 標記 PDF 的表現可能不同。 我們的測試檔案未經標記。經過適當標記的 PDF 帶有明確的閱讀順序,部分工具會加以利用。

實用原則依然成立:在翻譯之前,先了解您的 PDF 如何閱讀。如果順序正確,就翻譯檔案並檢查欄位。如果順序錯誤,請改變工作流程,而不是翻譯設定。

相關文章