PDF 看起来像一页排好版的文档内部却不一定保存着连续的段落。很多 PDF 只记录“在某个坐标画一个字符”阅读顺序、段落关系和表格结构需要重新推断。翻译后的文字长度又会改变原来的文本框未必放得下。本文从 PDF 的文本对象、坐标、字体和版面回填解释格式错乱的原因。PDF 不是 Word 文档Word、HTML 等格式通常包含标题、段落、列表和表格等语义结构。PDF 的首要目标是让页面在不同设备上保持相同外观因此更接近一组绘制指令。一页 PDF 可能记录使用字体 F1 把字号设为 10 移动到坐标 (72, 680) 绘制字符串 System Requirements人眼看到的是一行标题程序拿到的可能只是一组带坐标的字符。有些生成器按单词保存有些按字符保存还有些会把显示顺序打乱只要最终画面正确即可。这意味着“提取全部文本再逐段翻译”并不够。程序还要回答哪几个文本对象属于同一行哪几行组成一个段落双栏页面应该先读左边还是右边图注和正文是什么关系阅读顺序是推断出来的双栏论文是典型例子。简单的提取器可能按纵坐标排序得到左栏第 1 行 右栏第 1 行 左栏第 2 行 右栏第 2 行正确阅读顺序却应该先读完整个左栏再读右栏。页面中如果还有页眉、脚注、侧边栏和浮动图片排序会更难。常见的版面分析会结合文字坐标、间距、对齐方式、字体大小和分隔线把页面划分为区域再推断区域之间的阅读关系。表格还需要识别行列而不能把每个单元格当成普通段落。翻译后文字长度会变化即便提取顺序完全正确回填仍可能失败。不同语言表达同一含义所需的字符数不同。英文按钮翻译成德语后可能明显变长英文句子翻译成中文后字符数可能减少但字体的实际宽度不一定按字符数同比变化。原文文本框只有固定宽度和高度。译文超出时系统通常只能选择缩小字号增加行数扩大文本框调整相邻元素截断或溢出重建整页布局。每种选择都有代价。字号缩得太小会破坏可读性扩大文本框可能压住图片整页重排又会失去原文页码和图文位置。所谓“保留格式”实际更像是在可读性、位置对应和页面稳定之间取舍。字体问题不只是“换个字体”PDF 可以嵌入完整字体也可以只嵌入实际使用到的字符子集。原文只包含拉丁字母时内嵌字体很可能没有中文字形。翻译后继续使用该字体会出现方框、空白或乱码。替换字体后字宽、行高和基线都会改变。同样是 10 pt不同字体占用的实际空间并不相同。粗体、斜体和数学字体还需要分别处理。复杂脚本更难。例如阿拉伯文涉及从右到左的排版和字形连接印地语等文字需要正确的字形塑形。仅把 Unicode 字符逐个画到页面上视觉结果可能是错的。字符映射也是问题。有些 PDF 能正确显示却没有可靠的 Unicode 映射。复制文字时出现乱码通常意味着提取器无法从字形编码恢复原字符。表格、公式和代码块为什么容易坏表格在 PDF 中可能只有若干文字坐标和线条未必存在“表格”对象。翻译后单元格文字变长列宽不变就会换行或覆盖相邻列。合并单元格、无边框表格和跨页表格更难恢复。数学公式不应当按普通文本翻译。变量名、上下标、希腊字母和运算符的位置关系承载含义。公式区域通常应识别后保留周围说明文字再翻译。代码块同样需要保护。关键字、函数名、命令参数和路径不应被自然语言模型随意改写。代码注释可以翻译但要保持缩进、换行和注释符号。扫描版 PDF 是另一类问题如果页面只是图片根本没有可提取的文本层。流程需要先做 OCR从像素中识别字符及位置再进入版面分析和翻译。OCR 会带来新的误差0和O、1和l混淆低分辨率小字丢失倾斜扫描造成行识别错误。此时版式错乱可能不是回填造成的而是最开始的识别结果就不完整。可以先尝试选中文字或搜索页面内容。完全无法选择不代表一定是扫描件但它是一个值得进一步检查的信号。如何评价“保留格式”不要只看第一页是否漂亮。技术文档更应该检查标题层级和阅读顺序表格的行列对应图片与图注是否匹配页眉、页脚和脚注是否干扰正文公式、代码和变量是否被误改字体是否覆盖目标语言长段落是否溢出或被缩得过小。在线整份翻译工具通常会尝试保留页面结构。例如 PDFTranslator 对外提供保留表格、图片和页面布局的 PDF 翻译结果但实际效果仍取决于源文件质量和版式复杂度。重要文档需要逐页抽查。PDF 翻译的难点不只是语言转换而是先从绘制指令中恢复文档结构再把长度不同的译文放回有限空间。文本对象、阅读顺序、字体覆盖、表格和扫描质量都会影响结果。评价工具时应使用与真实业务相近的复杂页面而不是只测试纯文字文件。