# 下一步实现计划 ## 现状总结 ✅ **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`(主机模型)