sudoku-cpp:基于 C++ 的高性能数独求解与图像识别网站

可用于快速求解数独及通过图像识别数独题目。项目采用 Bitmask 回溯与 SSE2 加速求解器,结合 ONNX Runtime 实现 AI 推理,支持 HTTP 服务与图像上传,具备高吞吐低延迟特性。【此简介由AI生成】

分支1Tags0
文件最后提交记录最后更新时间
17 天前
17 天前
17 天前
17 天前
17 天前
17 天前
17 天前
17 天前
17 天前
17 天前
17 天前

Sudoku Solver (C++)

基于 C++ 的高性能数独求解与图像识别网站。

📖 新同学?docs/GETTING_STARTED.md 开始,15 分钟从零到运行。

30 秒快速开始

Linux

# 1. 安装依赖 (只需一次)
yum install -y gcc-c++ cmake make opencv cpp-httplib-devel openssl-devel zlib-devel brotli-devel

# 2. 下载 ONNX Runtime + 准备模型 (只需一次)
#    详见 docs/GETTING_STARTED.md

# 3. 编译
cd sudoku-cpp && mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release && make -j$(nproc)

# 4. 运行
./sudoku-server --port 8000 --log-level warning --workers 4

Windows

# 1. 安装工具链 (只需一次)
winget install Microsoft.VisualStudio.2022.BuildTools Kitware.CMake Python.Python.3.12
# vcpkg + 依赖: 详见 docs/GETTING_STARTED.md

# 2. 编译
cd sudoku-cpp && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake
cmake --build . --config Release

# 3. 运行
cd Release && sudoku-server.exe --port 8000 --log-level warning --workers 4

浏览器打开 http://localhost:8000

性能一览

端点 延迟 吞吐 (4 workers)
GET / 首页 0.19ms 160,000 r/s
POST / 求解 0.22ms 160,000 r/s
POST / upload (300KB) ~7ms 2,325 r/s
POST / upload (3.2MB) ~30ms

16核 openEuler 24.03, wrk + xargs 多图混合压测。完整报告: docs/PERFORMANCE.md

技术栈

组件 技术
平台 Linux (openEuler/CentOS/Ubuntu) + Windows (11, VS 2022)
HTTP cpp-httplib 0.46
模板 inja v3.4 (启动时预渲染)
AI 推理 ONNX Runtime 1.18 (Session 池 + 请求批处理)
图像 OpenCV 4.5 + libjpeg-turbo
求解器 Bitmask 回溯 + SSE2 加速

文档导航

文档 适合
docs/GETTING_STARTED.md 新人必读 — 环境配置 → 首次运行
docs/ARCHITECTURE.md 系统设计、模块职责、数据流
docs/API.md 全部 7 个接口的请求/响应格式
docs/DEPLOY.md 生产部署 (systemd/Docker) + 性能调优
docs/PERFORMANCE.md 吞吐量报告、优化历程、C++ vs Python
training/README.md CNN 模型训练、反馈闭环
tests/README.md 测试与压测脚本使用说明

项目结构

sudoku-cpp/
├── src/                          # C++ 源码 (15 文件, ~2000 行)
│   ├── main.cpp                  # 入口
│   ├── server.cpp / .h           # HTTP 层
│   ├── batch_engine.cpp / .h     # 批处理推理引擎 (核心)
│   ├── recognition.cpp / .h      # 图像预处理
│   ├── correction.cpp / .h       # 透视校正
│   ├── solver_wrapper.cpp / .h   # 求解器 (LRU + 对象池)
│   └── solver_bitmask.cpp / .hpp # Bitmask 回溯求解器
├── docs/                         # 文档
├── tests/                        # 压测脚本
├── training/                     # Python 训练脚本
├── models/                       # ONNX 模型
├── onnxruntime/                  # ONNX Runtime 库 (vendored)
├── static/ + templates/          # 前端 (SPA)
└── third_party/                  # 单头库 (inja, nlohmann/json)

API 速查

方法 路径 说明
GET / SPA 首页
POST / 求解 {"asks": [81个0-9]}
POST /uploadfile/ 上传图片 → AI 识别
POST /feedback/ 保存校正 (需 --enable-feedback)
GET /feedback/{hash} 查询校正
GET /health 运行时指标
GET /static/* 静态资源

API 详情: docs/API.md

优化历程

版本 关键改动 吞吐 (upload 64c)
v1.0 基础 C++ 移植 18 r/s
v1.1 ONNX Runtime + 去 clone + 批量 tensor 62 r/s
v2.0 Session 池 + 请求批量合并 235 r/s
v3.0 TARGET=1000 + SHA256 缓存 2,325 r/s

项目介绍

可用于快速求解数独及通过图像识别数独题目。项目采用 Bitmask 回溯与 SSE2 加速求解器,结合 ONNX Runtime 实现 AI 推理,支持 HTTP 服务与图像上传,具备高吞吐低延迟特性。【此简介由AI生成】

定制我的领域