Files
Fairscan_cyy/requirements/requirements.md
MobKBK 1848a88fcf
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>
2026-06-04 17:03:18 +08:00

4.3 KiB
Raw Blame History

FairScan

此文档为项目需求文档

文件原有的离线扫描功能

  • 相机实时预览、文档边缘检测、自动裁切
  • 页面编辑(裁切/旋转/滤镜/顺序调整)
  • PDF/JPEG 导出
  • 多页扫描管理

手机网络图传功能

变成一个局域网内进行一定压缩广播的实时网络摄像头

  • 手机端通过 WebSocket 将 JPEG 帧发送到 PC
  • PC 端浏览器实时显示画面
  • 支持帧率控制(无限制 / 15fps / 10fps / 5fps
  • 丢帧策略:上一帧未发送完毕则丢弃当前帧,保证实时性
  • 连接状态显示(已连接/未连接/出错)

压缩力度可选

  • 低质量:最长边 640pxJPEG 质量 45目标 8~12fps
  • 均衡:最长边 960pxJPEG 质量 60目标 6~10fps默认
  • 高质量:最长边 1280pxJPEG 质量 75目标 5~8fps

支持将离线扫描出来的pdf通过局域网wifi网络协议发送给pc主机

已实现的核心功能

1. PDF 上传

  • 手机端在导出页可选择"仅传输到电脑"
  • 通过 HTTP multipart/form-data 上传到 PC 服务器 POST /upload/pdf
  • 上传进度与状态实时显示
  • 上传成功后返回 fileIdPC 端保存原始 PDF 到 ./uploads/ 目录

2. 上传+处理

  • 上传后自动创建处理任务:POST /tasks/process
  • 支持两种处理类型:
    • OCR PDF (processType=ocrpdf) — 复制原始 PDF 作为"处理结果"
    • Markdown (processType=markdown) — 生成模拟 .md 文件
  • 任务状态轮询queued → processing (10% → 50% → 90%) → completed
  • 处理完成后可下载产物

3. PC 端管理面板

  • 浏览器访问 /dashboard 查看管理界面
  • 统计卡片:已上传文件数、处理任务数、排队中/处理中/已完成
  • 文件列表:显示已上传的 PDF支持下载原始文件
  • 任务列表:显示所有处理任务,支持下载处理产物
  • 自动刷新(每 2 秒)
  • 导航栏:可在图传预览页和管理面板间切换

所连接的wifi可自定义可以显示出自己的IP和端口

  • 设置页可配置 PC 主机地址和端口
  • 支持手动输入 IP 和端口
  • 显示当前手机 IP 地址
  • 通过 GET /health 测试连接
  • 局域网发现mDNS/NSD的占位代码已准备待完整实现

MinerU转成markdowm便于数字化存储 已实现

  • processType=markdown 处理类型
  • 使用 MinerU aio_do_parse() 异步接口pipeline 后端
  • HF_HUB_OFFLINE=1 使用本地缓存模型(绕过 huggingface.co 不可达)
  • 输出产物:.md + images/ + {name}_result.zipZIP 含 .md + images/
  • 手机端可通过任务管理面板查看状态并下载到指定目录

进行OCRmyPDF 转成双层pdf 📌 下一步

  • processType=ocrpdf 处理类型
  • 当前:使用 MinerU 生成 layout PDF画布局框非真正 OCR
  • 目标:接入 ocrmypdf 库,生成可搜索双层 PDF
  • 接口已预留,详见 requirements/NEXT_STEPS.md

PC 端服务器

基于 Python FastAPI提供以下端点

端点 方法 功能
/health GET 健康检查
/ GET 图传预览页面
/stream WS 接收 JPEG 帧
/dashboard GET 管理面板页面
/api/dashboard GET 管理面板 JSON 数据
/upload/pdf POST 上传 PDF纯上传不处理
/tasks/process POST 创建处理任务
/tasks/{taskId} GET 查询任务状态
/tasks/{taskId}/artifacts GET 查询任务产物列表
/artifacts/{artifactId}/download GET 下载处理产物
/files/{fileId}/download GET 下载已上传的原始文件

手机端任务管理面板 已实现

  • 导出页底部 TaskPanelSection:显示所有上传处理任务
  • 任务状态:排队中 / 处理中(进度条) / 已完成 / 失败
  • 2 秒间隔后台轮询,完成后自动停止
  • 已完成任务选择下载目录SAF→ 下载产物 → 打开文件
  • Markdown 任务默认下载 ZIP.md + images/OCR PDF 任务下载 PDF

后续待实现

  • P0 OCRmyPDF 真实接入:用 ocrmypdf 库替换 MinerU layout PDF产出可搜索双层 PDF
  • P0 局域网自动发现mDNS/NSD 自动发现 PC 服务
  • 处理结果自动下载:配置开启后自动下载处理结果
  • 图传延迟/帧率实时显示