上传前数据脱敏 Android 应用。向 AI Agent / 聊天工具上传文件前,本地离线识别并脱敏个人敏感信息(手机号、身份证、住址、人脸等),只输出脱敏副本。
详细需求见 REQUIREMENTS.md。
需要 Android Studio(JDK 17,AGP 8.5+)。打开项目根目录直接同步构建,或:
./gradlew :app:assembleDebug
./gradlew :app:testDebugUnitTest # 规则引擎单元测试
app/src/main/java/com/privacyguard/app/
├── core/model/ Finding 统一数据模型(识别↔脱敏解耦的核心)
├── detection/
│ ├── text/ RegexRuleEngine:正则+校验,按语言分组(zh/en/de + 通用)
│ ├── nlp/ 语种路由(Language ID)、实体抽取(zh/en/de)、NER(v2)
│ ├── ocr/ ML Kit 中文 OCR(含拉丁字母)→ 规则引擎 → 映射回图像坐标
│ └── vision/ 人脸、二维码/条码检测
├── redaction/
│ ├── image/ 遮盖/马赛克
│ ├── document/ 文本替换(占位/部分保留/一致性假名)
│ └── pdf/ M4 待实现
├── metadata/ EXIF/文档属性清除
├── domain/ DetectUseCase / RedactUseCase 编排
└── ui/ Compose:home(选文件/接分享)→ preview(确认)→ 导出
已跑通端到端流程(文本 + 图片): 选文件/接收分享 → 本地扫描(规则引擎 + 实体抽取 + OCR/人脸/条码)→ 确认表单 (逐项勾选、切换脱敏方式、图片拖拽框选、文本关键词补充)→ 生成脱敏副本 → 清除元数据 → 系统分享。原文件全程零写入。
核心链路:MainActivity → SessionViewModel(会话状态机)→
FileRepository(加载)→ DetectUseCase(扫描)→ PreviewScreen(确认)→
RedactUseCase + ExportUseCase(脱敏导出)。
待实现:PDF/docx/xlsx 链路(M4)、规则管理与 Profile、批量队列、 中文 NER 人名识别(v2)。已知限制:实体抽取模型需 Play 服务首次下发, 不可用时自动降级为仅正则检测。