Some checks failed
Android CI / build (push) Has been cancelled
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
156 lines
4.3 KiB
Markdown
156 lines
4.3 KiB
Markdown
<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)
|