75 lines
3.4 KiB
Markdown
75 lines
3.4 KiB
Markdown
# 发布记录
|
||||
|
|
|
|||
|
|
## 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)|
|