← 全部文章

从 PDF 复制出来的文字,为什么全是断行

从 PDF 里复制一段文字粘进 Word,结果每一行末尾都被切了一刀,通篇断句七零八落。你以为这三条断裂是三种坏脾气,其实它们各有来路,要分开治。

PDF 没有”段落”

先说根因:PDF 里几乎不存在段落这个结构

PDF 的本质是一份排版指令。它记录的不是”这里是一个段落”,而是”把这个字放在坐标 (x, y)“。换行是为了让字塞进页面宽度而做的排版决定,跟文本本身的语义毫无关系——但在被复制出来的时候,它伪装成了一个换行符 \n

所以我们看到的每一处断裂,本质问题都是同一个:这个换行是作者的意思,还是排版软件的决定?

三种换行,要分开处理

看起来一样的断裂,处理手法完全不同:

① 硬性换行(该合并) 行尾标点不完整、上一行明显未结束。这是最常见的一类,直接把换行替换成空格(英文)或空字符(中文)即可。

② 段落换行(必须保留) 两句之间原本就隔着空行。这是作者真正的分段意图,绝对不能合并——把两个段落粘成一段,比留着断行更难收拾。

③ 行尾连字符(看情况) 英文排版在行尾用连字符拆词(com- / pressed)。这时候要去掉连字符并把两半接回去,但前提是确认它确实是”被拆的词”,而不是本来就带连字符的词(e-mailstate-of-the-art)。

判断的关键是看几个信号:换行前后是不是都为小写、去掉连字符后能不能拼成一个真实存在的词、以及它是不是恰好落在行尾。规则再密,这一条也建议留个复核口子。

中英文差异:最容易被忽略的那个坑

这一段是我认为最值得单独讲的。

英文的处理相对安全,因为英文用空格分词。判断”两个词是要连起来读,还是本来就该分开”,可以靠空格这个天然分隔符辅助。

中文没有这样的东西。

看这段被错误处理的中文:

我们把图片压缩到指定体积这件事 做的心态其实很简单

两句之间只有一个换行。如果无脑删掉所有换行,会变成:

我们把图片压缩到指定体积这件事做的心态其实很简单

**两个句子被粘成了一坨。**反过来如果无脑保留所有换行,就是原样的一地碎片。

所以中文的处理必须换一套判据——按相邻位置的标点来判断:

  • 换行符前是逗号、顿号、或没有标点,且下一行开头不是新段落标记 → 合并
  • 换行符前是句号、问号、叹号、或引号收尾 → 大概率是句子边界,倾向保留或合并后按句读处理
  • 空行(连续两个换行)→ 一定是段落,保留

这也是为什么 WordCheckly 的”修 PDF 换行”在中文上有单独的行为,而不是一套规则两头用。

什么时候还得自己过一遍

自动规则能处理掉绝大多数情况,但有三类建议人工扫一眼:

  1. 带代码的 technical 文档——缩进和换行是有意义的,任何合并都是破坏
  2. 诗歌、引用块、歌词——作者故意换行
  3. 表格和脚注混排——复制出来的顺序未必是阅读顺序

工具负责把 90% 的体力活干掉,剩下 10% 的判断留给眼睛。这比”假装全自动”诚实得多。

看看这些产品 →