使用 IRONOCR

如何在 C# 中進行車牌 OCR(教程)

已更新 2024年11月12日
分享:

介紹

車牌識別已成為許多行業中不可或缺的工具,從交通管理和停車系統到執法和收費解決方案都依賴它。 透過利用光學字符識別 (光學字符識別)技術使開發人員能夠有效地從圖像中提取文本,自動化識別車牌的過程。 在本教程中,我們將演示如何使用IronOCR,一個強大的 C# OCR 函式庫,用於從圖像中準確讀取車牌號碼。 IronOCR 與用於計算機視覺任務的 OpenCV 原始碼無縫整合,提供一個強大的解決方案,即使是從複雜或噪聲影像來源中也能識別文字。 無論您是在處理清晰的車牌圖像還是完整的車輛照片,本指南將引導您使用現代OCR技術建立可靠的車牌識別系統的步驟。

如何使用車牌識別C

  1. 安裝 C# 庫以使用車牌識別功能

  2. 將車牌圖像導入新的 OcrImageInput 實例中

  3. 在 C# 中應用影像濾鏡以改善文字擷取

  4. 透過在照片中指定車牌區域來提高識別速度

  5. 使用 OcrLicensePlateResult 實例打印出提取的文本

開始使用IronOCR

IronOCR 是一個基於 Tesseract OCR 引擎的 C# OCR 函式庫,專門為 .NET 應用中的文本識別專案提供高準確性和效率而設計。 IronOCR 對於處理噪聲或低質量圖像非常理想,它包含強大的圖像預處理功能,如自動降噪和灰度轉換,這些功能可以增強文本提取的清晰度。

IronOCR 的一些突出功能包括:

  • 高OCR準確性:IronOCR針對各種語言和字體進行優化,即使在處理複雜或扭曲的文本時也具有卓越的準確性。
  • 圖片和PDF支持:它可以從多種圖片格式和PDF文件中讀取文本,使其能夠適應不同的文件類型。
  • 與 OpenCV 的整合:通過 OpenCV 的支持,IronOCR 可以執行計算機視覺任務,如檢測圖像中的特定文本區域,這對車牌識別特別有用。
  • 進階預處理:包含用於灰度轉換、旋轉、去偏斜和對比度增強的濾鏡,以提高識別質量。
  • 靈活的輸入選項:支持多頁文件和可調整區域,允許開發人員將OCR處理集中在選定區域,以獲得更快且更具針對性的結果。

    憑藉這些功能,IronOCR 是一個強大的解決方案,適用於構建需要準確性、靈活性以及易於與其他計算機視覺工具集成的 OCR 應用程序。

創建一個 Visual Studio 專案

首先,打開 Visual Studio,然後選擇「建立新專案」。 這將帶您進入一個頁面,您可以在其中選擇您想要建立的專案類型。(在我們的案例中,我們將建立一個控制臺應用程式。). 選擇所需的應用程式類型,然後點選“下一步”。

License Plate Ocr Csharp Tutorial 1 related to 創建一個 Visual Studio 專案

現在,請為您的專案命名並選擇儲存位置。

License Plate Ocr Csharp Tutorial 2 related to 創建一個 Visual Studio 專案

最後,選擇您的目標 .NET 框架,然後按一下「Create」按鈕。 這將創建項目,如下所示。

License Plate Ocr Csharp Tutorial 3 related to 創建一個 Visual Studio 專案

下一步是安裝IronOCR庫,以便我們可以開始處理車牌。

安裝 IronOCR

要在您的 C# 專案中開始使用 IronOCR,您需要從 NuGet 安裝 IronOCR 套件。 IronOCR 與 .NET Framework 和 .NET Core 兼容,使其易於整合到各種 .NET 應用程式中。

步驟 1:開啟套件管理控制台

在 Visual Studio 中,導航至工具 > NuGet 套件管理員 > 套件管理員主控台

步驟 2:安裝 IronOCR 套件

在封裝管理器主控台中輸入以下命令:

Install-Package IronOcr
Install-Package IronOcr
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronOcr
VB   C#

此命令將安裝 IronOCR 庫,包括在您的專案中運行 OCR 功能所需的所有依賴項。 由於我們的應用程式需要使用電腦視覺進行車牌識別這樣的高級功能,您也可以通過以下方式安裝可選的 IronOcr.ComputerVision.Windows 套件:

Install-Package IronOcr.ComputerVision.Windows
Install-Package IronOcr.ComputerVision.Windows
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronOcr.ComputerVision.Windows
VB   C#

並確保您擁有IronOcr.Extensions.AdvancedScan已安裝擴充功能,以便您可以利用其強大的 ReadLicensePlate 方法:

Install-Package IronOcr.Extensions.AdvancedScan
Install-Package IronOcr.Extensions.AdvancedScan
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronOcr.Extensions.AdvancedScan
VB   C#

或者,您可以使用 工具 > NuGet 套件管理員 > 管理解決方案的 NuGet 套件 來安裝所需的套件並搜索您需要的套件:

License Plate Ocr Csharp Tutorial 4 related to 步驟 2:安裝 IronOCR 套件

設定程式碼

最後,我們必須在程式碼的頂部添加必要的匯入和使用語句:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

使用光學字符識別讀取車牌號碼

在本節中,我們將創建一個使用程序來讀取車牌號的程序IronOCR,一個擅長從圖像中提取文字的 Tesseract OCR 引擎。 為了實現車輛檢測,我們可能還需要整合其他機器學習庫。 值得注意的是,IronOCR 與 OpenCV 整合,這是一個領先的開源計算機視覺庫,使我們能夠執行物體檢測任務,比如識別車輛和車牌。

示例車牌圖片

我們將使用以下車牌:

License Plate Ocr Csharp Tutorial 5 related to 示例車牌圖片

接下來,新增以下程式碼來對車牌進行光學字符識別(OCR):

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixing the digital noise and making the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saving the license plate text to a string variable
    string output = result.Text;

    // Outputting the license plate text to the console
    Console.WriteLine(output);
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixing the digital noise and making the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saving the license plate text to a string variable
    string output = result.Text;

    // Outputting the license plate text to the console
    Console.WriteLine(output);
}
Imports IronOcr

Private ocr = New IronTesseract()

Using input = New OcrImageInput("licensePlate.jpeg")
	' Fixing the digital noise and making the image easier to read
	input.DeNoise()
	input.ToGrayScale()

	' Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)

	' Saving the license plate text to a string variable
	Dim output As String = result.Text

	' Outputting the license plate text to the console
	Console.WriteLine(output)
End Using
VB   C#

License Plate Ocr Csharp Tutorial 6 related to 如何在 C# 中進行車牌 OCR(教程)

程式碼分解:

  • 初始化:此行為 var ocr = new IronTesseract(); 創建一個新實例的IronTesseract類別,提供用於光學字符識別的方法(光學字符識別).
  • 圖片輸入using 語句創建一個新的OcrImageInput指定圖像文件 "licensePlate.jpeg" 的物件。 此物件旨在保存用於OCR處理的圖像數據。
  • 圖片預處理
  • input.DeNoise();應用數位去噪濾鏡以提升圖像質量,使OCR引擎更容易識別文字。
  • input.ToGrayScale();將圖像轉換為灰階,可以提高識別準確性和處理速度。
  • 車牌識別:行 OcrLicensePlateResult result = ocr.ReadLicensePlate(輸入); 使用 ReadLicensePlate 方法來分析處理後的圖像,並提取其檢測到的任何車牌資訊,將結果儲存在一個OcrLicensePlateResult物件。
  • 輸出儲存:車牌文字透過訪問 result.Text 儲存在字串變數 output 中,這包含了來自車牌的識別文字。
  • 控制台輸出:最後,Console.WriteLine(輸出); 將提取的車牌文字列印到控制台以進行驗證。

掃描汽車的車牌號碼

如果我們有一整輛汽車的圖片而不僅僅是車牌,我們可以指定一個矩形區域來關注車牌區域。 我們可以使用System.Drawing.Rectangle以像素來定義此區域。

原始圖像

我們將使用下面的圖像檔作為範例:

License Plate Ocr Csharp Tutorial 7 related to 原始圖像

透過指定關注的區域,我們提升了處理速度並避免提取不必要的文本。

實施代碼

using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
Imports IronOcr
Imports System.Drawing

Private ocr = New IronTesseract()

Using input = New OcrInput()
	Dim contentArea = New Rectangle(x:= 252, y:= 282, width:= 148, height:= 47)
	input.LoadImage("CarPlate.jpeg", contentArea)
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

License Plate Ocr Csharp Tutorial 8 related to 實施代碼

程式碼分解:

  • 初始化:var ocr = new IronTesseract(); 創建一個新的 IronTesseract 類實例,負責執行 OCR 操作。
  • OCR 輸入:使用(var input = new OcrInput())該語句創建了一個新的 OcrInput 物件,該物件將用於加載和處理圖像以進行 OCR。
  • 定義感興趣的區域:var contentArea = new Rectangle(x: 252, y: 282, 寬度: 148, 高度: 47); 定義一個矩形區域(內容區域)在圖像中。 此矩形指定坐標和尺寸(寬度和高度)車牌預計會位於的位置。
  • 載入圖像:input.LoadImage("CarPlate.jpeg",contentArea); 載入指定的圖像文件("CarPlate.jpeg")並專注於定義的矩形(內容區域)將 OCR 處理限制在特定區域。
  • 读取车牌:OcrLicensePlateResult result = ocr.ReadLicensePlate(輸入); 調用 ReadLicensePlate 方法,該方法分析輸入圖像中的車牌字符,並返回一個 OcrLicensePlateResult 對象,其中包含提取的文本。
  • 輸出:Console.WriteLine(result.Text); 將識別出的車牌文字打印到控制台。

車牌自動識別

IronOCR 利用 OpenCV 來識別圖像中的文本區域,採用多種影像處理技術。 此功能使程式能夠通過定位影像中的文字區域來偵測車牌,然後利用 Tesseract 來讀取這些區域。

安裝

要啟用車牌檢測模型,請透過套件管理器主控台安裝所需的套件:

var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()

Using input = New OcrImageInput("CarPlate.jpeg")
	input.FindTextRegion()
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

License Plate Ocr Csharp Tutorial 9 related to 安裝

程式碼分解:

  • 初始化:創建一個IronTesseract類的實例,該實例將用於光學字符識別(光學字符識別)使用 Tesseract 引擎。
  • 影像輸入:使用指定的影像檔案建立一個新的 OcrImageInput 物件("CarPlate.jpeg"). 此物件將作為 OCR 處理的輸入,並封裝在 using 語句中以確保正確的資源管理。
  • 文本區域檢測尋找文本區域方法被調用在輸入物件上。 這個方法使用電腦視覺技術自動識別圖像中可能包含文本的區域,特別是針對車牌。
  • 車牌識別:使用 ReadLicensePlate 方法來分析檢測到的文本區域並提取車牌號碼。 結果存儲在 OcrLicensePlateResult 對象中,其中包含識別出的文本和任何相關的元數據。
  • 輸出:檢測到的車牌文字會列印到控制台,讓使用者可以看到提取的車牌號碼。

IronOCR 授權

License Plate Ocr Csharp Tutorial 10 related to IronOCR 授權

對於那些希望親自嘗試 IronOCR 的人,IronOCR 提供一個免費試用這使您能夠訪問整個工具範圍,這意味著您可以在購買許可證之前在自己的項目中試用它們。 試用期結束後,IronOCR 授權起始價格僅需 $749,適用於 Lite License。 它還提供可選的附加元件,需額外付費,例如免版稅的重新分發覆蓋以及不間斷的支持和持續的產品更新。

除此之外,如果您發現自己需要使用更多的 IronSoftware 產品,不僅僅是 IronOCR,例如 IronPDF 用於與 PDF 相關的任務或 IronWord 用於處理 Word 文件,那麼 IronSoftware 也提供IronSuite,這是一種以優惠價格獲得全系列工具的好方法。

結論

在本指南中,我們探討了如何使用C#構建一個可靠的車牌識別系統IronOCR. IronOCR 擁有強大的文字提取功能,並整合了 OpenCV,為需要從車輛圖像中準確識別文字的應用程序提供了一個高效且易於使用的解決方案。 從圖像預處理到設置特定檢測區域,IronOCR 使用專為噪音大或複雜圖像(如交通和監控錄像中的車牌)設計的工具來簡化 OCR 過程。

無論您是在開發交通監控、停車執法,或是任何需要自動車牌識別的應用程式,IronOCR 提供了一個全面的程式庫,可以無縫整合到 .NET 環境中。 通過遵循這些步驟,您能夠部署搭載光學字符識別技術的解決方案,以提高各種現實場景的效率和準確性。 透過區域選擇和噪點消除等附加功能,IronOCR 確保您的車牌識別任務優化以達到最佳可能結果。

< 上一頁
如何在C#中進行駕照的OCR
下一個 >
如何從 C# 教程中獲取發票文本

準備開始了嗎? 版本: 2024.11 剛剛發布

免費 NuGet 下載 總下載次數: 2,698,613 查看許可證 >