跳到主要内容

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

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

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

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

先恢复有意义的标题

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

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

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

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

合并折行,但不要压平结构

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

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

修改前:
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 确认。

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

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

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

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

优先使用与实际重复结构对应的规则,而不是删掉所有短行。先在一小段文字上试运行,查看改动,并保留撤销的余地。如果文档里有双栏部分,遇到突兀的跳转,先按阅读顺序排查指南处理,不要把它当成多余的空白。

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

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

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

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

在目标编辑器里预览 Markdown。基础 Markdown 与各种扩展对表格、数学公式和脚注的处理并不一致;CommonMark 规定的是核心语法,而不是每个应用的具体行为。

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

PDF Craft 可以把扫描版和文本版 PDF 转换成 Markdown,供后续编辑。上传后选择 Markdown,下载转换好的文件,再对照原件检查。这套流程不需要、也不包含单独上传已有 Markdown 进行翻译的功能。

把图片和其他资源与清理后的文档放在一起,移动文件后测试它们的路径。沿用研究笔记工作流时,保留原书的标题、版次和页码信息。

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

把方法用在你的文档上

先用有代表性的文件试一次,检查结果,再选择适合整套资料的处理方式。

将 PDF 转换为 Markdown