清理 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 进行翻译的功能。
把图片和其他资源与清理后的文档放在一起,移动文件后测试它们的路径。沿用研究笔记工作流时,保留原书的标题、版次和页码信息。
合适的收尾时机,并不是文件里再也看不到任何不规范之处。而是结构已经可用、重要修正都已核实、存疑的段落也都清楚标出待查。