初步完成框架
Some checks failed
Android CI / build (push) Has been cancelled

- 实时图传:WebSocket JPEG 帧发送 + 帧率控制 + PC 浏览器预览
- PDF 上传与处理:上传/处理分离,支持 ocrpdf 和 markdown 两种类型
- MinerU 真实接入:markdown 处理 + images ZIP 打包
- OCRmyPDF 接入:ocrpdf 生成可搜索双层 PDF
- 手机端任务管理面板:轮询状态 + SAF 目录选择下载
- PC 管理面板:/dashboard 文件与任务管理
- 网络层:OkHttp 客户端、WebSocket 图传、局域网发现占位

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
MobKBK
2026-06-04 17:03:18 +08:00
parent dd8002009d
commit 1848a88fcf
72 changed files with 6281 additions and 163 deletions

145
requirements/NEXT_STEPS.md Normal file
View File

@@ -0,0 +1,145 @@
# 下一步实现计划
## 现状总结
**P1 实时图传**:已完成
**P2/P3 上传与任务处理**:已完成
**MinerU 真实接入**已完成markdown 处理 + ZIP 打包)
**任务管理面板**:已完成(手机端轮询 + 下载到指定目录)
### MinerU markdown 已实现
- 使用 `aio_do_parse()` 异步接口pipeline 后端
- `HF_HUB_OFFLINE=1` 使用本地缓存模型
- 输出 `.md` + `images/` + `{name}_result.zip` 三种 artifact
### 任务管理面板已实现
- 手机端 `TaskPanelSection`:排队中 / 处理中 / 已完成 / 失败 四种状态
- 2 秒轮询 PC 任务状态,自动更新 UI
- SAF 目录选择 → 下载到指定目录 → 打开文件
### 当前 ocrpdf 的局限性
⚠️ 当前 `processType=ocrpdf` 使用 MinerU 的 `f_draw_layout_bbox=True` 生成 layout PDF在 PDF 上画布局框),**不是真正的 OCR 双层 PDF**。
真正的 OCRmyPDF 应该:
- 保留原始 PDF 的视觉外观
- 在图像层上叠加透明文字层text layer
- 结果可通过 Ctrl+F 搜索文字
- 文件可被屏幕阅读器朗读
---
## 下一步OCRmyPDF 真实接入 🔥
### 目标
`ocrmypdf` 库替换当前 MinerU 的 layout PDF 生成,产出真正的可搜索双层 PDF。
### 为什么需要 OCRmyPDF 而不是继续用 MinerU 做 ocrpdf
| 特性 | MinerU layout PDF | OCRmyPDF |
|------|-------------------|----------|
| 可搜索文字 | ❌ 仅图片上的框 | ✅ 透明文字层 |
| 保留原始外观 | ❌ 重新渲染 | ✅ 原样保留 |
| 文件大小 | 较小 | 完整保留原 PDF |
| 用途 | 可视化版面分析 | 归档、检索、无障碍 |
### 实现方案
`ocrmypdf` 是一个 Python 命令行工具/库,在 MinerU 的 conda 环境中安装:
```bash
conda activate MinerU
pip install ocrmypdf
```
**统一环境说明**MinerU 和 OCRmyPDF 共用一个 conda 环境 `MinerU`PC 服务器始终在该环境下运行:
```bash
conda activate MinerU
cd pc-server
python main.py
```
### 环境信息
| 项目 | 值 |
|------|-----|
| Conda 环境名 | `MinerU` |
| 环境路径 | `D:/ProgramData/miniconda3/envs/MinerU/` |
| Python | 3.10.20 |
| PyTorch | 2.6.0+cu124 |
| CUDA | 12.4 |
| GPU | RTX 4060 Laptop (8 GB VRAM) |
| MinerU | 3.0.9(已接入 markdown |
| OCRmyPDF | 15.4.4(✅ 已安装,源码 `F:/datasets_rm/ocRmypdf`v15.4.4 标签) |
| Tesseract | ❌ 待安装OCRmyPDF 必需依赖) |
| 用途 | MinerU markdown 处理 + OCRmyPDF 双层 PDF 处理 |
### 安装 Tesseract
OCRmyPDF 依赖 Tesseract 做实际 OCR 文字识别。Windows 安装:
```bash
# 方式1conda推荐与 MinerU 同一环境)
conda activate MinerU
conda install -c conda-forge tesseract
# 方式2手动安装
# 下载安装包https://github.com/UB-Mannheim/tesseract/wiki
# 安装后确认:
tesseract --list-langs # 应包含 chi_sim, eng
```
安装中文语言包:
```bash
# conda 方式
conda install -c conda-forge tesseract-lang
# 或手动下载 chi_sim.traineddata 放到 tessdata 目录
```
然后在 `pc-server/main.py``process_with_mineru` 中,`ocrpdf` 分支改为调用 OCRmyPDF
```python
import ocrmypdf
# ocrpdf 分支
ocrmypdf.ocr(
upload_path_src, # 输入 PDF
str(output_dir / f"{base_name}_ocr.pdf"), # 输出 PDF
language="chi_sim", # 中文简体
output_type="pdf",
skip_text=True, # 跳过已有文字层
deskew=True, # 纠偏
clean=True, # 清理
)
```
输出:真正的可搜索双层 PDF。
### 语言映射
| MinerU lang | OCRmyPDF language |
|-------------|-------------------|
| `ch` | `chi_sim` |
| `en` | `eng` |
| `japan` | `jpn` |
| `korean` | `kor` |
### 待确认
- [x] `ocrmypdf` 已安装到 MinerU conda 环境v15.4.4
- [ ] Tesseract OCR 引擎已安装
- [ ] Tesseract 语言包(`chi_sim`, `eng`)已安装
---
## P0局域网发现与连接校验待排期
### 目标
让手机能够自动发现同一局域网中的 FairScan PC 服务。
### 已有占位文件
- `network/discovery/LanServiceDiscovery.kt`(接口定义)
- `network/discovery/DiscoveryState.kt`(状态模型)
- `network/discovery/DiscoveredHost.kt`(主机模型)