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>
146 lines
4.2 KiB
Markdown
146 lines
4.2 KiB
Markdown
# 下一步实现计划
|
||
|
||
## 现状总结
|
||
|
||
✅ **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
|
||
# 方式1:conda(推荐,与 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`(主机模型)
|