跳至页脚内容
条形码工具

QR Code Machine Learning: A Tutorial for Developers

快速响应(QR)码已成为现代社会的重要组成部分,革新了信息共享和访问的方式。 这些二维条形码由黑白方格矩阵组成,可以通过智能手机相机扫描以快速检索存储的信息,例如 URL、联系方式、网站 URL、产品详细信息等。 然而,随着技术的发展,QR 码的功能也在不断提升。 机器学习(ML)已成为增强 QR 码生成、识别和解码过程的强大工具,从而改善用户体验并提高功能性。

QR 码和条形码的广泛使用彻底改变了信息和数据交换的世界。 这些二维代码提供了快速访问数字内容的途径,并在各个行业中发挥了多种用途。 然而,区分 QR 码和条形码可能具有挑战性,尤其是在处理各种代码时。 通过使用机器学习(ML)和 .NET/C# 框架的强大功能,开发人员可以创建一个智能系统,准确分类 QR 码和条形码,简化数据处理并提升用户体验。 集成 IronBarcode 的解码功能进一步增强了解决方案,使从识别的代码中准确提取内容成为可能。

在本文中,我们将训练模型,将给定输入分类为条形码或 QR 码,然后使用 IronBarcode 解码输入代码。

使用 ML.NET 模型生成器进行 QR 码分类

模型生成器是 Visual Studio 中的一个集成工具,通过提供直观的界面简化构建机器学习模型的过程。 我们将使用模型生成器创建一个分类模型,以区分 QR 码和条形码。 分类完成后,我们将集成 IronBarcode 解码识别的代码。

步骤 1:数据收集

训练任何类型的模型的第一步就是数据收集。 我们需要数据来训练模型。 我从 Kaggle 下载了数据。 您可以根据自己的喜好从任何来源下载。 下载数据集后,创建一个主目录并将两个数据集放入该主目录中。 数据被组织为两个子目录:

  1. 条形码
  2. QR 码

QR 码机器学习(开发者教程):图 1

接下来的步骤是打开 Visual Studio 并创建一个新的机器学习模型。

步骤 2:在 Visual Studio 中创建项目并添加新的机器学习模型

在 Visual Studio 中创建您的项目。 项目可以是任何类型,例如 ASP.NET Web API、ASP.NET MVC、WEB 表单或控制台应用程序。 在此示例中,我使用的是控制台应用程序。 右键单击解决方案资源管理器中的项目。 选择添加 > 机器学习模型,如下所示。

QR 码机器学习(开发者教程):图 2

命名您的机器学习模型并点击添加按钮。

QR 码机器学习(开发者教程):图 3

步骤 3:选择场景

添加机器学习模型文件后,将会出现一个新窗口。 向下滚动并选择图像分类。 图像分类是我们将在本教程中使用的计算机视觉技术之一。 我们选择图像分类而不是图像识别,因为我们只需要区分快速响应码(QR 码)和条形码,我们不需要从给定图像中识别它们。

QR 码机器学习(开发者教程):图 4

步骤 4:选择环境

选择场景后的下一个步骤是选择环境。 我们可以选择在本地系统中训练模型或使用 Azure 云。 我们必须拥有 Azure 的有效订阅才能使用 Azure 作为环境。

步骤 5:选择数据

在此步骤中,我们需要传递在步骤 #1 中收集的数据。 我们已经按照模型生成器的要求在步骤 #1 中将数据组织成子类别。

在选择文件夹选项中提供数据集主目录的路径。 我们可以按照下面所示预览数据。

QR 码机器学习(开发者教程):图 5

我们也可以通过点击数据预览中的 QR 码选项卡来查看 QR 码文件夹。

QR 码机器学习(开发者教程):图 6

选择数据后,点击下一步按钮,它将带您进入训练屏幕。

步骤 6:训练模型

点击开始训练模型,训练将如下所示开始。 请确保 Visual Studio 没有以管理员模式打开,否则会抛出错误。

QR 码机器学习(开发者教程):图 7

它将开始训练并需要一段时间。 训练持续时间将根据系统性能而异。 模型生成器使用 AutoML。 它将自动使用合适的机器学习技术、误差校正水平、识别模式、降噪、对比度调整、学习过程和其他设置。

步骤 7:模型评估

训练后,通过传递测试数据来评估模型的性能,以确保分类的准确性。

步骤 8:使用模型

一旦模型训练完成并经过评估,我们可以输出并使用它。 在我们的用例中,我们必须先对 QR 码和条形码进行分类,然后读取其编码数据。 我们需要第三方库来解码数据,因为机器学习模型无法解码 QR 码或条形码,它只会进行分类。

IronBarcode 是一个理想的库,可用于解码 QR 码和条形码。 我们可以使用一个简单的方法在一个库中解码这两种类型的代码。 在进一步进行之前,让我们简单介绍一下 IronBarcode。

Jordi Bardia
软件工程师
Jordi 最擅长 Python、C# 和 C++,当他不在 Iron Software 利用这些技能时,他就在游戏编程。分享产品测试、产品开发和研究的责任,Jordi 在持续的产品改进中增加了巨大的价值。多样的经验使他面临挑战并保持投入,他表示这是在 Iron Software 工作的最喜欢的方面之一。Jordi 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。