フッターコンテンツにスキップ
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

このコマンドは、プロジェクトで OCR 関数を実行するために必要なすべての依存関係を含む IronOCR ライブラリをインストールします。 当社のアプリケーションはコンピュータビジョンを使用したナンバープレート検出のような高度な機能を必要とするため、オプションのIronOcr.ComputerVision.Windowsパッケージをこの方法でインストールすることもできます。

Install-Package IronOcr.ComputerVision.Windows

強力なReadLicensePlateメソッドを使用できるように、 IronOCR.Extensions.AdvancedScan拡張機能がインストールされていることを確認してください。

Install-Package IronOcr.Extensions.AdvancedScan

または、 [ツール] > [NuGet パッケージ マネージャー] > [ソリューションの NuGet パッケージの管理]を使用してパッケージをインストールし、必要なパッケージを検索することもできます。

! NuGet パッケージ マネージャー

コードの設定

最後に、必要なインポートと using ステートメントをコードの先頭に追加する必要があります。

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

光学式文字認識によるナンバープレートの読み取り

このセクションでは、画像からテキストを抽出することに優れた 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
$vbLabelText   $csharpLabel

! OCR出力

コードの内訳:

-初期化: 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
$vbLabelText   $csharpLabel

! フォーカスOCR出力

コードの内訳:

-初期化: 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);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出力

コードの内訳:

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

IronOCRライセンス

! 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処理を目的の領域に集中させ、不必要なテキスト抽出を避けて処理効率を向上させることができます。

Kannaopat Udonpant
ソフトウェアエンジニア
ソフトウェアエンジニアになる前に、Kannapatは北海道大学で環境資源の博士号を修了しました。博士号を追求する間に、彼はバイオプロダクションエンジニアリング学科の一部である車両ロボティクスラボラトリーのメンバーになりました。2022年には、C#のスキルを活用してIron Softwareのエンジニアリングチームに参加し、IronPDFに注力しています。Kannapatは、IronPDFの多くのコードを執筆している開発者から直接学んでいるため、この仕事を大切にしています。同僚から学びながら、Iron Softwareでの働く社会的側面も楽しんでいます。コードやドキュメントを書いていない時は、KannapatはPS5でゲームをしたり、『The Last of Us』を再視聴したりしていることが多いです。