如何在 C# 中對車牌進行 OCR (教學)
車牌識別已成為許多行業中不可或缺的工具,從交通管理和停車系統到執法和收費解決方案。 通過利用光學字元識別(OCR)技術,開發者可以有效地從圖像中提取文字,自動化車牌識別過程。 在本教程中,我們將展示如何使用IronOCR,一個強大的C# OCR程式庫,從圖像中準確讀取車牌。 IronOCR能與OpenCV原始碼無縫整合,用於計算機視覺任務,其提供了一個強大的解決方案,即使是來自複雜或噪聲圖像來源的文字也能夠被識別出來。 無論您是在處理乾淨的車牌圖像還是整輛車的照片,這篇指南將指導您使用現代OCR技術建立可靠的車牌識別系統的步驟。
如何使用車牌識別C
- 安裝C#程式庫以使用車牌識別
- 將車牌圖像匯入到一個新的
OcrImageInput實例。 - 應用圖像過濾器以在C#中改進文字提取。
- 透過在照片中指定車牌區域來提升識別速度。
- 使用
OcrLicensePlateResult實例列印提取的文字。
開始使用IronOCR
IronOCR是一個基於Tesseract OCR引擎構建的C# OCR程式庫,專為提高.NET應用程式中的文字識別專案的高準確性和效率而設計。 非常適合處理噪聲或低質量圖像,IronOCR包括了強大的圖像預處理功能,如自動降噪和灰度轉換,這提高了文字提取的清晰度。
IronOCR的一些突出功能包括:
- 高OCR準確性: 優化適用於多種語言和字體,IronOCR在處理複雜或失真的文字時表現出色。
- 圖像和PDF支持: 它可以從多種圖像格式和PDF文件中讀取文字,這讓它在各種文件型別中顯得非凡多樣。
- 與OpenCV整合: 通過OpenCV支持,IronOCR可以執行計算機視覺任務,如在圖像中偵測特定的文字區域,這對於車牌識別特別有用。
- 高級預處理: 包括將圖像轉為灰度、旋轉、去傾斜和對比度增強等過濾器來提高識別質量。
- 靈活的輸入選項: 支持多頁文件和可調整區域,讓開發者可專注於所選區域進行OCR處理,以便快速且更具目標的結果。
憑藉這些能力,IronOCR是構建需要準確性、靈活性、並且易於與其他計算機視覺工具整合的OCR應用程式的強大解決方案。
建立一個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包,並搜索您需要的包來安裝:

設定程式碼
最後,我們必須將必要的匯入和using語句新增到程式碼的頂部:
using IronOcr;
using IronOcr;
Imports IronOcr
使用光學字元識別來讀取車牌
在本節中,我們將建立一個程式,使用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

程式碼解析:
-
初始化:
IronTesseract類的實例,該類提供光學字元識別(OCR)的方法。 -
圖像輸入:
OcrImageInput物件。 此物件設計用來保存OCR處理的圖像資料。 -
圖像預處理:
input.DeNoise();應用了一個數位降噪過濾器以提高圖像質量,使OCR引擎更容易讀取文字。input.ToGrayScale();將圖像轉換為灰度,這可以提高識別準確性和處理速度。
-
車牌識別:
OcrLicensePlateResult物件中。 -
輸出儲存:通過存取
output中。 - 控制台輸出:最後,
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

程式碼解析:
- 初始化:
IronTesseract類的實例,負責執行OCR操作。 - OCR輸入:
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物件,其中包含提取的文字。 - 輸出:
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

程式碼解析:
- 初始化:建立了
IronTesseract類的一個實例,將用於使用Tesseract引擎執行光學字元識別(OCR)。 - 圖像輸入:新建的
OcrImageInput物件以指定的圖像文件("CarPlate.jpeg")進行初始化。 該物件將作為OCR過程的輸入,並由using語句封閉以確保正確的資源管理。 - 文字區域檢測:對
FindTextRegion()方法。 此方法運用計算機視覺技術,自動識別圖像中可能包含文字的區域,尤其是針對車牌。 - 車牌識別:調用
ReadLicensePlate方法分析識別出的文字區域,提取車牌號碼。 結果儲存在OcrLicensePlateResult物件中,該物件持有識別出的文字及其任何相關的元資料。 - 輸出:檢測到的車牌文字被列印到控制台,允許使用者查看提取出的車牌號碼。
IronOCR授權

對於那些希望自行試用IronOCR的人,IronOCR提供免費試用,這讓您可以使用它提供的整套工具,讓您能在購買授權前先嘗試在自己的專案中使用。 一旦您的免費試用期結束,IronOCR授權從只需$liteLicense的Lite License開始。 它也提供可選的附加功能(需額外費用),如免版稅再分發範圍和不間斷的支援與持續產品更新。
除此之外,如果您發現自己需要使用更多Iron Software產品,而不僅僅是IronOCR,例如IronPDF用於PDF相關任務或IronWord用於處理Word文件,那麼Iron Software還提供Iron Suite,這是一個以優勢價格獲得整套工具的非常不錯方式。
結論
在本指南中,我們探討了如何使用IronOCR在C#中構建可靠的車牌識別系統。 憑藉其強大的文字提取能力和與OpenCV的整合,IronOCR為需要從車輛圖像中準確識別文字的應用程式提供了一個高效、易於使用的解決方案。 從預處理圖像到設置特定的檢測區域,IronOCR透過專為處理噪聲或複雜圖像(如交通和監視影片中的車牌)量身定制的工具簡化了OCR流程。
無論您是開發交通監控、停車執法,或任何需要自動車牌識別的應用程式,IronOCR都提供了一個與.NET環境無縫整合的完整程式庫。 通過遵循這些步驟,您將具備部署OCR驅動的解決方案的能力,從而在各種現實場合中增強效率和準確性。 憑藉像區域選擇和降噪等附加功能,IronOCR確保您的車牌識別任務優化至最佳效果。
常見問題
我如何使用OCR在C#中識別車牌號碼?
您可以使用IronOCR在C#中識別車牌號碼,方法是使用IronTesseract類建立一個OCR實例,載入包含車牌的圖像,應用如降噪之類的預處理濾鏡,並使用ReadLicensePlate方法擷取文字。
使用OCR進行車牌識別有什麼好處?
使用OCR進行車牌識別自動化了文字擷取過程,提供了高精確度和效率。IronOCR藉由支援多種圖像格式和電腦視覺整合來增強此功能,使其成為交通管理和執法應用的理想選擇。
如何在OCR處理中處理噪聲或低質量圖像?
IronOCR提供強大的圖像預處理能力,如自動降噪和灰階轉換,即使在處理噪音或低質量圖像時也能提高文字擷取準確性。
是否可以將OCR處理集中在圖像的特定區域?
是的,IronOCR允許您在圖像內指定感興趣的矩形區域以集中OCR處理,提高從像車牌這樣的區域擷取文字的速度和準確性。
如何在Visual Studio專案中開始使用OCR?
要在Visual Studio專案中開始使用OCR,請建立一個新的控制台應用程式,通過NuGet安裝IronOCR套件,並使用IronOCR類和方法實施OCR邏輯。這種設置允許您在應用程式中輕鬆執行OCR任務。
IronOCR為車牌識別提供了哪些功能?
IronOCR提供高精確度的OCR、與OpenCV整合以增強電腦視覺任務、先進的預處理濾鏡,以及對多種圖像和PDF格式的支持,使其成為車牌識別的多功能工具。
IronOCR如何與電腦視覺任務整合?
IronOCR與OpenCV整合,執行各種電腦視覺任務,如自動文字區域檢測,增強了像車牌識別這樣的應用的OCR過程。
IronOCR有什麼授權選擇?
IronOCR提供免費試用以及各種授權選擇,從Lite License開始。對於尋求在不同應用中擴展功能的使用者,還提供其他附加元件及Iron Suite。
OCR技術可以應用於整個車輛圖片嗎?
是的,IronOCR可以用於整個車輛的圖像。通過指定車牌區域,您可以集中OCR處理在需要的區域,避免不必要的文字擷取並提高處理效率。



