Files
qiurui cbfe4a23dc feat: info-privacy PII detection service with frame analysis support
- 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
2026-02-28 17:33:11 +08:00

131 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Info-Privacy
基于 Rockchip RKNN NPU 的文档隐私安全处理 REST API 服务,支持 RK3588 板端和 x86 双平台。
**两阶段工作流**:先 `analyze`(返回 JSON 检测报告)→ 用户决策 → 再 `redact`(返回处理后文档)。
---
## 支持的文档格式
| 格式 | 解析方式 |
|------|---------|
| PDF(含文字层) | pdfminer.six |
| PDF(扫描件) | PaddleOCR RKNN |
| .docx | python-docx |
| .xlsx | openpyxl |
| JPG / PNG | PaddleOCR RKNN |
## 可检测的隐私类型
| 类型 | 检测方式 | 安全等级 |
|------|---------|---------|
| `id_card` | Regex | high |
| `phone` | Regex | high |
| `bank_card` | Regex | high |
| `face` | MediaPipe RKNN | high |
| `email` | Regex | medium |
| `name` | 规则词典 NER | medium |
| `address` | 规则词典 NER | medium |
| `license_plate` | Regex | medium |
---
## 快速开始
### x86 开发环境
```bash
# 初始化虚拟环境
bash setup_venv.sh
source venv/bin/activate
# 启动服务
make server # http://0.0.0.0:8000
# 端到端验证(需先启动服务)
make verify
```
### RK3588 板端
```bash
# 同步代码
rsync -av /data/rockchip/info-privacy/ pi@192.168.0.127:/home/pi/Desktop/info-privacy/
# 板端启动
ssh pi@192.168.0.127 "clashon && clashproxy on && \
cd /home/pi/Desktop/info-privacy && \
bash setup_venv.sh && source venv/bin/activate && \
uvicorn info_privacy.api.main:app --host 0.0.0.0 --port 8000"
```
---
## API 使用示例
### 检测隐私信息
```bash
curl -X POST http://localhost:8000/api/v1/analyze \
-F "file=@document.docx"
```
响应:
```json
{
"doc_id": "uuid",
"classification": "normal",
"blocked": false,
"warning": null,
"entities": [
{"id": "e1", "type": "id_card", "value": "110101199001011234",
"page": 1, "bbox": [10, 20, 200, 40], "layer": "text", "security_level": "high"}
],
"summary": {"id_card": 1}
}
```
### 遮罩指定类型
```bash
curl -X POST http://localhost:8000/api/v1/redact \
-F "file=@document.docx" \
-F 'config={"redact_types":["id_card","phone"]}' \
-o redacted.docx
```
响应 Body 为处理后文档,Header `X-Security-Report` 包含遮罩统计。
### 其他端点
```bash
GET /api/v1/health # 健康检查
GET /api/v1/types # 支持的隐私类型列表
```
---
## 遮罩安全保证
系统根据文档类型**自动选择最安全策略**,用户无需指定:
| 文档类型 | 遮罩方式 | 安全保证 |
|---------|---------|---------|
| PDF(文字层)/ Word / Excel | 删除文字节点(text_replace | 字节级安全 |
| 图像 / 扫描 PDF | OpenCV 黑色矩形覆盖(image_mask | 图像级安全 |
> **重要**PDF 含文字层时,即使 `redact_types` 包含 `face`,也强制使用 text_replace 防止文字层信息泄露。
---
## RKNN 模型路径
| 模型 | 路径 |
|------|------|
| PaddleOCR 检测 | `/data/rockchip/paddle_ocr/models/rknn/PP-OCRv4/det/` |
| PaddleOCR 识别 | `/data/rockchip/paddle_ocr/models/rknn/PP-OCRv4/rec/` |
| MediaPipe 人脸 | `/data/rockchip/mediapipe/models/rknn/` |
详见 [DEVELOP.md](DEVELOP.md) · [RELEASE.md](RELEASE.md)