跳過到頁腳內容
使用 IRONOCR
如何在 C# 中執行車牌 OCR

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

車牌識別已成為許多行業的重要工具,從交通管理和停車系統到執法和收費解決方案。 利用光學字元辨識(OCR) 技術,開發人員可以有效率地從影像中提取文本,從而自動識別車牌。 在本教程中,我們將示範如何使用功能強大的 C# OCR 庫IronOCR來準確地從圖像中讀取車牌。 IronOCR 與 OpenCV 原始碼無縫集成,可執行電腦視覺任務,即使面對複雜或雜訊的影像來源,也能提供強大的文字辨識解決方案。 無論您是使用清晰的車牌圖像還是完整的車輛照片,本指南都將引導您使用現代 OCR 技術建立可靠的車牌識別系統。

如何使用車牌識別 C

1.安裝用於車牌識別的 C# 庫

  1. 將車牌影像匯入到新的OcrImageInput實例中。
  2. 在 C# 中套用圖像濾鏡來改進文字擷取。
  3. 透過指定照片中的車牌區域來提高辨識速度。
  4. 使用OcrLicensePlateResult實例列印擷取的文字。

IronOCR入門指南

IronOCR 是一個基於 Tesseract OCR 引擎的 C# OCR 函式庫,專門用於為 .NET 應用程式中的文字辨識專案帶來高精度和高效率。 IronOCR 非常適合處理雜訊較大或品質較差的影像,它包含強大的影像預處理功能,例如自動降噪和灰階轉換,從而提高文字擷取的清晰度。

IronOCR的一些突出特點包括:

-高 OCR 準確率:IronOCR 針對各種語言和字體進行了優化,即使在處理複雜或扭曲的文字時也能表現出色,準確率極高。 -圖片和 PDF 支援:它可以讀取多種圖像格式和 PDF 文件中的文本,使其適用於不同的文件類型。 -與 OpenCV 整合:透過 OpenCV 支持,IronOCR 可以執行電腦視覺任務,例如檢測影像中的特定文字區域,這對於車牌辨識尤其有用。 -進階預處理:包括灰階轉換、旋轉、去傾斜和對比度增強等濾鏡,以提高辨識品質。 -靈活的輸入選項:支援多頁文件和可調整區域,讓開發人員能夠將 OCR 處理集中在選定區域,從而獲得更快、更精準的結果。

憑藉這些功能,IronOCR 成為建立 OCR 應用程式的強大解決方案,這些應用程式需要準確性、靈活性以及與其他電腦視覺工具輕鬆整合。

建立一個 Visual Studio 項目

首先開啟 Visual Studio,然後選擇"建立新專案"。 這將帶您進入一個頁面,您可以在該頁面上選擇要建立的項目類型(在本例中,我們將建立一個控制台應用程式)。 選擇所需的應用程式類型,然後按一下"下一步"。

Visual Studio 專案類型

現在,為你的項目命名,並選擇它的保存位置。

項目名稱和地點

最後,選擇目標 .NET 框架,然後按一下"建立"按鈕。 這將創建項目,如下所示。

已建立專案

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

安裝 IronOCR

要開始在 C# 專案中使用 IronOCR,您需要從 NuGet 安裝 IronOCR 套件。 IronOCR 與 .NET Framework 和 .NET Core 相容,因此可以輕鬆整合到各種 .NET 應用程式中。

步驟 1:開啟軟體包管理器控制台

在 Visual Studio 中,導覽至"工具" > "NuGet 套件管理器" > "套件管理器控制台"

步驟 2:安裝 IronOCR 軟體包

在軟體包管理器控制台中輸入以下命令:

Install-Package IronOcr

此指令會安裝 IronOCR 函式庫,包括執行專案中的 OCR 功能所需的所有相依性。 由於我們的應用程式需要使用電腦視覺進行車牌偵測等進階功能,您也可以透過以下方式安裝選購的IronOcr.ComputerVision.Windows軟體套件:

Install-Package IronOcr.ComputerVision.Windows

請確保您已安裝IronOcr.Extensions.AdvancedScan擴充程序,以便您可以使用其強大的ReadLicensePlate方法:

Install-Package IronOcr.Extensions.AdvancedScan

或者,您可以使用"工具" > "NuGet 套件管理器" > "管理解決方案的 NuGet 套件"來安裝套件,然後搜尋所需的套件:

NuGet 套件管理器

設定代碼

最後,我們必須在程式碼頂部加入必要的導入語句和using語句:

using IronOcr;
using IronOcr;
Imports IronOcr
$vbLabelText   $csharpLabel

利用光學字元辨識技術讀取車牌

在本節中,我們將創建一個使用IronOCR (Tesseract OCR 引擎,擅長從圖像中提取文字)讀取車牌的程式。 為了實現車輛偵測,我們可能還會引入其他機器學習庫。 值得一提的是,IronOCR 與領先的開源電腦視覺庫 OpenCV 集成,使我們能夠執行目標偵測任務,例如識別車輛和車牌。

車牌圖片範例

我們將使用以下車牌號碼:

車牌範例

用於對車牌進行OCR識別的範例程式碼

using IronOcr;

var ocr = new IronTesseract();

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

    // Reads the license plate information and stores it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

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

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

var ocr = new IronTesseract();

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

    // Reads the license plate information and stores it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

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

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

Private ocr = New IronTesseract()

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

	' Reads the license plate information and stores it for further use
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)

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

	' Outputs the license plate text to the console
	Console.WriteLine(output)
End Using
$vbLabelText   $csharpLabel

OCR 輸出

程式碼解析:

-初始化var ocr = new IronTesseract();建立IronTesseract類別的新實例,該類別提供光學字元辨識 (OCR) 方法。

-影像輸入using語句建立一個新的OcrImageInput對象,指定影像檔案為"licensePlate.jpeg" 。 該物件旨在保存用於 OCR 處理的影像資料。

-影像預處理

  • input.DeNoise();應用數位降噪濾波器來增強影像質量,使 OCR 引擎更容易讀取文字。
  • input.ToGrayScale();將影像轉換為灰階影像,可提高辨識準確率和處理速度。

-車牌辨識OcrLicensePlateResult result = ocr.ReadLicensePlate(input);這行程式碼使用ReadLicensePlate方法分析處理後的圖像,並提取偵測到的任何車牌信息,將結果儲存在OcrLicensePlateResult物件中。

-輸出儲存:車牌文字儲存在字串變數output中,可透過存取result.Text取得,其中包含從車牌辨識出的文字。

-控制台輸出:最後, Console.WriteLine(output);將提取的車牌文字列印到控制台進行驗證。

掃描汽車牌照號碼

如果我們有一張整輛車的圖像,而不僅僅是車牌,我們可以指定一個矩形區域來聚焦車牌區域。 我們可以使用System.Drawing.Rectangle以像素為單位定義這個區域。

原始影像

我們將使用以下圖像檔案作為範例:

帶有車牌的汽車

透過指定感興趣的區域,我們可以提高處理速度並避免提取不必要的文字。

實現程式碼

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
$vbLabelText   $csharpLabel

聚焦式 OCR 輸出

程式碼解析:

-初始化var ocr = new IronTesseract();建立IronTesseract類別的新實例,該實例負責執行 OCR 操作。

  • OCR 輸入using (var input = new OcrInput())語句建立了一個新的OcrInput對象,該物件將用於載入和處理影像以進行 OCR 辨識。 -定義感興趣的區域var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);在影像中定義一個矩形區域 (contentArea)。 此矩形指定了車牌預計所在的座標和尺寸(寬度和高度)。 -載入圖片input.LoadImage("CarPlate.jpeg", contentArea);載入指定的映像檔 ("CarPlate.jpeg"),並將焦點放在定義的矩形 (contentArea) 上,以將 OCR 處理限制在該特定區域。 -讀取車牌OcrLicensePlateResult result = ocr.ReadLicensePlate(input);呼叫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
$vbLabelText   $csharpLabel

自動 OCR 輸出

程式碼解析:

-初始化:建立一個IronTesseract類別的實例,該實例將用於 Tesseract 引擎的光學字元辨識 (OCR)。 -圖像輸入:使用指定的圖像檔案("CarPlate.jpeg")實例化一個新的OcrImageInput物件。 該物件將作為 OCR 過程的輸入,並包含在using語句中,以確保正確的資源管理。 -文字區域偵測:對input物件呼叫FindTextRegion()方法。 此方法採用電腦視覺技術自動辨識影像中可能包含文字的區域,特別是針對車牌。 -車牌識別:呼叫ReadLicensePlate方法來分析偵測到的文字區域並提取車牌號碼。 結果儲存在OcrLicensePlateResult物件中,該物件包含識別出的文字和任何相關的元資料。 -輸出:偵測到的車牌文字將列印到控制台,使用戶能夠看到提取的車牌號碼。

IronOCR 許可

IronOCR 許可證

對於想要親自試用 IronOCR 的人來說,IronOCR 提供免費試用,讓您可以存取其提供的所有工具,這意味著您可以在購買許可證之前在自己的專案中試用它們。 免費試用期結束後, IronOCR 的授權許可起價僅為 $liteLicense(精簡版授權)。 它還提供一些需要額外付費的可選附加功能,例如免版稅再分發保障、不間斷支援和持續的產品更新。

除此之外,如果您發現自己需要使用 IronOCR 以外的更多 Iron Software 產品,例如用於 PDF 相關任務的 IronPDF 或用於處理 Word 文件的 IronWord,那麼 Iron Software 還提供Iron Suite ,這是一個以優惠的價格訪問所有工具的好方法。

結論

在本指南中,我們探討如何使用IronOCR在 C# 中建立可靠的車牌辨識系統。 IronOCR 憑藉其強大的文字擷取功能和與 OpenCV 的集成,為需要從車輛影像中準確識別文字的應用提供了一種高效、易用的解決方案。 從影像預處理到設定特定偵測區域,IronOCR 提供了專為雜訊或複雜影像(如交通中的車牌和監視器錄影)量身定制的工具,簡化了 OCR 流程。

無論您是開發用於交通監控、停車執法還是任何需要自動車牌識別的應用程序,IronOCR 都提供了一個全面的庫,可以無縫整合到 .NET 環境中。 按照這些步驟,您就可以部署 OCR 解決方案,從而在各種實際場景中提高效率和準確性。 IronOCR 具備區域選擇和降噪等附加功能,可確保您的車牌辨識任務已最佳化,從而獲得最佳結果。

常見問題解答

如何在 C# 中使用 OCR 識別車牌號碼?

您可以在 C# 中使用 IronOCR 識別車牌號碼,方法是使用 IronTesseract 類建立一個 OCR 範例、載入包含車牌的影像、套用預處理篩選程式 (例如降噪),並使用 ReadLicensePlate 方法擷取文字。

使用 OCR 進行車牌辨識有什麼好處?

使用 OCR 進行車牌辨識可將文字擷取過程自動化,提供高準確度與高效率。IronOcr 透過提供多種影像格式支援和電腦視覺整合來強化這一功能,使其成為交通管理和執法等應用程式的理想選擇。

如何在 OCR 處理中處理有雜訊或低品質的影像?

IronOCR 提供強大的影像預處理功能,例如自動降噪和灰階轉換,即使在處理有雜訊或低品質的影像時,也能提高文字擷取的精確度。

是否可以將 OCR 處理集中在影像的特定區域?

是的,IronOCR 可讓您在影像中指定矩形的感興趣區域,以集中進行 OCR 處理,從而提高從車牌等區域擷取文字的速度和精確度。

如何在 Visual Studio 專案中開始使用 OCR?

要開始在 Visual Studio 專案中使用 OCR,請建立一個新的 Console Application,透過 NuGet 安裝 IronOCR 套件,並使用 IronOCR 類別和方法實作 OCR 邏輯。此設定可讓您隨時在應用程式中執行 OCR 任務。

IronOCR 提供哪些車牌辨識功能?

IronOCR 提供高 OCR 精確度、與 OpenCV 整合以增強電腦視覺任務、進階預處理篩選器,以及支援多種影像和 PDF 格式,使其成為車牌辨識的多用途工具。

IronOCR 如何與電腦視覺任務整合?

IronOCR 整合 OpenCV 來執行各種電腦視覺任務,例如自動偵測文字區域,強化車牌辨識等應用的 OCR 流程。

IronOCR 有哪些授權選項?

IronOCR 提供免費試用版以及從 Lite License 開始的各種授權選項。額外的附加元件和 Iron Suite 可供使用者尋求不同應用程式的擴充功能。

OCR 技術是否可應用於全車影像?

是的,IronOCR 可用於整個車輛的影像。透過指定車牌區域,您可以將 OCR 處理集中在所需的區域,避免不必要的文字擷取,並提高處理效率。

Kannaopat Udonpant
軟體工程師
在成為软件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人实验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因为他直接向编写大部分 IronPDF 使用的代码的开发者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代码或文档时,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。