#barcode #image #scan #upc

grocer

一个简单的 Rust 库,用于从图像中读取 UPC 条形码。

3 个版本

0.1.2 2024 年 6 月 4 日
0.1.1 2024 年 5 月 13 日
0.1.0 2024 年 5 月 13 日

#1 in #upc

BSD-2-Clause

12KB
283

grocer

一个简单的 Rust 库,用于从图像中读取 UPC 条形码。

用法

将 grocer 添加到您的 Cargo.toml 文件。

[dependencies]
grocer = "0.1.2"

示例

使用最少的代码即可从图像文件中读取条形码。

use grocer;

fn main() {
	let scan_settings = grocer::ScannerSettings { high_speed: false, };
	let barcode: grocer::Barcode = grocer::scan_upc("images/image.png", scan_settings);
	println!("Code: {}", barcode.code);
}

为什么这么慢?

扫描可能需要一段时间,主要是因为条形码可能位于图像的任何位置,并且需要首先找到它。整个图像都会被扫描,并且会检查每个白色区域是否是条形码左侧的起始静区。

要修复它,目前可以通过使用 --release 编译来加快速度。

我正在努力添加一些功能,允许用户在需要时为了速度降低可靠性。例如,如果您知道条形码始终位于图像的中心,则更改设置可以允许非常快速的扫描,因为查找条形码更容易。

帮助

帮助我!如果您有无法使用此库扫描的条形码图像,请告诉我!请将任何无法扫描的图像发送给我([email protected])。我想要确保这个库能够在合理范围内处理所有条形码,并且广泛测试各种条形码将非常有帮助。我已经拍了大量的条形码照片,并用 grocer 进行了测试。我大部分都取得了成功,但我发现一个绿色条形码有一些问题,因此我正在努力使黑白边界自动调整以捕获更多彩色印刷的条形码。

如果您想将条形码发送给我,请确保它是受支持的格式(目前为 UPC-A),并将电子邮件发送到 [email protected]

谢谢!

未来 / 进行中

  • 适当的错误处理
  • 在扫描过程中调整灰度配置文件的扫描,以扫描不同颜色制作的条形码
  • 更广泛的功能和定制,能够禁用这些功能
  • 支持实时视频流以从连接到计算机的摄像头扫描条形码
  • 支持更广泛的线性条形码(UPC-E、FNSKU、EAN、Pharmacode 等)
  • 能够读取垂直旋转的条形码

更改日志

0.1.0:初始版本 - 基本条形码扫描 - 支持UPC-A

0.1.1:更新文档 - 更新了一些文档

0.1.2:重要功能更新 - 更精确的扫描方法 - 设置选择结构 - 返回条形码信息结构 - 拒绝任何错误尺寸的条形码(UPC-A = 12 个字符)

依赖关系

~2.5MB
~52K SLoC