M1 Mac使用anonympy匿名化PDF遇poppler路径错误求解决
解决M1 Mac上anonympy的poppler路径问题
你遇到的FileNotFoundError是因为指定的poppler路径不正确——pdf2image依赖的是poppler的bin目录(存放pdfinfo等可执行文件的文件夹),而不是poppler的根安装目录。
Homebrew安装的poppler,其可执行文件都在/opt/homebrew/Cellar/poppler/24.04.0/bin路径下,修正代码中的poppler_path即可解决:
from anonympy.pdf import pdfAnonymizer anonym = pdfAnonymizer( path_to_pdf = "test.pdf", pytesseract_path = "/opt/homebrew/Cellar/tesseract/5.3.4_1/bin/tesseract", poppler_path = "/opt/homebrew/Cellar/poppler/24.04.0/bin" # 添加/bin后缀 ) anonym.anonymize( output_path = 'output.pdf', remove_metadata = True, fill = 'black', outline = 'black' )
更稳妥的方式是直接用Homebrew的统一软链接路径/opt/homebrew/bin,这个路径包含所有Homebrew安装工具的可执行文件,即使poppler版本更新也不用修改路径:
poppler_path = "/opt/homebrew/bin"
适合简历类PDF的自动匿名化Python方案
正则匹配表单内容的方式局限性大,推荐以下更可靠的方案(均适合学生项目非商业用途):
spaCy + PyMuPDF组合:
- 用PyMuPDF(
fitz库)读取PDF,提取每页文本的同时获取对应字符的坐标位置 - 加载spaCy预训练NER模型(如
en_core_web_sm),识别文本中的姓名、邮箱、电话、地址等个人实体 - 根据实体坐标在PDF页面上绘制黑色矩形覆盖敏感内容
- 保存修改后的PDF
- 用PyMuPDF(
Presidio匿名化工具:
微软的Presidio专门针对敏感数据匿名化,支持识别数十种个人信息类型。可以结合PyMuPDF提取PDF内容,用Presidio识别实体后再定位覆盖。OCR+NER处理扫描版简历:
如果是扫描生成的PDF,先用tesseract OCR提取文本,再用NER模型识别敏感实体,接着将PDF转成图片并涂黑对应区域,最后重新生成PDF。
内容的提问来源于stack exchange,提问作者johnjorgenson
相关产品推荐
相关产品推荐

