如何识别并删除核心信息重复但展示格式不同的PDF简历文件
跨导出格式的简历PDF去重落地方案
1万份的文件量级单机即可完成全流程处理,无需分布式架构,核心思路是跳过不可靠的全文件哈希、全文档相似度匹配,直接锚定强唯一身份标识做判定,整体准确率可以做到99%以上,具体流程如下:
1. 前置初筛:先剔除完全一致的重复文件
先做最低成本的初筛减少后续计算量:
- 遍历所有PDF文件,计算每个文件的MD5哈希值,哈希完全一致的文件直接归为同一重复组,这部分一般能先筛掉20%~30%的冗余,都是同站点重复下载、拷贝生成的完全相同文件。
2. PDF文本提取与预处理
对哈希不重复的剩余文件做统一文本提取,适配不同导出格式的差异:
- 首选
PyMuPDF库做原生PDF文本提取,速度快、乱码率低,对可编辑PDF的提取准确率远高于其他开源工具; - 对提取文本长度低于50字、疑似图片扫描版的PDF,调用
PaddleOCR做文本识别兜底,不要用Tesseract,中文简历识别准确率差距在30%以上; - 提取后统一做文本标准化:全角字符转半角、移除所有连续空白字符、特殊符号做统一替换,避免因为排版空格、全半角差异导致后续信息匹配错误。
3. 核心身份字段抽取
不用大模型做抽取,正则规则足够覆盖99%以上的简历场景,速度快、零成本、无幻觉:
- 手机号抽取:用正则匹配11位国内手机号段,兼容中间带横杠、空格、括号的格式(比如
138-1234-5678、(138)12345678),提取后移除所有非数字字符,存为标准化11位手机号字符串; - 邮箱抽取:用标准邮箱正则匹配,提取后统一转为小写字符串,避免大小写差异导致匹配失败;
- 辅助字段抽取:同步提取姓名、最高学历院校、最近一份工作单位三个辅助字段,仅用于核心字段缺失时的兜底匹配,不做主要判定依据;
- 所有提取结果和对应文件路径逐行写入CSV台账,方便后续回溯、复核。
4. 重复分组判定规则
按优先级从高到低做分组,把误判率压到最低:
- 第一优先级:标准化手机号+标准化邮箱两个字段完全一致的,直接归为同一人员分组,这个规则的误判率低于0.1%;
- 第二优先级:仅匹配到手机号或仅匹配到邮箱的文件,再匹配三个辅助字段,命中2个及以上的归为对应分组,这部分分组结果单独标记,后续做人工抽检;
- 无核心字段、也匹配不到辅助字段的文件,直接划入待人工复核目录,不进入自动去重流程。
5. 冗余清理与版本保留
不要直接永久删除文件,留兜底缓冲:
- 每个重复组内只保留1份最优文件,优先选文本提取完整度最高(提取字符数最多、无乱码、无大面积广告水印)、文件生成时间最新的版本;
- 其余判定为冗余的文件统一移动到单独的备份目录,不要做永久删除,留存7~14天确认没有误判、漏判后再彻底清理;
- 最终输出统计报表,列清每个分组的留存文件路径、冗余文件路径、待复核文件清单。
避坑提醒:不要直接用SimHash、余弦相似度这类全文档相似度算法做判定,不同站点导出的简历排版顺序、自带广告、字段展示逻辑差异极大,很容易把同个人的简历判定为不重复,或是把同岗位同名的不同人员简历误判为重复,核心身份字段匹配的可靠性远高于全文档相似度方案。
内容的提问来源于stack exchange,提问作者bahador
相关产品推荐
相关产品推荐

