文档与 OCR实用指南

文本去重怎么不误删?用6行清单核对空行、空格与大小写

清理文本清单时,先删空行,再按已经确认的相等规则去重。空格不同、大小写不同的两行,未必应该合并。下面用一份虚构标签清单走完输入、处理、核对与交付;姓名或客户记录需要稳定编号,不能直接套用标签去重规则。

代码编辑器中的分层文本与程序源代码
配图:Juanjo Jaramillo · Unsplash License

本次修订:补齐清单清理的逐步操作、6→5→4行核算和误删恢复;保留原有空白、大小写与差异比较说明。

先把问题解决

这个案例的正确结果是6行原文→5条非空行→4条精确去重结果。首行的前导空格和末行的小写ada都保留。先把每一步结果另存,再决定是否统一空格或大小写;一旦删错,从上一份输入重跑。

先写清楚:哪些行可以算同一条?

本例把“整行文字完全相同”定义为重复,保留首次出现的顺序;不裁剪非空行两端空格,不统一大小写,也不排序。这是一组编辑设计的标签,不代表四个人。把规则写在交付说明里,接收人才能理解为什么看起来相似的行仍然存在。

  1. 保留一份只读原文,建立01-original、02-no-blank、03-exact-dedup三个副本。文件名表示处理阶段,不覆盖原件。
  2. 若清单实际代表参会者或客户,先索取编号并转到按标识核查的流程;仅凭Ada出现两次,不能判定为同一人。
  3. 若业务另有“忽略首尾空格”规则,单独记录为下一项变更。本篇主案例先不做这一步,才能定位每次减少的行。

跟做:先清空行,再精确去重

下面输入共6行,第1行Ada前有一个半角空格,第4行为空。代码块保留这个空格;复制后不要手动整理。

  1. 打开空行清理,粘贴原文并点“开始处理”。复制结果到02-no-blank,数出5条非空行;如果只剩3条,已经额外做了标准化。
  2. 打开文本去重,粘贴上一步结果并运行。核对4行参考结果,尤其是两个Ada版本与ada,而不是只检查行数。
  3. 保留03-exact-dedup,再导出或复制给接收人。需要统一空格时从02副本另开分支,写清新规则与新行数,不能把它混进本次验收。

原始标签清单

 Ada
Ada
Bo

Bo
ada
虚构输入;按逻辑行计数,不包含额外的末尾空行。

逐步核算,不只看最后是否整齐
阶段预期行数必须保留什么
原文61个空行、首行前导空格、末行小写
清除空行后5两条Bo仍在;非空行空格不变
整行精确去重后4第一条Bo;Ada和ada分开

最终参考结果

 Ada
Ada
Bo
ada
首行仍以一个空格开头。4条标签不等于4个独立人员。

出现3行或2行时,先检查是否手动去掉空格、改了大小写或把姓名当编号;不要把删掉的行凭记忆补回。

用行数账本解释每一次删除

6→5的唯一原因是删除空行;5→4的唯一原因是删除第二条完全相同的Bo。清除空行使用trim判断一行是否为空,但保留非空行原文。精确去重不自动判断拼写、身份或最新版本。

  • 如果5→3:检查前导空格是否被裁剪。把这一项当成独立规则重新审阅。
  • 如果4→2:检查是否同时裁剪空格并忽略大小写。它可能适合某些标签,却可能损坏大小写敏感标识。
  • 只有总行数正确仍不够:四行也可能删错一条、漏删另一条,需要逐项对照参考结果。

查找 cat,也会改掉 catalog 里的 cat

当前查找替换执行字面、区分大小写的全部匹配,并不是正则表达式。自编输入 cat catalog Cat,查找 cat 并替换为 dog,输出为 dog dogalog Cat。它不会自动理解完整单词,Cat 也不会因为意思相近而匹配。想使用正则中的边界写法时,应去支持正则的工具验证,而不是把 \bcat\b 粘进这里后假定它会解释。

若只想改某个字段的固定值,优先隔离该字段或人工确认每次出现。对整段合同、代码或品牌名单进行短字符串全局替换很容易波及其他内容;先用一条正例、一条嵌在长词里的反例和一条不同大小写样本确认,再处理全文。

差异多,不一定是正文改了很多

这个文本差异入口逐行比较相同位置,而不是寻找最少改动的段落对齐。自编旧文为 A、B、C 三行,新文开头插入 X 后为 X、A、B、C,后面的行也会因为位置后移被显示为不同。不要把屏幕上每一条减号都理解为内容已删除。

对短名单,可对照编号后的原文解释行移动;长文需要更适合对齐段落的版本比较方式。也不要为了让位置相同而把业务有意义的顺序先排序。保留原序和清理副本,区别真正文字改写、移动和删除,才能解释最终结果。

输入不同或继续处理时,再选这些工具

  • 清理空行: 删除前确认空行是否承担分组作用。
  • 去除重复文本: 决定空白与大小写差异是否有意义后,再按精确重复去重。
  • 排序文本: 输入顺序代表优先级时保留带序号原稿,排序后检查看似数值的标签。
  • 转换字母大小写: 只处理目标字段;品牌、缩写与区分大小写的标识可能需要例外。
  • 替换已知内容: 全部替换前,测试独立词与长词中的相同片段,再查看差异。
  • 检查文本差异: 将原稿与最终副本比较,区分预期清理与意外内容改动。
  • 提取 HTML 纯文本: 移除标签后检查标题、段落与表格关系,纯字符串可能丢失结构。
  • 简繁体转换: 选择目标方向,并人工检查姓名、地区用词与固定产品名称。
  • 遮盖或加密敏感文本: 脱敏后检查完整可见结果;使用密码加密时分开保存密码,并先用不敏感样本测试解密。
  • 反转测试字符串: 用于明确的文字练习,并包含多语言样本;字符反转不等于语义反转。
  • 生成测试标识: 按测试记录要求设置长度与字符,并注明这些是模拟数据。
  • 生成排版占位文字: 选取足够段落测试换行,发布或征求内容意见前替换占位文字。

交付前:解释变化,并能回到原文

替换时额外试一次cat catalog Cat:查找cat、替换为dog,结果应为dog dogalog Cat。当前入口执行区分大小写的字面替换,也会改到单词内部;它不是整词匹配。这个例子依据MDN的字面替换说明和本站实现,不需要正则表达式。

MDN 解释正则模式与标志;依赖模式匹配的清理规则应加入边界样本。

姓名重复时应使用稳定标识。 结果用于 Markdown 时,还需核对渲染结构。

这份清单何时可以交付

  • 有原文与两个阶段副本;减少的1个空行和1条Bo都能解释。
  • 逐行匹配4行参考结果,前导空格、大小写与首次出现顺序都正确。
  • 需要恢复时从保存的上一阶段重新运行;涉及姓名时改用稳定标识。
  • 敏感内容先在交付副本中脱敏,复查替换没有改变其他标签。

常见问题

相同姓名一定要去重吗?

不一定,姓名不唯一时应保留稳定标识或其他已确认键。

去标签会保留表格关系吗?

不一定,使用提取文本前应对照原始行列关系。

随机占位内容可以直接发布吗?

只有明确以此为目的时才适合,通常应在交付前替换并检查。

参考资料与延伸阅读

按步骤开始处理

进入对应工具,预览处理结果,检查导出的文件。

继续阅读