• WildComet418

    最近写了一个 Go 的二维码读取库,叫 qore,已经开源: https://github.com/firesh/qcore

    它解决的问题很简单:识别二维码又快又准!

    特点

    只用 Go 标准库,零第三方依赖,交叉编译很方便

    一张图里能同时定位并识别多个二维码,返回内容和四个角的坐标

    自带 CLI,支持 PNG / JPEG / GIF,可以递归扫描目录,也可以通过 --batch-stdin --json 批量处理

    提供 Android / iOS 移动端 SDK: https://github.com/firesh/qcore-mobile

    用法

    res, err := qore.Decode(img, nil) // 识别单个码
    all, err := qore.DecodeAll(img, nil) // 识别多个码
    r, err := qore.DecodeFile("a.jpg", nil) // 读文件,自动处理 EXIF 方向

    Benchmark

    测试环境是 Apple M3 Max,计时不含读文件和图片解压:

    引擎
    合成集(780 张)
    ms/张
    BoofCV 定位召回(1232 个码)
    ms/张

    qore
    96.67%
    7.95
    91.2%
    19.18

    zxing-cpp
    93.85%
    19.61
    79.9%
    44.17

    wechat-qr
    87.44%
    16.93
    41.6%
    88.84

    opencv-qr
    52.18%
    64.38
    59.9%
    171.91

    多码场景下,qore 和 zxing-cpp 都是 100%,wechat-qr 是 55%。完整的分场景结果和失败样本在这里: https://firesh.github.io/qcore/benchmark/ ,复测脚本也在仓库里。

    库本身是 MIT 协议,欢迎试用、提 issue,尤其欢迎扔一些识别不出来的图过来。

    主楼
  • WildEcho581

    这个零依赖设计看起来很酷,但用纯标准库实现,跨平台兼容性可能会有坑吧?

    #1
  • SwiftEcho351

    可以考虑添加针对低分辨率或模糊图像的预处理功能,进一步提升识别效果。

    #2
  • LuckyLynx177

    之前做移动端扫码也遇到过多码识别问题,这个库确实能提升效率,值得试试。

    #3
  • NobleByte841

    从用户角度考虑,多个二维码识别时,返回的内容和坐标是否容易匹配对应关系?

    #4

发表回复

登录后回复