首页/AI/RAG 与向量库速查/入库前的文本清洗与规整

入库前的文本清洗与规整

入库前清洗:统一空白与断行、去除页眉页脚与页码、修复英文断字、统一全角半角;清洗规则必须配合抽样人工核对,避免误删正文。

RAG 与向量库速查AI更新于 2026-10-13

文本清洗与规整

解析出来的文本通常带着各种噪声:跨行断字、页眉页脚、页码、连续空行、全角半角混用、软换行。清洗的目标是让同一份语料在切分、分词与检索三个环节表现出稳定一致的行为——比如全角半角不统一,同一个术语在倒排里就是两个词项,统计与匹配都会失真。清洗规则必须配抽样人工核对:正则一旦写宽,删掉的可能正是正文里的编号与单位。

基本信息

典型动作合并英文断字、压缩空行、统一空白、删页码与页眉页脚
顺序要求全角半角统一必须在分词与索引入库之前完成
识别方式跨页高频重复文本统计可批量识别页眉页脚
验证方式抽样对比清洗前后文本,确认正文没有被误删
风险规则过激会删掉正文中的编号、单位与年份

典型使用场景

  • PDF 解析产物入库前:清理页码、页眉页脚与断字
  • 多来源语料统一:把全角数字、半角标点统一成一套写法
  • 英文文献处理:合并行尾连字符,避免检索词被切断
  • 表格与正文分离:删除重复的分隔线字符,保留表头
  • 清洗规则回归:规则变更后在固定样本上跑对比,确认删改范围

清洗函数示例

清洗函数示例
import re

def clean(t: str) -> str:
    t = re.sub(r'-\n(?=[a-z])', '', t)          # 英文断字连字符合并
    t = re.sub(r'\n{2,}', '\n', t)              # 压缩连续空行
    t = re.sub(r'[ \t]+', ' ', t)               # 合并连续空白
    t = re.sub(r'第\s*\d+\s*页', '', t)          # 去页码
    return t.strip()

常见动作与风险

动作目的风险
合并行尾连字符还原被拆开的英文单词误合并真正的连字符复合词
删页眉页脚去除跨页重复噪声正文中的固定抬头被误删
压缩空行统一段落边界代码块与表格的格式被破坏
全角转半角统一词项写法中文标点被转换后语义标点丢失
清洗规则与切分规则要一起版本化:只改清洗不改切分统计口径时,块数、平均块长的历史对比会失真,回归报告需要标注规则版本。

易错点

  • 清洗正则过激删掉正文里的编号与单位,规则必须在样本上回归
  • 全角半角统一放在分词之后做,索引里的词项与查询侧仍然不一致
  • 页眉页脚靠逐份配置规则处理,语料一多就维护不动,改用跨页高频统计更省力
  • 在代码块与表格上套用空行压缩,结构信息被破坏
  • 清洗后不做抽样对比,正文缺失只在用户反馈时才被发现

数据来源与参考

  • PyMuPDF 官方文档(文本抽取)
  • Unstructured 官方文档(文本清理建议)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌