书译
书译

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

相关文章