发给 AI 前先脱敏:用本地 Python 处理文本里的手机号和邮箱

本篇目录 6 节
  1. 一、先判断是否需要上传
  2. 二、准备独立测试目录
  3. 三、创建本地替换脚本
  4. 四、执行与验收
  5. 五、这份脚本覆盖不了什么
  6. 六、常见问题与排错

AI 文档脱敏可以减少不必要的个人信息流出,但不能靠一句“请保护隐私”完成。本文先讲如何缩小输入范围,再提供一个只在本机处理 TXT 的 Python 示例。脚本识别部分常见中国大陆手机号和邮箱格式,不处理身份证、姓名、地址、图片和 Office 隐藏内容,因此不能把输出称为完全匿名化文件。

本地 AI系列主题示意图
系列主题示意图;操作步骤以正文与官方界面为准。

一、先判断是否需要上传

很多任务只需要字段结构或少量样本。例如请 AI 帮你写清洗脚本,可以提供虚构的五行数据,不需要整个客户表。先删掉与任务无关的列,通常比把敏感列打星号更稳妥。

如果文件受组织保密要求限制,先使用组织批准的处理环境。本地模型也需要管理账号权限、日志和备份;“本地运行”不意味着任何文件都适合随意放进去。

二、准备独立测试目录

安装 Python 后建立一个空目录,放入 sample.txt 和 redact.py。先用下面的虚构示例测试,不要拿真实通讯录验证脚本。

以下为虚构测试记录,不对应真实业务联系人。
联系邮箱:demo@example.com
测试号码:13800000000
请确认样本字段,不包含真实姓名或地址。

运行前保留原始资料只读副本。不要在文件夹上直接执行批量覆盖,先检查一个输出文件。

三、创建本地替换脚本

from pathlib import Path
import re

source = Path("sample.txt")
target = Path("sample.redacted.txt")
if target.exists():
    raise SystemExit("Output exists; rename it before another run.")
text = source.read_text(encoding="utf-8-sig")
patterns = [
    ("EMAIL", re.compile(r"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}")),
    ("PHONE", re.compile(r"(?<!\d)(?:\+86[- ]?)?1[3-9]\d{9}(?!\d)")),
]
counts = {}
for label, pattern in patterns:
    text, count = pattern.subn(f"[{label}]", text)
    counts[label] = count
target.write_text(text, encoding="utf-8")
print("Replacement counts:", counts)
print("Output:", target)

此脚本使用 Python 标准库,不调用网络,也不把原始值打印到日志。所有同类字段使用同一个占位符,因此适合做结构示例;如果任务需要区分联系人,应该另设计稳定编号,但编号映射必须单独保护。

四、执行与验收

在脚本目录的 PowerShell 运行:

py redact.py

示例应该显示 EMAIL 和 PHONE 各替换 1 次。打开 sample.redacted.txt,应看到 [EMAIL] 和 [PHONE],原文件保持不变。再次运行时,脚本会拒绝覆盖输出,这是为了避免把上一版检查结果悄悄改掉。

不要只看替换次数。逐段阅读输出,检查“某学校唯一的财务负责人”这样的上下文是否仍能识别人。必要时把机构、职位、日期和金额区间一起泛化,或干脆用虚构样本替代。

五、这份脚本覆盖不了什么

情况 风险 处理方式
带空格或特殊写法的号码 正则可能漏检 人工抽查,增加测试样本
PDF 图片、截图 没有直接处理 先核对 OCR 或使用专门打码工具
Word 修订与批注 TXT 示例不涵盖 使用合规流程清除隐藏内容并复核
地址与姓名 没有自动识别 按任务需要人工替换或删除

用矩形盖住文字也不一定真正删除 PDF 底层内容。导出后尝试选中、搜索和复制相关文字,确认敏感内容没有继续留在文件里。

六、常见问题与排错

替换后还要人工检查吗?

要。正则只覆盖预先定义的形式,无法理解全部个人信息和业务背景。

同一个人都变成 PHONE,会不会影响分析?

会。如果要分析重复联系人,应使用稳定的本地编号,并保护映射表;不要为了保留关联而直接上传原始号码。

编码错误怎么办?

先确认源文件是 UTF-8。不要用忽略解码错误的方式悄悄丢字符;转换副本后重新验证数量和内容。

接着可用表格清洗方法处理演示数据,或部署本地文档知识库。正则能力和文件读取接口见 Python re与pathlib 官方文档。

1人评论了“发给 AI 前先脱敏:用本地 Python 处理文本里的手机号和邮箱”

  1. Pingback: 不会编程也能用 AI 修脚本:先复现、看差异,再运行验证

评论区已关闭。

滚动至顶部