
C++
Scetia 文档扫描
shjk0817/scetia-report 开源项目
项目简介
shjk0817/scetia-report 开源项目
说明
Scetia Report — 文档扫描管理
Qt 6 / C++20 桌面应用,支持图片与 PDF 导入、摄像头拍摄、ZXing 二维码识别,以及基于 SQLite 的文档列表管理。
功能
- 手动上传:JPG/PNG/BMP/WebP/PDF(文件对话框 + 拖放)
- 摄像头拍摄:实时预览、拍照后自动导入;摄像头设备在「设置」页选择(导入页不再提供设备下拉)
- 实时文档检测:多候选评分优先纸张外缘,低频霍夫直线兜底;无目标约 1 秒后自动清空
- 实时二维码:YOLO 定位与 ZXing 解码解耦,蓝框稳定显示、文本稍后填充;推荐模型
qrdet-n.onnx(速度与精度平衡) - 预览缩放:文档列表与导入预览支持「适应窗口」及临时缩放(工具栏 适应/−/%/+,可滚动查看)
- 二维码识别:每页解码并保存原始 QR 文本
- 报告抓取:解析
报告编号|验证码格式二维码,内网 SQL 优先、协会网页回退 - 文档管理:列表、缩略图预览、按文件名/QR 搜索、删除
依赖
- Qt 6.5+(Core, Gui, Quick, QuickControls2, Qml, Multimedia, Pdf, Sql, Test)
- CMake 3.21+
- MSVC 2019+(Windows)
- ZXing-cpp v2.3.0(
third_party/zxing-cpp,junction 至 report-cpp 的 vendored 副本,或自行 clone)
报告字段抓取
二维码格式:Report_ID|IdentifyingCode(如 GC01-202604318|112207186227)
导入后自动抓取并入库,预览区展示:
| 字段 | 来源 |
|---|---|
| 委托编号 | ConSign_ID |
| 报告编号 | Report_ID |
| 验证码 | IdentifyingCode |
| 样品名称 | Item_Sample.SampleName |
| 工程名称 | WT_Consign.ProJect_Name |
| 标段 | Contract_BasicInfo.ProjectAttachName |
| 报告日期 | Print_Report.Report_CreateDate |
| 项目联系人 | Contract_BasicInfo.DetectionUnitLinkMan |
抓取策略:仅内网 SQL(10.1.228.188 / scetiamis0718)。自动尝试 ODBC Driver 18/17 或 SQL Server 驱动。 | |
| 连接串环境变量(可选,覆盖默认): | |
| 预览区可点 重新抓取 手动重试。 |
摄像头与实时识别
| 项目 | 说明 |
|---|---|
| 摄像头选择 | 设置 → 摄像头设备;保存后导入页预览自动使用所选设备 |
| 默认回退 | 未配置或设备不可用时,使用系统默认摄像头 |
| 文档绿框 | 优先检测纸张外缘;轮廓不足时启用霍夫直线兜底 |
| 二维码蓝框 | YOLO 约 200ms 定位一次,ZXing 约 400ms 解码;无 YOLO 时约 800ms 全图 ZXing 回退 |
| 1 秒清空 | 纸张或二维码移出画面约 1 秒后,实时叠加层与识别结果自动清空 |
| 推荐模型 | models/qrdet-n.onnx(qrdet-s 更快、qrdet-m/l 更准但更慢) |
预览缩放
- 适应:按窗口完整显示当前页
- − / +:在适应尺寸基础上临时放大或缩小
- 百分比:显示当前缩放比例;切换文档或页面时自动恢复适应
开发调试(推荐)
不必每次全量编译。 日常开发用 Debug + 开发模式:
| 修改内容 | 需要做什么 |
|---|---|
仅 QML(src/app/ui/qml/) | 保存后重启应用即可,无需编译 |
| **C |