一款集成 OCR 文字识别、多格式文件转换(图转 Word/Excel/PDF)、分布式用户认证、文件备份与历史管理、智能物体计数 等功能的综合扫描处理工具
一款集成 OCR 文字识别、多格式文件转换(图转 Word/Excel/PDF)、分布式用户认证、文件备份与历史管理、智能物体计数 等功能的综合扫描处理工具。项目采用 C++(后端)+ Qt(客户端)技术栈,支持高并发服务、本地 / 云端协同处理,以及全局快捷键、截图识别等便捷操作。
核心功能模块[td]模块 | 核心能力 | 界面与交互 | 自定义控件(CardView、RoundProgressBar 等)、Flow 动态布局、系统托盘、全局快捷键(Alt+S 截图) | OCR 识别 | 基于 PaddleOCR/OpenCV 的文字提取、截图识别(共享内存传输,无文件 I/O 开销) | 文件转换 | 图片转 Word/Excel/PDF、PDF 水印添加、卡片(矩形)识别 | 物体计数 | 基于 OpenCV 分水岭算法的物体计数,支持边缘 / 区域两种标记模式,实时显示标记结果 | 证件检测 | 基于 YOLOv8-Pose 训练自定义卡片角点定位模型,并用opencv透视矫正 | 用户认证 | 注册 / 登录 / 密码重置(邮箱验证码 + Redis 存储)、密码 BCrypt 哈希加密 | 分布式服务 | GateServer(登录网关)、VerifyServer(验证码服务)、ResServer(资源备份)、StatusServer(负载均衡) | 数据存储 | MySQL(用户 / 文件元数据)、Redis(验证码 / Token)、SQLite(本地操作历史)、连接池管理 | 搜索与管理 | Trie 树自动补全、Jieba 中文分词搜索(工具 / 历史记录 / 备份页面)、分页加载历史记录 | 技术栈[td]分类 | 技术 / 框架 | 后端开发 | C++17、Asio(异步网络)、gRPC(服务通信)、Protobuf(数据序列化)、MySQL/Redis/SQLite | 客户端开发 | Qt 5/6(界面、网络、IPC)、Qt Pdf 模块(水印)、共享内存 IPC | 识别与算法 | OpenCV(图像处理)、PaddleOCR(文字识别)、YOLOv8-Pose(角点检测)、Jieba(中文分词)、Trie 树(搜索补全) | 性能优化 | IO 线程池(TCP/HTTP 分离)、无锁日志队列、数据库连接池、文件分片传输(64KB 块) | 项目开发历程(2025.2 - 2025.8)1. 基础构建阶段(2025.2.20 - 2025.3.20)- 实现 imgeditor 窗口与自定义控件(CardView、Panel、RoundProgressBar 等)
- 开发动态布局 FlowLayout,支持窗口大小自适应
- 初步实现 tasklist 窗口(后续弃用)
2. 服务端核心开发(2025.3.28 - 2025.4.1)- 基于 Asio 实现 CServer 服务端,支持 IO 线程池(提升并发)
- 开发 MySQL 连接池 + DAO/Mgr 层(自动管理连接,简化事务调用)
- 实现 HTTP/TCP 双协议支持,修复端口冲突问题(独立 acceptor 分离服务)
- 升级日志系统为无锁队列,支持单例模式与格式化输出
3. 用户认证与客户端功能(2025.4.2 - 2025.4.14)- Qt 客户端:HttpClient 单例、注册 / 登录 / 密码重置界面
- 服务端:用户注册 / 登录事务、BCrypt 密码哈希(异步计算,避免阻塞)
- 新增 Verify 服务:邮箱验证码(SMTP)+ Redis 过期存储(10 分钟有效)
4. OCR 与文件处理(2025.4.16 - 2025.6.17)- 集成 OpenCV/PaddleOCR,实现卡片识别、文字提取功能
- 优化架构:Qt 本地进程池处理 OCR 任务,结果云端备份(减少网络传输)
- 实现图片转 Word/Excel/PDF 核心功能,修复排版与编码问题
5. 交互优化与搜索(2025.6.19 - 2025.7.26)- 新增选区截图(支持箭头 / 图形标注)、全局快捷键(Alt+S 触发)
- 开发搜索引擎框架:Trie 树自动补全、Jieba 中文分词(支持多页面精准搜索)
- 优化单例模板(支持有参构造)、修复全局热键崩溃问题
6. 数据管理与分布式(2025.7.27 - 2025.8.18)- SQLite 本地历史记录:file_info 表存储操作记录,BaseDao 封装 CRUD 接口
- 分布式架构:拆分 GateServer/VerifyServer/ResServer,gRPC 跨服务通信
- 文件分片传输:上传 / 下载分块(64KB),支持跨 ResServer 文件转发(grpc 内部流式传输)
- 验证码服务重构:Node.js 实现 SMTP 邮件发送(解决中文乱码问题)
7.物体计数功能(2025.8.19 - 2025.8.21)(1)物体计数功能(2025.8.19 - 2025.8.21)- 算法实现:基于 OpenCV 分水岭算法,支持边缘检测和区域标记两种模式
- 性能优化:处理速度从 9000ms 降至 280ms(优化标记计算逻辑)
- 交互设计:
- 新增 CountResItem 图元,实时显示标记结果且不影响原图
- 支持降噪参数调节,计算结果缓存(避免重复运算)
- 子线程运算(moveToThread),防止阻塞 UI
(2)证件检测功能(2025.8.22-8.24)- 模型训练:基于 YOLOv8-Pose 预训练模型(yolov8s-pose.pt),训练自定义卡片角点定位模型
- 数据集:500+ 张卡片图片,标注四角关键点
- 训练参数:epoch=50、imgsz=640、batch=16,启用数据增强
- 与Python端交互模式:Qt端使用QProcess传参调用py脚本实现识别
- 效果验证:训练曲线收敛正常,验证集角点定位准确率满足需求(示例图见项目路径 keypoint_detection/card_corner_detection/exp5)
关键架构设计分布式服务架构
一款集成 OCR 文字识别、多格式文件转换(图转 Word/Excel/PDF)、分布式用户认证、文件备份与历史管理、智 ...
快速启动1. 环境依赖- 编译工具:MSVC 2019+/GCC 9+(支持 C++17)
- 依赖库:Qt 5.15+/6.x、Asio 1.24+、MySQL 8.0、Redis 6.0、PaddleOCR 2.6+、Ultralytics(YOLOv8)
- 其他:Jieba 分词库、gRPC 1.50+、Protobuf 3.21+
2. 部署步骤- 服务端启动:
- 启动 Redis/MySQL,创建用户 / 文件元数据表(见 2025.7.28 章节 SQL 脚本)
- 启动 StatusServer(负载均衡)、VerifyServer(Node.js 脚本)、ResServer(资源服务)、GateServer(登录网关)
- 客户端启动:
- Qt 编译客户端项目,配置服务端地址(config.json)
- 运行客户端,通过邮箱注册账号,登录后使用 OCR / 文件转换功能
3. 常用功能触发- 截图识别:按下 Alt+S 选择区域,自动识别文字
- 文件转换:导入图片,选择「转 Word/Excel/PDF」,结果保存在本地 / 云端
- 历史记录:在「历史页面」查看本地操作记录,支持关键词搜索

链接: https://pan.baidu.com/s/1DUEPC8FRFkHX9ogZ-0ITkw
提取码下载:
|