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>
4.2 KiB
4.2 KiB
下一步实现计划
现状总结
✅ 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 环境中安装:
conda activate MinerU
pip install ocrmypdf
统一环境说明:MinerU 和 OCRmyPDF 共用一个 conda 环境 MinerU,PC 服务器始终在该环境下运行:
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 安装:
# 方式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
安装中文语言包:
# conda 方式
conda install -c conda-forge tesseract-lang
# 或手动下载 chi_sim.traineddata 放到 tessdata 目录
然后在 pc-server/main.py 的 process_with_mineru 中,ocrpdf 分支改为调用 OCRmyPDF:
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 |
待确认
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(主机模型)