# 清理 OCR 生成的 Markdown，同时不改变原文含义

修复 OCR 生成的 Markdown 中的标题、断行、跨页拼接和重复页眉，同时保留可核对的原始文件。

清理 OCR 文本时，越是读起来像模像样的地方，越容易出错。把两行接起来，可能修好一个段落；接错了块，却会造出作者从没写过的句子。删掉重复的数字，可能清掉了页脚，也可能抹掉了一条列表项。

请保留源 PDF 和未经改动的导出文件。在副本上操作，把每条清理规则都当作需要在文档上验证的假设，而不是直接套用到整个文件。

## 先恢复有意义的标题

对照源文件中的章节标题和 Markdown 大纲。印刷版上字号很大的一行，可能是章标题、图注，也可能是页眉。仅凭字号大小，判断不了它的作用。

用标题层级表达真实的层次关系。一章之下可以有节和小节，但不必让每个加粗短语都变成新标题。保留足以在 PDF 中定位同一节的措辞。

如果页眉反复出现书名或章名，确认是重复内容后，从工作文本中删掉，而不是把每一处都提升为大纲中的标题。同时检查真正的标题是否仍留在该节开头。

处理长文档时，先修好一章并检查它的大纲，再把这套做法用到别处。教材正文、索引和附录可能各有各的排版惯例。

## 合并折行，但不要压平结构

PDF 提取后，可能每个印刷行末尾都留下一个换行。在普通正文里，这些行也许属于同一段；但换行也可能分隔列表项、诗歌、代码或独立公式。

下面是一段手写的清理示例：

```text
修改前：
The samples were stored in a dry
cabinet until the second test.

修改后：
The samples were stored in a dry cabinet until the second test.
```

这里展示的是一次编辑判断，不是实测的转换结果。把同样的规则用到真实段落之前，请先对照 PDF 确认。

行末连字符要格外小心。因排版断开的单词可能需要接回去，真正的复合词则要保留连字符。不要见到“连字符加换行”就一律删除，先看几个实例再决定。

跨页时，把上一页最后一句和下一页开头连起来读。中间可能夹着页脚、注释的续文或分栏切换，直接拼接就会出错。

## 用范围明确的规则清除页面杂讯

找出重复的页眉、页脚、页码和扫描痕迹。在若干页上确认规律之后，再用查找替换。同一个词也可能正常出现在正文里，孤零零的数字也可能是数据而非页码。

优先使用与实际重复结构对应的规则，而不是删掉所有短行。先在一小段文字上试运行，查看改动，并保留撤销的余地。如果文档里有双栏部分，遇到突兀的跳转，先按[阅读顺序排查指南](https://pdfcraft.ai/zh-CN/blog/pdf-markdown-reading-order/)处理，不要把它当成多余的空白。

清理时，把表格、图注和脚注与普通正文分开处理。它们的行结构往往承载着含义，宽泛的段落合并规则会把这些含义破坏掉。

## 用相同的原文位置对比修改前后

挑几个段落、一个列表、一张表格和一条注释，把未改动的导出文件、编辑后的副本和源 PDF 放在一起对照。检查词语和它们之间的关系，而不只是版面是否整齐。

记录下实质性的修正：恢复了哪个标题、删掉了哪条页脚、修好了哪处段落边界，或者还有哪个识别错误没有解决。把格式改动与数字、术语的改动区分开。读起来更顺的版本，也可能已经改动了证据。

在目标编辑器里预览 Markdown。基础 Markdown 与各种扩展对表格、数学公式和脚注的处理并不一致；[CommonMark](https://spec.commonmark.org/) 规定的是核心语法，而不是每个应用的具体行为。

## 交付一个可复用、可追溯的文件

[PDF Craft](https://pdfcraft.ai/zh-CN/pdf-craft/pdf-to-markdown/) 可以把扫描版和文本版 PDF 转换成 Markdown，供后续编辑。上传后选择 Markdown，下载转换好的文件，再对照原件检查。这套流程不需要、也不包含单独上传已有 Markdown 进行翻译的功能。

把图片和其他资源与清理后的文档放在一起，移动文件后测试它们的路径。沿用[研究笔记工作流](https://pdfcraft.ai/zh-CN/blog/pdf-to-markdown-for-research/)时，保留原书的标题、版次和页码信息。

合适的收尾时机，并不是文件里再也看不到任何不规范之处。而是结构已经可用、重要修正都已核实、存疑的段落也都清楚标出待查。

