从 PDF 复制出来的文字,为什么总是乱的?

你在一份 PDF 里找到一段有用的内容,想把它放进笔记,留给同事,或者作为接下来提问的材料。选中、复制、粘贴,看起来只需要几秒钟。
但粘贴之后,一句话被拆成了好几行,英文单词在中间断开,正文里还混进了页码。原本只想摘下一段话,现在却要先按很多次退格键。
如果文字顺序没错,只是每行都断开,可以先合并段内换行,保留段落之间的空行。 标题、列表和行末连字符需要分别检查;如果左右两栏的句子已经交错,就先处理复制顺序,而不是直接删除换行。
页面上的一行,不一定是文字里的一段
在 PDF 页面上,一句话写到右边缘就会换行。但这个换行可能只是因为纸张或栏宽不够,并不意味着作者准备另起一段。
复制时,阅读器需要把页面里的文字重新组织成文本,却不总能分清这两种换行。开源工具 pdfminer.six 的文字提取说明就介绍了如何根据字符的位置和距离,把它们组合成行与文本块。页面上看起来相连的内容,复制出来时仍可能被拆开。
下面用几个简单的例子,看看这些情况该怎么处理。
把句子接起来,也把段落留下
先看一种比较适合整理的情况:每段话被拆成两行,但段落之间还留着空行。
待整理文本:
We copied a paragraph
from the report into our notes.
The original page remains available
for checking names and numbers.可以把上面的文字放进 iSomor 文字格式整理,按这三步处理:
- 粘贴文字。 先选一小段放入“原始内容”,段落之间的空行也一起保留。
- 选择选项并整理。 勾选“合并单个换行”和“规范空格”,先不勾选“拼接行末断开的单词”,点击“整理文字”。
- 检查后带走结果。 对照两边的内容,确认段落和单词没有接错,再复制文字或下载 TXT。
工具输出:
We copied a paragraph from the report into our notes.
The original page remains available for checking names and numbers.句子中间的断行合并了,两段话之间的分隔还在。英文单词之间也留下了空格,没有让 paragraph 和 from 粘在一起。
这个例子里,段内是单个换行,段间是空行。如果复制后段落之间也只剩一个换行,可以先对照原文补上空行,再进行整理。
行末的连字符,不能一律删掉
英文文档里,一个单词可能因为排版在行末被拆开。例如:
The trans-
lation is ready for review.这里的 trans- 和下一行的 lation 原本是同一个单词。开启“拼接行末断开的单词”后,工具输出为:
The translation is ready for review.但相似的外观,不一定意味着相同的处理方式。再看一段原本使用 cross-validation 的文本:
We used cross-
validation to compare the models.同样开启断词拼接后,实际输出是:
We used crossvalidation to compare the models.换行消失了,但原本有意义的连字符也被删掉了。这里应保留 cross-validation。
所以,可以先保持断词拼接关闭,确认是排版拆开的单词后再使用。如果材料里还包含复合词或型号,先整理普通换行,再逐处检查连字符会更稳妥。
标题和列表,需要留一点空间
并不是每个单独占一行的内容,都应该和下一行接起来。
比如下面这段文字,第一行是标题,接下来是说明和一份清单:
准备材料
先保留原始 PDF。
- 核对姓名
- 核对日期
- 核对金额开启“合并单个换行”和“规范空格”后,工具实际输出为:
准备材料先保留原始 PDF。
- 核对姓名
- 核对日期
- 核对金额带 - 标记的列表保留了,但标题与正文合并了。“准备材料”变成纯文本后,没有字号或加粗信息,仅靠一处换行,很难认出它是标题。
处理这种材料时,可以先在标题后面补一个空行,再进行整理。我们用同样的选项重新测试,得到:
准备材料
先保留原始 PDF。
- 核对姓名
- 核对日期
- 核对金额补上空行,标题和正文就分开了。遇到更复杂的嵌套列表、表格或公式,建议单独保留,不和普通段落一起批量合并。
顺序已经错了,先别急着整理换行
如果左栏的句子后面接上了右栏内容,或者页码夹在一句话中间,删掉换行也不能把顺序改对。可以先回到复制这一步处理:
- 两栏交错: 尝试按单栏或小段重新选择、复制,并检查粘贴顺序;如果阅读器仍把两栏混在一起,再换一种提取方式。
- 混入页眉、页脚或页码: 对照页面确认后,只删除这些混入的部分。不要批量删除所有单独成行的数字,它也可能是正文编号或数据。
- 表格变成一串文字: 先核对表头、单位和行列对应关系,再决定是否适合放进纯文本笔记。空格变少,不代表表格恢复了。
- 复制后变成乱码: 需要另查文字层或字体编码等问题,格式整理不能纠正这些字符。
- 扫描图片没有可复制文字: 需要先用 OCR 识别。已有 OCR 文字层也可能有识别错误,不能把“能复制”当成“文字准确”。pypdf 的文档区分了原生文字 PDF、纯扫描 PDF 和经过 OCR 的 PDF,这几种文件的文字来源并不相同。
复制结果前,再看这几处
整理完一小段后,重点看一眼容易变化的位置:
- 每段开头和结尾有没有接错;
- 英文单词是否粘连,有意义的连字符是否还在;
- 标题和列表是否仍然分开;
- 数字、单位、负号和公式符号有没有缺失或错位。
中文标点附近也可以扫一遍。我们测试时,逗号后的换行合并后留下了一个空格,需要手动清理。确认这一小段的处理方式合适,再用于类似的内容。
如果要把这段话作为引用,记得保留文献名称、页码或链接,并确认文字与出处一致。
整理好,是为了接着做原本的事
文字格式整理的用途,是替你少删一些重复换行、少处理一些多余空格,而不是把所有内容都压成一段。正文接起来,标题和列表仍然分开,整理后的文字才方便继续使用。
iSomor 把原始内容和结果放在一起,方便你看清变化。检查好之后,就可以接着做笔记、摘录和讨论,把注意力放回原本想用的那段内容。