条形码检测API应用指南

在现代商业环境中,条形码的自动识别对于库存管理、物流跟踪和零售自动化至关重要。本文将介绍如何利用光学字符识别(OCR)技术读取条形码周围的文本,并根据业务需求触发相应的逻辑。将重点介绍如何使用Roboflow的条形码检测API,这是一个强大的工具,可以帮助在图像或视频中识别条形码的位置。

条形码阅读器的计算机视觉应用

计算机视觉条形码阅读器的应用非常广泛。例如,可以自动监控库存的进出情况,或者在传送带上的进出口点进行监控。本指南将展示如何使用Roboflow条形码检测API,该API能够识别图像或视频中的条形码位置。将使用pyzbar,这是一个基于Python的开源软件ZBar的实现,来读取条形码中编码的数据。

使用条形码检测API

将使用Roboflow Universe上的Barcodes对象检测模型。这个模型能够检测条形码和二维码。首先,需要创建一个免费的Roboflow账户。然后,访问Roboflow Universe上的Barcodes模型,并点击左侧边栏的Deploy链接,进入部署标签页。从这个页面,可以在浏览器中测试模型,并找到帮助开始部署模型的代码。

选择“测试集样本”中的图像或上传自己的条形码进行测试。以下是模型在产品上检测到条形码的示例:模型成功识别了条形码,这在上图中由蓝色框表示。框内是与代码相关的数字。稍后可以通过OCR模型读取这些值。

在Python中使用模型

要开始使用,首先使用pip安装Roboflow Python包:

pip install roboflow

然后,复制RoboflowUniverse部署页面底部的代码片段。这个片段看起来可能像这样:

from roboflow import Roboflow rf = Roboflow(api_key="") project = rf.workspace().project("barcodes-zmxjq") model = project.version(4).model # 在本地图像上进行推断 print(model.predict("your_image.jpg", confidence=40, overlap=30).json())

将“your_image.jpg”替换为想要扫描的图像。这段代码将加载Roboflow Python包,并找到所有存在的条形码。要可视化预测结果,请运行以下代码:

model.predict("your_image.jpg", confidence=40, overlap=30).save("prediction.jpg")

计算机上将保存一个名为“prediction.jpg”的新图像,显示条形码检测API的结果。以下是图像的结果:API成功识别了条形码。

识别条形码中的文本

接下来,需要识别条形码中的文本。将使用pyzbar来读取条形码中编码的值。可以使用以下命令安装pyzbar:

pip install pyzbar

在正在工作的Python文件末尾添加以下代码:

from pyzbar.pyzbar import decode from PIL import Image for prediction in predictions["predictions"]: x, y, w, h = prediction["x"], prediction["y"], prediction["width"], prediction["height"] x1, y1 = x-w//2, y-h//2 x0, y0 = x+w//2, y+h//2 image = Image.open("barcode.jpg") cutout = image.crop((x1, y1, x0, y0)) with tempfile.NamedTemporaryFile(suffix=".jpg") as tmp: cutout.save(tmp.name) barcode_contents = decode(Image.open(tmp.name)) print("Barcode contents:", str(barcode_contents[0].data))

在这段代码中,:

  • 导入pyzbar。
  • 遍历每个检测结果。
  • 从每个检测结果中裁剪出条形码。
  • 通过条形码阅读器运行每个条形码,并在控制台打印结果。

让在上一步使用的图像上运行脚本。代码返回:

Barcode contents: b'4001743079250'

代码成功读取了条形码。

将条形码检测API部署到生产环境

Roboflow条形码检测API可以在设备上和云端运行。对于设备部署,提供Roboflow Inference,这是一个开源包,使能够以最少的配置运行最先进的计算机视觉模型。使用Inference,可以发送HTTP请求来检索模型预测,而不是在应用程序中编写自定义的图像和模型处理逻辑。Inference针对性能进行了优化,为NVIDIA GPU、NVIDIA Jetsons、ARM CPU、x86 CPU和TensorRT加速设备提供了专门构建的Docker容器。

要了解更多关于Inference的信息,请查看Inference GitHub仓库。还可以使用原生SDK将模型部署到Web应用程序、Luxonis OAK和iOS应用程序。

将条形码检测连接到业务逻辑

下一步是将条形码检测连接到业务逻辑。Roboflow维护了一个名为supervision的开源Python包,其中包含一系列用于编写计算机视觉逻辑的实用工具。supervision被全球各地的视觉团队用来使用计算机视觉解决问题。使用supervision,可以:

  • 根据置信度、边界框区域等过滤检测结果;
  • 计算指定区域内的对象数量;
  • 查看边界框和分割掩码等;

要了解更多关于supervision的信息,请查看supervision文档。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485