C#でナンバープレートをOCRする方法(チュートリアル)
ナンバープレート認識は、交通管理や駐車システムから法執行や通行料金ソリューションまで、多くの業界で不可欠なツールとなっています。 光学文字認識(OCR) テクノロジを活用することで、開発者は画像からテキストを効率的に抽出し、ナンバープレートの識別プロセスを自動化できます。 このチュートリアルでは、強力な C# OCR ライブラリであるIronOCR を使用して、画像からナンバープレートを正確に読み取る方法を説明します。 IronOCR は、コンピューター ビジョン タスク用の OpenCV ソース コードとシームレスに統合されており、複雑な画像ソースやノイズの多い画像ソースからでもテキストを認識するための堅牢なソリューションを提供します。 このガイドでは、きれいなナンバープレート画像を扱う場合でも、車両全体の写真を扱う場合でも、最新の OCR 技術を使用して信頼性の高いナンバープレート認識システムを構築する手順を説明します。
ナンバープレート認識C#の使い方
1.ナンバープレート認識を使用するための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 Frameworkを選択し、"作成"ボタンをクリックします。 これにより、以下に示すようにプロジェクトが作成されます。

次のステップは、ナンバープレートの処理を開始できるように IronOCR ライブラリをインストールすることです。
IronOCRのインストール
C# プロジェクトで IronOCR を使い始めるには、NuGet から IronOCR パッケージをインストールする必要があります。 IronOCR は .NET Framework および .NET Core と互換性があるため、さまざまな .NET アプリケーションに簡単に統合できます。
ステップ1: パッケージマネージャーコンソールを開く
Visual Studio で、 [ツール] > [NuGet パッケージ マネージャー] > [パッケージ マネージャー コンソール]に移動します。
ステップ2: IronOCRパッケージをインストールする
パッケージ マネージャー コンソールに次のコマンドを入力します。
Install-Package IronOcr
このコマンドは、プロジェクトで OCR 関数を実行するために必要なすべての依存関係を含む IronOCR ライブラリをインストールします。 当社のアプリケーションはコンピュータビジョンを使用したナンバープレート検出のような高度な機能を必要とするため、オプションのIronOcr.ComputerVision.Windowsパッケージをこの方法でインストールすることもできます。
Install-Package IronOcr.ComputerVision.Windows
強力なReadLicensePlateメソッドを使用できるように、 IronOcr.Extensions.AdvancedScan拡張機能がインストールされていることを確認してください。
Install-Package IronOcr.Extensions.AdvancedScan
または、 [ツール] > [NuGet パッケージ マネージャー] > [ソリューションの NuGet パッケージの管理]を使用してパッケージをインストールし、必要なパッケージを検索することもできます。

コードの設定
最後に、必要なインポートと using ステートメントをコードの先頭に追加する必要があります。
using IronOcr;
using IronOcr;
Imports IronOcr
光学式文字認識によるナンバープレートの読み取り
このセクションでは、画像からテキストを抽出することに優れた Tesseract OCR エンジンであるIronOCRを使用して、ナンバープレートを読み取るプログラムを作成します。 車両検出を実装するために、追加の機械学習ライブラリを組み込むこともできます。 特に、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

コードの内訳:
-初期化: var ocr = new IronTesseract(); は、光学文字認識 (OCR) のメソッドを提供する IronTesseract クラスの新しいインスタンスを作成します。
-画像入力: using ステートメントは、指定された画像ファイル "licensePlate.jpeg" を使用して新しい OcrImageInput オブジェクトを作成します。 このオブジェクトは、OCR 処理用の画像データを保持するように設計されています。
-画像前処理:
input.DeNoise();はデジタルノイズ低減フィルターを適用して画像の品質を向上させ、OCR エンジンがテキストを読み取りやすくします。input.ToGrayScale();は画像をグレースケールに変換し、認識精度と処理速度を向上させることができます。
-ナンバープレート認識:行 OcrLicensePlateResult result = ocr.ReadLicensePlate(input); は、ReadLicensePlate メソッドを使用して処理された画像を分析し、検出されたナンバープレート情報を抽出し、結果を OcrLicensePlateResult オブジェクトに格納します。
-出力ストレージ:ナンバープレートのテキストは、ナンバープレートから認識されたテキストを含む result.Text にアクセスすることで、文字列変数 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

コードの内訳:
-初期化: var ocr = new IronTesseract(); は、OCR 操作を実行する役割を担う IronTesseract クラスの新しいインスタンスを作成します。
- OCR 入力:
using (var input = new OcrInput())ステートメントは、OCR 用に画像をロードして処理するために使用される新しいOcrInputオブジェクトを作成します。 -関心領域の定義: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);は、入力画像からナンバープレートの文字を分析し、抽出されたテキストを含むOcrLicensePlateResultオブジェクトを返すReadLicensePlateメソッドを呼び出します。 -出力: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

コードの内訳:
-初期化: Tesseract エンジンを使用した光学文字認識 (OCR) に使用される IronTesseract クラスのインスタンスが作成されます。
-画像入力:指定された画像ファイル ("CarPlate.jpeg") を使用して、新しい OcrImageInput オブジェクトがインスタンス化されます。 このオブジェクトはOCR処理への入力として使用され、適切なリソース管理を確保するためにusingステートメントで囲まれています。
-テキスト領域検出: FindTextRegion() メソッドが input オブジェクトで呼び出されます。 この方法では、コンピューター ビジョン技術を使用して、特にナンバー プレートを対象に、画像内のテキストが含まれる可能性のある領域を自動的に識別します。
-ナンバープレート認識: ReadLicensePlate メソッドが呼び出され、検出されたテキスト領域を分析してナンバープレート番号を抽出します。 結果は、認識されたテキストと関連するメタデータを保持する OcrLicensePlateResult オブジェクトに格納されます。
-出力:検出されたナンバープレートのテキストがコンソールに表示され、ユーザーは抽出されたナンバープレート番号を確認できます。
IronOCRライセンス

IronOCR を自分で試してみたい方のために、IronOCR では、提供されるすべてのツールにアクセスできる無料トライアルを提供しています。つまり、ライセンスを購入する前に、独自のプロジェクトで試すことができます。 無料トライアル期間が終了すると、 IronOCR のライセンスは、ライト ライセンスの $liteLicense から開始されます。 また、ロイヤリティフリーの再配布範囲、中断のないサポート、継続的な製品アップデートなどのオプションのアドオンも追加料金で提供しています。
さらに、PDF 関連のタスクには IronPDF、Word 文書を操作するには IronWord など、IronOCR 以外の Iron Software 製品も使用する必要がある場合は、Iron Software ではIron Suiteも提供されており、手頃な価格ですべてのツールにアクセスできる優れた方法です。
結論
このガイドでは、 IronOCRを使用して C# で信頼性の高いナンバープレート認識システムを構築する方法について説明しました。 強力なテキスト抽出機能と OpenCV との統合により、IronOCR は車両画像からの正確なテキスト認識を必要とするアプリケーションに効率的で使いやすいソリューションを提供します。 画像の前処理から特定の検出領域の設定まで、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を使用するには、新しいコンソールアプリケーションを作成し、NuGetを介してIronOCRパッケージをインストールし、IronOCRクラスとメソッドを使用してOCRロジックを実装します。このセットアップにより、アプリケーション内で容易にOCRタスクを実行できます。
IronOCRはナンバープレート認識にどのような機能を提供しますか?
IronOCRは高いOCR精度、OpenCVとの統合による高度なコンピュータビジョンタスク、進化した前処理フィルタ、および複数の画像やPDFフォーマットのサポートを提供し、ナンバープレート認識における多用途のツールです。
IronOCRはどのようにしてコンピュータビジョンタスクと統合しますか?
IronOCRはOpenCVと統合して、自動テキスト領域検出などのさまざまなコンピュータビジョンタスクを実行し、ナンバープレート認識のようなアプリケーションのためにOCRプロセスを強化します。
IronOCRのライセンスオプションにはどのようなものがありますか?
IronOCRは無料トライアルとさまざまなライセンシングオプションを提供しており、最小のライセンスから開始できます。追加のアドオンやさまざまなアプリケーションにわたる機能拡張を求めるユーザーにIron Suiteも利用可能です。
OCR技術は車両全体の画像に適用できますか?
はい、IronOCRを使用して車両全体の画像を処理できます。ナンバープレート領域を指定することで、OCR処理を目的の領域に集中させ、不必要なテキスト抽出を避けて処理効率を向上させることができます。



