在现代商业环境中,条形码的自动识别对于库存管理、物流跟踪和零售自动化至关重要。本文将介绍如何利用光学字符识别(OCR)技术读取条形码周围的文本,并根据业务需求触发相应的逻辑。将重点介绍如何使用Roboflow的条形码检测API,这是一个强大的工具,可以帮助在图像或视频中识别条形码的位置。
计算机视觉条形码阅读器的应用非常广泛。例如,可以自动监控库存的进出情况,或者在传送带上的进出口点进行监控。本指南将展示如何使用Roboflow条形码检测API,该API能够识别图像或视频中的条形码位置。将使用pyzbar,这是一个基于Python的开源软件ZBar的实现,来读取条形码中编码的数据。
将使用Roboflow Universe上的Barcodes对象检测模型。这个模型能够检测条形码和二维码。首先,需要创建一个免费的Roboflow账户。然后,访问Roboflow Universe上的Barcodes模型,并点击左侧边栏的Deploy链接,进入部署标签页。从这个页面,可以在浏览器中测试模型,并找到帮助开始部署模型的代码。
选择“测试集样本”中的图像或上传自己的条形码进行测试。以下是模型在产品上检测到条形码的示例:模型成功识别了条形码,这在上图中由蓝色框表示。框内是与代码相关的数字。稍后可以通过OCR模型读取这些值。
要开始使用,首先使用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))
在这段代码中,:
让在上一步使用的图像上运行脚本。代码返回:
Barcode contents: b'4001743079250'
代码成功读取了条形码。
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文档。