从 PDF 复制出来的文字,为什么全是断行
从 PDF 里复制一段文字粘进 Word,结果每一行末尾都被切了一刀,通篇断句七零八落。你以为这三条断裂是三种坏脾气,其实它们各有来路,要分开治。
PDF 没有”段落”
先说根因:PDF 里几乎不存在段落这个结构。
PDF 的本质是一份排版指令。它记录的不是”这里是一个段落”,而是”把这个字放在坐标 (x, y)“。换行是为了让字塞进页面宽度而做的排版决定,跟文本本身的语义毫无关系——但在被复制出来的时候,它伪装成了一个换行符 \n。
所以我们看到的每一处断裂,本质问题都是同一个:这个换行是作者的意思,还是排版软件的决定?
三种换行,要分开处理
看起来一样的断裂,处理手法完全不同:
① 硬性换行(该合并) 行尾标点不完整、上一行明显未结束。这是最常见的一类,直接把换行替换成空格(英文)或空字符(中文)即可。
② 段落换行(必须保留) 两句之间原本就隔着空行。这是作者真正的分段意图,绝对不能合并——把两个段落粘成一段,比留着断行更难收拾。
③ 行尾连字符(看情况)
英文排版在行尾用连字符拆词(com- / pressed)。这时候要去掉连字符并把两半接回去,但前提是确认它确实是”被拆的词”,而不是本来就带连字符的词(e-mail、state-of-the-art)。
判断的关键是看几个信号:换行前后是不是都为小写、去掉连字符后能不能拼成一个真实存在的词、以及它是不是恰好落在行尾。规则再密,这一条也建议留个复核口子。
中英文差异:最容易被忽略的那个坑
这一段是我认为最值得单独讲的。
英文的处理相对安全,因为英文用空格分词。判断”两个词是要连起来读,还是本来就该分开”,可以靠空格这个天然分隔符辅助。
中文没有这样的东西。
看这段被错误处理的中文:
我们把图片压缩到指定体积这件事 做的心态其实很简单
两句之间只有一个换行。如果无脑删掉所有换行,会变成:
我们把图片压缩到指定体积这件事做的心态其实很简单
**两个句子被粘成了一坨。**反过来如果无脑保留所有换行,就是原样的一地碎片。
所以中文的处理必须换一套判据——按相邻位置的标点来判断:
- 换行符前是逗号、顿号、或没有标点,且下一行开头不是新段落标记 → 合并
- 换行符前是句号、问号、叹号、或引号收尾 → 大概率是句子边界,倾向保留或合并后按句读处理
- 空行(连续两个换行)→ 一定是段落,保留
这也是为什么 WordCheckly 的”修 PDF 换行”在中文上有单独的行为,而不是一套规则两头用。
什么时候还得自己过一遍
自动规则能处理掉绝大多数情况,但有三类建议人工扫一眼:
- 带代码的 technical 文档——缩进和换行是有意义的,任何合并都是破坏
- 诗歌、引用块、歌词——作者故意换行
- 表格和脚注混排——复制出来的顺序未必是阅读顺序
工具负责把 90% 的体力活干掉,剩下 10% 的判断留给眼睛。这比”假装全自动”诚实得多。