如何在翻译前修复 OCR 换行符与连字符
修复换行的 OCR 文本,同时避免误删真正的连字符、段落、列表或诗歌。采用可逆的工作流程,并附带十二个可下载的清理示例。

要修复 OCR 换行符,首先要确认属于同一个段落的文本。只将其多余的行尾替换为空格。对于跨行断开的单词,需单独判断是该删除连字符还是予以保留:例如 trans- 后接 lation 应变为 translation,但 well- 后接 known 则应变为 well-known。建议保留更改记录,并将存疑的合并处与原始页面进行比对。
切勿对整本书执行“删除所有换行符”或“删除所有连字符”的操作。 清理后的提取内容可能看起来更加通顺,但却可能丢失了段落、合并了两个列表项,或是篡改了技术标识符。我们的目标是获得一份可靠的阅读或翻译副本,而不是追求换行符数量的最少化。
本指南从 完成文本识别之后讲起。如果复制 PDF 时出现字母或数字错误,请先 诊断其文本层。修改换行符无法将识别错误的 B-2O4 变回原本的 B-204.
判断每个换行符所代表的含义
保持原始扫描件和原始提取内容不变。在工作副本中,开启编辑器中的空白字符或段落标记显示。调整编辑器窗口大小:如果一行文本在没有实际存储换行符的情况下发生重排,那它只是屏幕上的视觉自动换行;无需删除任何内容。
实际存储的换行符则需要不同的检查方法。挑选一个连续段落、一个标题、一个列表以及任何排版明显不同的页面,分别与原始页面图像进行比对。切勿仅凭扉页就推断整篇文档的结构。
| 换行所代表的内容 | 应对操作 | 所需依据 |
|---|---|---|
| 同一段落内单词之间的视觉换行 | 用一个空格替换现有的换行符 | 在原文中两行属于同一个段落 |
| 单词内部被拆分 | 连接碎片,通常移除排版连字符 | 原本的拼写、上下文语境以及特定语言的规则 |
| 在真正的复合词连字符处换行 | 移除换行符,保留连字符 | 该词在非行尾排版中本就保留该连字符 |
| 段落、标题、列表项或诗节的分界 | 保留该边界 | 原文结构,而非单纯的句子标点 |
| 阅读顺序不明确的分栏或跨页过渡 | 先不做处理并仔细检查页面 | 文本衔接、分栏顺序、图注和脚注 |
空行和缩进有助于识别段落,但它们只是线索而非绝对保证。标题后面可能没有空行;带缩进的行可能是列表的延续,而不是新段落;以句号结尾的短行既可能是段落的最后一行,也可能是段落中途的一个句子。
如果 OCR 导出结果提供了版面或文本块信息,在核对文本时请保留它们。仅凭纯文本导出可能会丢弃重建这些边界所需的重要依据。
区分被拆分的单词与真正的连字符
三种外观相似的情况需要不同的处理方式:
trans- → translation
lation
well- → well-known
known
trans\u00ADlation → translation in a verified reading copy
最后一行使用 \u00AD 来显式呈现一个原本难以察觉的字符。Unicode 明确区分了 U+00AD SOFT HYPHEN(软连字符,用于词内可选断字标记)与可见连字符,例如 U+2010 HYPHEN。这两个字符不能互换使用。 Unicode 的分行规范 中也描述了换行处与特定语言相关的拼写变化;仅删除可见的连字符并拼接字母并不总是行得通。
对于普通散文,移除已确认的软连字符(选择性断字标记)可以生成易于阅读的文本。而对于档案转录,则应单独保留原文:即使单词外观看似未变,移除标记也会改变编码后的文本。
请使用 源语言 词典来核对候选拼写,然后再结合上下文进行判断。词典词条只是辅助证据,并不能作为随意覆盖专有名词、标识符或历史拼写的依据。文档中多次出现同样的形式也有助于判断,但 OCR 错误也可能会反复出现。
例如,我们的德语示例文本是:
Die Auf-
gabe ist klar.
在这个专门编写的示例中,原本的目标词是 Aufgabe; 杜登词典(Duden)的词条 将其断字位置列为 Auf|ga|be。在这里将 Auf- 与 gabe 合并是合理的。但这单个例子并不能代表通用的德语连字符还原规则,且现代词典的拼写也不应在无提示的情况下替换旧版本的正字法。
URL、目录编码、化学名称、负数以及其他技术标记应作为单独的审查情况对待。连字符或破折号是否保留,必须依据源文本及该标记的实际含义,而不能套用英语单词的启发式规则。
十二个对照示例说明了什么
我们制作了一个 可下载的清理演示示例 ,其中包含十二段原始字符串。它们的目标词汇和结构在编写时均已明确;随后我们在其中插入了选定的换行和连字符瑕疵。 这些是合成的文本示例,而非 OCR 引擎的直接输出或图书扫描件。
粗暴处理的基准方案仅执行三项替换:删除“连字符+换行符”、将其余换行符替换为空格,以及删除软连字符。第二种方案则仅对精确匹配的文本应用人工核准的更改,完全不尝试自动识别段落或自动判定单词拼写。
| 示例 | 粗暴基准处理 | 核准后的决定 |
|---|---|---|
| 英文散文换行 | 正确拼接两行 | 用空格替换已确认的换行 |
trans- / lation | 正确生成 translation | 移除插入的连字符和换行符 |
well- / known | 生成 wellknown | 保留词原有的连字符 |
德语 Auf- / gabe | 正确生成 Aufgabe | 仅拼接此类经过验证的拼写 |
| 内嵌的 U+00AD | 移除软连字符标记 | 在此用于阅读的文本版本中将其移除 |
| 法文省略号,随后是新段落 | 错误合并段落 | 保留作者定义的段落边界 |
| 编号列表、诗歌、代码和标题 | 抹平了不同的结构排版 | 保留原有的换行符 |
| 中间没有空行的两个段落 | 将它们合并为一段 | 保留作者定义的独立段落 |
| 未经复核的页码标记 | 抹去了页面过渡标记 | 在检查完页面顺序前保持原样 |
在 2026 年 10 月 3 日,使用 Node.js 25.2.1 运行该测试夹具时,生硬的基线方法仅在 12 个示例中的 4 个 上生成了与基准一致的文本。而经过审核的路径与所有 12 个基准完全匹配,并通过撤销操作恢复了全部 12 个输入。它还拒绝了过期输入、非唯一匹配以及缺失的匹配。
这些结果测试的是补丁针对 已知人工编写基准的精确应用能力。它们并不代表实际场景中的准确率:审核后的决策本就包含了标准答案,且该语料库是特意挑选出来暴露失败用例的。我们并未测试商业清洗工具、OCR 引擎、翻译模型或 BookTranslator 的上传功能。测试中没有重试,也没有排除任何样本。
下载 实际输入/输出及补丁日志 以及 复现说明。该 JavaScript 代码在本地运行,无任何外部依赖或网络请求,仅打印结果,不会重写您的文件。其校验机制可防止已审核的修改被错误应用到其他文本上,但无法判断某项修改在语言学层面上是否正确。
一次只清理一个经过验证的文本块
从一段能够确定阅读顺序和段落边界的简短正文块开始。切勿直接从包含说明文字、引文、列表和脚注的整章内容着手。
- 保存原始副本并记录源位置。 为每段审核过的文本保留文件名、页码、段落或文本块编号以及语言信息。
- 首先标记结构边界。 将标题、列表项、诗歌、表格和代码与普通正文区分开来。如果您稍后要移除页码标记,请在正文之外保留页码引用信息。
- 连接该文本块内普通的词间换行。 将每个确认的换行替换为一个空格。检查单词是否发生误拼粘连,并确认原有空格没有变成多余的重复空格。
- 单独审核被拆分的单词。 显示完整的词元及所在句子。记录“移除排版连字符”、“保留原有连字符”或“待定”。切勿将待定的候选词直接视为已审核通过的修改。
- 在接受修改前检查差异(diff)。 将每个移除的换行符或连字符与原文进行对比。将清理后的版本另存为一个新文件,并记录相应的处理决定。
- 重新打开并从保存的结果中复制内容。 检查实际要使用的文件,而不要仅看编辑器的预览。
对于篇幅较短的摘录,通过修订模式手动编辑或进行修改前后对比可能就足够了。对于篇幅较长的文本,补丁列表应记录确切的原始子字符串、替换内容、位置、修改原因以及审核人。源文件的校验和有助于防止在输入内容更改后错误套用旧的审核结果。
如果你的编辑器提供了保留段落的清理模式,请在排版复杂的区块上测试该模式,而不仅是在流畅的正文上测试。保留双换行符无法恢复 OCR 用单个换行符表示的段落边界。在检查表格和代码之前,切勿删除缩进或折叠所有空格。
明确何时需要对照原始页面图像
法语标点符号清楚地说明了为什么句尾检测并不等同于段落检测。在我们的自编示例中, Il attend… 和 Le lendemain, il part. 属于不同的段落。单凭省略号无法确立这一边界。 魁北克法语事务局关于省略号的用法指南 指出了省略号的多种用法,包括表示中断或未表达完整的想法;此时应借助页面结构来判断是否应该与下一行合并。
对以下待处理项必须对照原始图像进行审核:
| 待处理项 | 为什么仅凭文本不足以做出判断 | 需要对比的内容 |
|---|---|---|
| 紧跟正文的标题 | 提取后可能没有保留空行 | 字体、对齐方式、间距和章节层级 |
| 跨页或跨分栏的段落 | 页眉、图注或脚注可能会穿插其中造成打断 | 源文本最后一行、接续内容以及阅读顺序 |
| 人名/专有名词、代码、数值或生僻术语 | 看似合理的拼接仍可能改变实际含义 | 每个字符,包括破折号/连字符类型和数字 |
| 历史语言的分词断行 | 印刷换行处的拼写可能与未分词时的词形不同 | 版本、原文拼写以及相符的语言参考工具 |
| 诗歌、列表、表格或代码 | 行尾换行可能承载着语义或结构 | 诗行划分、列表项边界、单元格及缩进 |
| 省略号、缩写或简短的末尾行 | 标点符号并不能证明其在段落中的位置 | 完整的段落及其周围的文本块 |
如果多页都出现相同的问题,请在整个文档中搜索该模式并审查匹配项。如果源文字、阅读顺序或整个段落均有误,请停止规范化,重新进行文字识别或提取。对于跨多种语言的文字识别,请参考专门的 多语言 PDF OCR 工作流程.
翻译前务必验证清理后的原文
将编辑后的文本块与原始页面进行对比,然后再检查不同的文本块以及提取内容中出现的每种不同结构类型。将已知的错误案例保留在复核列表中。抽样只能提供受检段落的证据,并不能保证整本书的其他部分完全无误。
- 确认名称、数字、日期和代码仍与原文一致。
- 检查每一个被移除的连字符,以及跨换行重构的任何词语拼写。
- 比对段落、标题、列表项和诗行的边界。
- 确认各页之间的首行和末行在跨页转换中完好保留。
- 搜索未解决的疑似问题项,并在复核日志中保持可见。
- 确保最终保存的版本即是送入下一个工作流程的版本。
如果您只需要可搜索的文本或笔记,这份经过验证的提取内容可能就是最终产物,无需借助翻译来进行修复。
如果您需要将文档转换为另一种语言,请将已验证的内容整理为受支持的文档格式,并使用 完整文档翻译工作流程。BookTranslator 的 OCR 模式是根据识别出的内容重建翻译后的 PDF,而非完全复刻原始页面排版;它并非外部文本清理编辑器,也不能证明原文中的每一处换行都得到了正确解析。 扫描版 PDF 指南 说明了何时需要进行识别。
请保留原始页面和清理日志,以便用于 最终的 PDF 翻译质检流程。通顺流畅的译文字句无法提醒你原文其实本应包含一个真正的连字符——或者两句看似连贯的句子原本分属于不同的段落。





