跳過到頁腳內容
條碼工具

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

快速回應碼(QR碼)已成為現代社會不可或缺的一部分,徹底改變了資訊的共享和獲取方式。 這些二維條碼由黑白方塊矩陣組成,可以使用智慧型手機相機掃描,快速檢索儲存的信息,例如網址、聯絡資訊、網站網址、產品詳情等。 然而,隨著技術的發展,二維碼的功能也不斷發展。 機器學習 (ML) 已成為增強二維碼生成、識別和解碼流程的強大工具,從而改善使用者體驗並提高功能。

二維碼和條碼的廣泛應用徹底改變了資訊和資料交換的世界。 這些二維條碼可以快速存取數位內容,並在各行各業中發揮各種作用。 然而,區分二維碼和條碼可能很困難,尤其是在處理各種各樣的程式碼時。 借助機器學習 (ML) 和 .NET/C# 框架,開發人員可以創建一個智慧型系統,準確地對二維碼和條碼進行分類,從而簡化資料處理並增強使用者體驗。 整合 IronBarcode 的解碼功能進一步增強了解決方案,能夠從識別出的條碼中準確提取內容。

在本文中,我們將訓練一個模型,該模型可以將給定的輸入分類為條碼或二維碼,之後,我們將使用 IronBarcode 對輸入代碼進行解碼。

使用 ML.NET 模型建構器進行二維碼分類

模型建構器是 Visual Studio 中的一個整合工具,它透過提供直覺的介面簡化了建構機器學習模型的過程。 我們將使用模型建構器建立一個分類模型,用於區分二維碼和條碼。 分類完成後,我們將整合 IronBarcode 來解碼識別出的條碼。

步驟一:資料收集

訓練任何模型的第一步都是資料收集。 我們需要資料來訓練模型。 我已經從Kaggle下載了資料。 您可以根據自己的喜好從任何來源下載。 下載資料集後,建立一個主目錄,並將兩個資料集都放在該主目錄中。 資料分為兩個子目錄:

  1. 條碼
  2. QR 碼

二維碼機器學習(開發者教學):圖 1

下一步是開啟 Visual Studio 並建立一個新的機器學習模型。

步驟 2:在 Visual Studio 中建立專案並新增新的機器學習模型

在 Visual Studio 中建立專案。 專案可以是任何類型的,例如 ASP.NET Web API、ASP.NET MVC、WEB Forms 或控制台應用程式。 在這個例子中,我使用的是控制台應用程式。 在解決方案資源管理器中以滑鼠右鍵按一下專案。 選擇"新增">"機器學習模型",如下圖所示。

二維碼機器學習(開發者教學):圖 2

為你的機器學習模型命名,然後點擊"新增"按鈕。

二維碼機器學習(開發者教學):圖 3

步驟 3:選擇場景

新增機器學習模型檔案後,將出現一個新視窗。向下捲動並選擇"圖像分類" 。 圖像分類是我們將在本教程中使用的電腦視覺技術之一。 我們選擇圖像分類而不是圖像識別,因為我們只需要區分快速響應碼(QR碼)和條碼,而不需要從給定的圖像中識別它們。

二維碼機器學習(開發者教學):圖 4

步驟 4:選擇環境

選擇場景之後,下一步就是選擇環境。 我們可以選擇在本機系統或 Azure 雲端上訓練模式。 我們必須擁有有效的 Azure 訂閱才能使用 Azure 作為我們的環境。

步驟 5:選擇數據

在這一步驟中,我們需要傳遞先前在步驟 1 中收集的資料。我們已經在步驟 1 中依照模型建構器的要求將資料整理成子類別。

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

二維碼機器學習(開發者教學):圖 5

我們也可以透過點擊資料預覽中的"二維碼"標籤來查看二維碼資料夾。

二維碼機器學習(開發者教學):圖 6

選擇資料後,點選"下一步"按鈕,即可進入訓練介面。

步驟 6:訓練模型

點擊"開始訓練模型",它將開始訓練,如下所示。 請確保 Visual Studio 沒有以管理員模式開啟,否則會報錯。

二維碼機器學習(開發者教學):圖 7

系統將開始訓練,這需要一些時間。訓練時長將根據系統表現而有所不同。 模型建構器使用AutoML 。 它將自動使用合適的機器學習技術、糾錯等級、模式識別、降噪、對比度調整、學習過程和其他相應設定。

步驟 7:模型評估

訓練完成後,透過輸入測試資料來評估模型的效能,以確保分類準確。

步驟 8:消費模型

模型訓練和評估完成後,我們就可以匯出並使用它了。 在我們的應用場景中,我們需要對條碼中的二維碼進行分類,然後讀取其編碼資料。 我們需要第三方函式庫來解碼數據,因為機器學習模型無法解碼二維碼或條碼,它只能對其進行分類。

IronBarcode是一個理想的函式庫,可用於解碼二維碼和條碼。 我們可以使用一個函式庫以簡單的方式解碼這兩種類型的程式碼。 在繼續之前,讓我們先簡單介紹一下IronBarcode。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。