Files
Fairscan_cyy/README.md
MobKBK f6e09689d6
Some checks failed
Android CI / build (push) Has been cancelled
添加软件架构图到 README
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-04 17:37:56 +08:00

156 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<p align="center">
<img src="app/src/main/res/drawable/icon.png" alt="FSBC icon" width="120" />
</p>
<h1 align="center">FAIRSCAN_SURPORT_BY_CYY</h1>
<h3 align="center"><b>FSBC</b> — 扫描 + 图传 + 文档处理一体化</h3>
<p align="center">
基于 <a href="https://github.com/pynicolas/FairScan">FairScan</a> 增强,<br/>
新增局域网实时图传、PDF 上传、MinerU / OCRmyPDF 云端处理、手机端任务管理面板。
</p>
<p align="center">
<img src="docs/main_tree.png" alt="FSBC 架构图" width="800" />
</p>
---
## 新增功能CYY 增强版)
### 实时网络图传
- 手机通过 WebSocket 将 JPEG 帧发送到 PC
- PC 浏览器实时显示画面(`http://<host>:2026`
- 支持帧率控制(无限制 / 15fps / 10fps / 5fps
- 三档压缩质量可选(低 / 均衡 / 高)
### PDF 上传 + 云端处理
- 导出页一键上传 PDF 到 PC 服务器
- 三种模式:仅传输 / 上传并处理 OCR PDF / 上传并处理 Markdown
- 上传进度实时显示
### MinerU → Markdown 数字化
- 真实接入 MinerU pipeline 后端v3.0.9
- 将扫描 PDF 转为结构化 Markdown + 图片
- 自动打包 `{name}_result.zip`.md + images/
- GPU 加速RTX 4060 8GB约 3~8 秒/页
### OCRmyPDF → 可搜索双层 PDF
- 接入 OCRmyPDF v15.4.4,生成真正可搜索的双层 PDF
- Tesseract 5.5.2 OCR 引擎,支持中文/英语/日语/韩语
- Ctrl+F 搜索、屏幕阅读器无障碍
### 手机端任务管理面板
- 导出页底部显示所有上传处理任务
- 四种状态:排队中 / 处理中(进度条) / 已完成 / 失败
- 2 秒轮询自动更新状态,完成后可下载到指定目录
- SAF 目录选择器,下载进度实时显示
### PC 管理面板
- 浏览器访问 `http://<host>:2026/dashboard`
- 文件列表 + 任务列表 + 统计卡片
- 支持下载原始文件和处理产物
- 自动刷新
---
## 原版功能FairScan
- **清晰无干扰的界面**,一键扫描
- **自动文档检测**:基于自定义分割模型 (LiteRT)
- **自动透视校正** + **图像增强** (OpenCV)
- **快速 PDF 生成**,无需手动调整
- **完全离线** — 原版无网络权限
- **最小权限**,无跟踪,无广告
- **开源** GPLv3
---
## PC 服务器部署
**详细部署指南**[pc-server/README.md](pc-server/README.md)
### 快速启动(环境已配好)
```bash
conda activate MinerU
cd pc-server
python main.py
```
服务启动在 `http://0.0.0.0:2026`
### 环境一览
| 组件 | 版本 | 用途 |
|------|------|------|
| Python | 3.10 | conda 环境 `MinerU` |
| PyTorch | 2.6 + CUDA 12.4 | GPU 推理 |
| MinerU | git clone + pip install -e | markdown 处理 |
| OCRmyPDF | v15.4.4 | 可搜索双层 PDF |
| Tesseract | 5.5.2 + chi_sim/eng | OCR 引擎 |
| Ghostscript | 10.07.1 | PDF 后处理 |
### API 端点
| 端点 | 方法 | 功能 |
|------|------|------|
| `/health` | GET | 健康检查 |
| `/stream` | WS | 接收图传帧 |
| `/` | GET | 图传预览页面 |
| `/dashboard` | GET | 管理面板 |
| `/api/dashboard` | GET | 管理面板 JSON |
| `/upload/pdf` | POST | 上传 PDF |
| `/tasks/process` | POST | 创建处理任务 |
| `/tasks/{taskId}` | GET | 查询任务状态 |
| `/tasks/{taskId}/artifacts` | GET | 查询产物列表 |
| `/artifacts/{id}/download` | GET | 下载产物 |
| `/files/{fileId}/download` | GET | 下载原始文件 |
---
## 手机端配置
1. 进入设置 → 网络协作
2. 填写 PC 主机 IP 和端口(默认 2026
3. 点击"测试连接"验证
4. 扫描文档后在导出页选择上传/处理
---
## 技术栈
| 层 | 技术 |
|----|------|
| Android UI | Jetpack Compose |
| 相机 | CameraX |
| 文档检测 | LiteRT + 自定义分割模型 |
| 图像处理 | OpenCV |
| PDF 生成 | PDFBox-Android |
| 网络 | OkHttp 4.12 + WebSocket |
| PC 服务 | Python FastAPI + Uvicorn |
| Markdown 处理 | MinerU (pipeline backend) |
| OCR PDF | OCRmyPDF + Tesseract + Ghostscript |
---
## 构建
```bash
# Android APK
./gradlew clean check assembleRelease
# Android App Bundle
./gradlew clean check :app:bundleRelease
```
## 许可
本项目基于 FairScan (GPLv3) 修改。详见 [LICENSE](LICENSE)。
## 致谢
- 原项目 [FairScan](https://github.com/pynicolas/FairScan)
- [MinerU](https://github.com/opendatalab/MinerU)
- [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF)