QRacer 是一个面向柔印印前工作的 Windows 桌面工具,用于把二维码、条码截图、拍照图或屏幕局部截图还原成可用于制版的 SVG 矢量文件。
它的目标不是“能扫码就行”,而是尽量让码点位置与原图保持 1:1 几何一致。应用会在导入后自动识别、校正、采样并生成预览,用户可以通过左右对比和差异高亮检查结果,再导出 SVG 或复制 SVG 文本到剪贴板后粘贴进 Illustrator。
- 支持从剪贴板粘贴图片、打开本地图片、拖放图片到窗口、框选截屏导入。
- 自动识别二维码、一维条码、Data Matrix 码、微信小程序码和抖音码。
- 支持手动指定码类型,避免自动识别误判。
- 支持左右对比、差异高亮和状态栏差异数量提示。
- QR、一维条码和 Data Matrix 支持自定义生成;已解码内容会自动带入数据区并实时生成。
- 自定义生成会按码类型过滤字符、限制数据长度,并为 EAN/UPC 等零售条码自动计算校验位。
- 支持导出 SVG 文件,也支持直接复制 SVG 文本到剪贴板。
- QR、Data Matrix、小程序码和抖音码均提供手动校准入口,用于校正不稳定的拍照图。
- 纯 Rust 实现,不依赖 OpenCV,目标是轻量单文件分发。
| 码类型 | 处理策略 | 说明 |
|---|---|---|
| 二维码 (QR) | 解码重生成 + 8 掩膜对比;失败时网格像素匹配 | 支持标准、微信、小红书等外观输出 |
| 一维条码 | 解码后按候选编码重生成;全部不匹配时一维网格采样 | 支持 Code 128/39/93、EAN-13/8、UPC-A/E、ITF、Codabar;输出静区、加长守护条和人眼可读文字 |
| Data Matrix 码 | 解码后依次尝试传统、Compact、C40 和原始码字重建;全部不匹配时网格采样 | 支持 ECC 200 方形/矩形符号,保留回车、空格、Tab、FNC、Macro 等隐藏数据 |
| 微信小程序码 | 径向网格采样 | 私有协议,仅做几何还原 |
| 抖音码 | 同心圆网格采样 | 私有协议,仅做几何还原 |
- Windows。
- Rust 2024 edition 对应的稳定工具链。
安装 Rust 后,在项目根目录运行:
cargo run发布构建:
cargo build --release生成的可执行文件位于:
target/release/qracer.exe
-
启动程序后,用以下任一方式导入图片:
- 点击
粘贴 (Ctrl+V)或直接按Ctrl+V粘贴剪贴板图片。 - 点击
打开...选择 PNG/JPG/BMP/WebP 等图片。 - 从资源管理器把图片拖到程序窗口,松开鼠标后自动读取。
- 点击
截屏,框选屏幕中的码图区域。
- 点击
-
等待自动处理完成。左侧显示原图,右侧显示矢量化结果或差异预览,状态栏会显示识别结果、模块/像素差异等信息。
-
如识别错误,可在工具栏
码类型下拉框中改为手动类型,然后重新处理当前图片。 -
检查结果:
- QR 可切换 0-7 掩膜、自动选最佳,或使用
网格像素匹配。 - 一维条码会显示实际采用的解码重建或一维网格采样路径;EAN-13 会按原图判断右侧
>静区标记。 - Data Matrix 会显示传统、最短路径、C40、原始码字重建或网格像素匹配中的实际命中路径。
- Data Matrix、小程序码、抖音码可勾选
显示差异。 - 差异颜色含义:红色表示原图有而生成图没有,蓝色表示原图没有而生成图有。
- QR 可切换 0-7 掩膜、自动选最佳,或使用
-
如果拍照图自动校正不准,点击
手动校准:- 拖动整图移动。
- 拖动边框或边中点小方块做水平/垂直缩放。
- 拖动四角做缩放;按住
Shift拖边框或四角可等比例缩放。 - 按住
Ctrl拖动四角才做自由透视变换。 - 用滚轮微调缩放。
- 用旋转手柄或
逆时针 1°/顺时针 1°微调。 - QR 可在弹窗内选择版本;Data Matrix 可选择 ECC 200 符号尺寸;抖音码可选择无框版/黑框版参考线。
- 可用
Ctrl+Z或撤销回退。 - 对齐参考线后点击
应用校准重新采样。
-
确认结果后:
- 点击
导出 SVG保存文件。 - 或点击
复制到剪贴板,再到 Illustrator 中粘贴为矢量对象。
- 点击
识别结果为 QR、一维条码或 Data Matrix 时,左侧可从 原图 切换到 自定义生成。如果原图已经解码,数据区会预填当前内容;用户可直接查看、修改并实时生成右侧结果。
- QR:支持 0-7 共 8 种掩膜,并支持标准、微信、小红书、企业微信外观切换。
- 一维条码:可选择 Code 128、Code 39、Code 93、EAN-13、EAN-8、UPC-A、UPC-E、ITF 和 Codabar。
- Code 128:支持
A / B / C / Auto / Custom。Custom 数据必须以\STARTA、\STARTB或\STARTC开头,可使用\FNC1-\FNC4、\CODEA-\CODEC、\SHIFT及 ASCII 控制符;完整语法参考docs/code 128种类.txt。 - EAN/UPC:数据区只输入不含校验码的数据位,程序自动生成最后一位校验码;EAN-13 可切换是否显示右侧
>标记。 - Data Matrix:支持
传统自动 / 最短路径(Compact) / 强制 C40三种文本生成策略,切换策略不会清空数据。输入限制为 ISO-8859-1,最长 1558 个字符。 - 不支持的字符会在输入阶段过滤;生成失败时状态栏显示中文原因。
cargo build
cargo run
cargo test
cargo fmt
cargo clippy --no-deps -- -D warnings耗时较长的抖音码和 Data Matrix 拍照诊断测试默认标记为 ignored,具体命令和样本约定见 docs/IMPLEMENTATION_PLAN.md 的对应阶段及附录。
src/
├── app.rs 应用状态、后台处理、导入/导出流程
├── image_io.rs 剪贴板读图、文件打开、纹理转换
├── screen_capture.rs Windows 框选截屏
├── detect/ 码类型识别和定位点检测
├── pipeline/ 预处理、透视校正、网格推算
├── codec/ QR/条码/Data Matrix/小程序码/抖音码采样与生成
├── vector/ SVG 输出和差异预览
└── ui/ egui 界面组件
更多实现细节见:
docs/ARCHITECTURE.md:架构、数据流、算法和技术决策。docs/IMPLEMENTATION_PLAN.md:阶段任务、验收标准和路线图。
- 本项目当前仅面向 Windows。
- 小程序码和抖音码协议未公开,工具只做几何采样还原,不做私有 payload 逆向。
- Data Matrix 会优先解码重建并逐模块核对;只有所有重建候选均不匹配时才保留 ECC 200 网格采样结果。
- SVG 用于印前生产前,请务必用差异高亮、扫码和人工叠图检查确认。
- 软件开源免费,许可证见
LICENSE。
本开源项目已链接并认可 LINUX DO 社区。
本项目完全免费开源,无广告无付费功能。如果觉得有用,给作者加个鸡腿🍗,支持持续开发。

