正则表达式可分层修复PDF导出文本的非语义换行:先识别合并伪换行(如infor-\n mation),再清理空白行并合并语义连续段落,接着修复列表与表格结构错位,最后通过白名单、分段处理和校验模式避免过度合并。

PDF 文本导出后常因排版折行产生大量非语义换行符(如单词中间断开、段首缩进被拆成空行、表格列间换行等),正则表达式可高效识别并修复这类冗余换行,但需结合文本结构特征分层处理,不能简单全局替换 \n。
识别并合并“伪换行”:保留段落逻辑,消除折行断裂
导出文本中常见“单词被截断+换行+续写”(如 infor-\n mation)或“短句被不合理拆行”(如 The quick\n brown fox)。这类换行无标点结尾,且下一行首字母小写(或为数字/符号),属于典型冗余换行。
推荐正则模式:(?
说明:匹配前面不是句末标点/空白、后面紧跟小写字母/数字/左括号/引号/不间断空格的换行符。
替换为单个空格( ),避免粘连。注意需启用多行模式(re.MULTILINE 或 flags=re.M)。
保留真实段落分隔,过滤“空行+缩进”类噪声
PDF 中常出现由空行、大量空格或制表符构成的“假段落分隔”,实际内容仍属同一段(如首行缩进被转为前置空行)。应先清理此类空白行,再判断段落边界。
两步操作:
• 清理纯空白行:^\s*$ → 替换为空字符串(删除整行);
• 合并被空行隔开但语义连续的行:匹配“非空行 + 一个或多个空行 + 非空行(且不以大写句首常见词开头)”,例如:([^\n]+)\n\s*\n(?![A-Z][a-z]{2,}\b|[A-Z]{2,}\b|\d+\.)\s*([^\n]+)
→ 替换为 \1 \2(中间加空格)。
修复列表与表格残留结构中的换行错位
导出文本中项目符号(•、-、1.)或表格列常被换行打散。需先锚定结构标记,再约束换行位置。
示例处理:
• 合并同一列表项内换行:(^[\s]*[-•\*\d\.]+\s+.*?)(?=\n[\s]*[-•\*\d\.]+\s+|\n\s*$|\Z)(配合 re.DOTALL)→ 提取完整项,内部换行转空格;
• 表格列对齐残留:若列间用固定空格/制表符分隔,可用 \t 或 [ ]{4,} 定位列边界,避免误删单元格内换行。
验证与兜底:避免过度合并,保留必要换行
盲目合并会破坏地址、诗歌、代码块等需换行的结构。建议:
• 预留白名单:对含 \n\n、或前后行均含大写专有名词/日期格式的换行,跳过处理;
• 分段处理:按空行切分段落后,对每段单独应用规则,避免跨段误连;
• 最终校验:替换后扫描 [a-z]\n[A-Z] 类模式(小写词尾接换行加大写),提示可能存在的未修复断裂,供人工复核。


















