如何翻译多栏 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 是如何阅读的。如果顺序正确,就翻译文件并检查各栏。如果顺序错误,就改变工作流程,而不是翻译设置。





