跳過到頁腳內容
條碼工具

QR碼機器學習:開發人員教程

快速反應 (QR) 碼已成為現代社會中不可或缺的一部分,革新了資訊共享和訪問的方式。 這些二維條碼由黑白方塊矩陣組成,可以通過智能手機相機掃描快速檢索存儲的信息,例如網址、聯繫方式、網站網址、產品詳情等。 然而,隨著科技的發展,QR碼的功能也在不斷演進。 機器學習(ML)已成為增強 QR 碼生成、識別和解碼過程中一個強有力的工具,帶來了更好的使用者體驗和更強大的功能。

資訊和數據交流的世界因 QR 碼和條碼的廣泛使用而發生了變革。 這些二維碼提供了快速訪問數字內容,並在各行業中發揮著各種用途。 然而,區分 QR 碼和條碼是具有挑戰性的,尤其是在處理多樣化的代碼範圍時。 通過利用機器學習 (ML) 和 .NET/C# 框架的力量,開發者可以創建一個智能系統,準確分類 QR 碼和條碼,簡化數據處理並提升用戶體驗。 整合 IronBarcode 的解碼能力進一步增強了解決方案,實現從識別代碼中準確提取內容。

在本文中,我們將訓練模型分類給定輸入為條碼或 QR 碼,然後我們將使用 IronBarcode 解碼輸入代碼。

使用 ML.NET 模型生成器進行 QR 碼分類

Model Builder 是 Visual Studio 中的一個集成工具,通過提供直觀的界面簡化了機器學習模型的構建過程。 我們將使用 Model Builder 創建一個分類模型,以區分 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 作為環境需要有 Active 訂閱。

步驟 5:選擇資料

在這一步中,我們需要傳遞之前在步驟 #1 中收集的資料。 我們在步驟 #1 中已經按照 Model Builder 的要求將資料組織成子類別。

在選擇資料夾選項中提供資料集主目錄的路徑。 我們可以預覽如下所示的資料。

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 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。