- Pipeline: analyze(), redact(), analyze_image() methods - API: /analyze, /redact, /analyze/frame, /analyze/frame/base64 endpoints - Detectors: regex, NER, face (RKNN NPU) - Privacy frame route added for KVM-Privacy Hub integration
3.4 KiB
3.4 KiB
发布记录
v0.1.1 (2026-02-27)
Bug 修复
- Regex 边界修复:
id_card/bank_card正则将\b改为(?<!\d)/(?!\d),修复中文字符紧邻数字时 PII 漏检问题(Python 3\b为 Unicode-aware) - 身份证/银行卡去重:
RegexDetector新增去重逻辑,18 位身份证号不再被同时识别为银行卡,消除实体数量虚增导致阈值误判 - DOCX 表格单元格遮罩:
TextRedactor._redact_docx补全表格单元格遍历,修复隐藏在表格中的 PII 无法遮罩的问题 - DOCX 表格单元格解析:
OfficeParser._parse_docx补全表格单元格遍历,修复表格中 PII 漏检问题
测试增强(155 passed,4 skipped)
| 测试文件 | 新增测试 | 覆盖内容 |
|---|---|---|
test_detectors.py |
+10 | 银行卡检测、车牌检测、身份证/银行卡去重、末位X、security_level、多实体同块、NER 组合 |
test_classifier.py |
+4 | 全部 10 个保密关键词(parametrize)、阈值边界(4/5)、中风险不触发警告 |
test_api.py |
+5 | X-Security-Report 头、xlsx 格式、无 PII 返回 normal、summary 一致性、保密文档返回 403 |
test_pipeline.py |
+4 | summary 契约验证、无 PII 空实体、多实体触发警告、多类型同时遮罩 |
test_redactors.py |
+4 | Excel 遮罩、DOCX 表格单元格遮罩、████遮罩字符验证、text层实体不触发图像遮罩 |
v0.1.0 (2026-02-27)
新功能
API 服务(FastAPI):
POST /api/v1/analyze:文档隐私检测,返回 JSON 报告(实体列表 + 分类 + 摘要)POST /api/v1/redact:按指定类型遮罩,返回处理后文档(格式与输入一致)GET /api/v1/health:服务健康检查GET /api/v1/types:支持的隐私类型列表
文档解析(双平台):
- PDF 文字层解析(pdfminer.six)
- Word / Excel 解析(python-docx / openpyxl)
- 图像 OCR(PaddleOCR RKNN,RK3588 硬件)
- Parser Factory 按文件扩展名自动路由
隐私检测:
- Regex 检测:身份证、手机号、银行卡、邮箱、车牌(共 5 类)
- 规则词典 NER:中文姓名(姓氏词典 + 上下文)、地址(触发词匹配)
- 人脸检测:MediaPipe RKNN(RK3588 硬件,pipeline 延迟加载)
- 文档分类前置拦截:保密文件关键词检测,
classified类直接返回 403
遮罩处理(字节级安全):
- TextRedactor:删除 docx/xlsx 文字节点,字节级安全
- ImageRedactor:OpenCV 黑色矩形覆盖图像层实体
- 策略自动选择:含文字层 PDF 强制 text_replace,防止文字层泄露
测试覆盖(初始 50 passed,4 skipped):
- 8 个测试文件,覆盖数据模型 / 分类器 / 检测器 / 解析器 / 遮罩器 / 流水线 / API 接口
test_simulation.py:15 个 RKNN 仿真测试(mock 替换硬件依赖,x86 全量可运行)
支持平台
| 平台 | Python | 测试状态 |
|---|---|---|
| x86 / Ubuntu 22.04+ | 3.10 – 3.12 | 46 passed(4 RKNN skip) |
| RK3588 / Ubuntu 24.04 | 3.12.3 | 50 passed(含 RKNN) |
依赖版本
| 依赖 | 版本要求 |
|---|---|
| fastapi | ≥ 0.110.0 |
| uvicorn | ≥ 0.29.0 |
| pdfminer.six | ≥ 20221105 |
| pypdf | ≥ 4.0.0 |
| python-docx | ≥ 1.1.0 |
| openpyxl | ≥ 3.1.0 |
| opencv-python | ≥ 4.5.5 |
| numpy | ≥ 1.24.0 |
| rknn-toolkit-lite2 | 2.3.2(仅 RK3588) |