IRONOCRの使用

C#でナンバープレートをOCRする方法(チュートリアル)

更新済み 2023年12月19日
共有:

このチュートリアルでは、プログラムによるナンバープレート認識について学びます。 いくつかのサンプルナンバープレート画像を取得し、ナンバープレート番号を抽出します。 C#および.NETプログラムを開発して、自動ナンバープレート認識を実行します。 このチュートリアルはシンプルで分かりやすいため、初心者のC#プログラマーにも最適です。

OCRを実行するためのライブラリは多数あります。 いくつかは有料で、いくつかは使いにくく、いくつかは効率的または正確ではありません。 無料で、効率的で、使いやすく、正確な結果を提供するライブラリを見つけるのは非常に難しいことです。 IronOCRを見つけて使用しました。 開発用は無料で、商業利用には1か月の無料体験版を提供し、使いやすく、効率的で、マルチスレッドをサポートし、150以上の言語に対応し、その上でさらに高い精度を提供します。 ナンバープレートの検出からナンバープレート番号の取得まで、すべてのタスクを実行します。

IronOCR

IronOCRは、開発者がC#およびVB.Netアプリケーションから画像やPDFドキュメントを読み取り、テキストを抽出することを可能にします。IronOCRは、製品の高いパフォーマンスと正確性で知られており、Microsoft OCRとTesseract OCRの技術を組み合わせています。これにより、複雑なレイアウトや出版物、手書きのテキストに対しても高い認識率を誇ります。

  • サポートされるファイル形式: PNG, JPG, GIF, TIFF, BMP, PDF
  • ユニークな機能: 複数言語のテキスト認識、回転・歪みの補正、ノイズ除去
  • 導入が簡単: .NETフレームワークや.NET Coreプロジェクトに簡単に統合可能
  • ライセンスオプション: Lite License, Plus License, Professional License, Unlimited License

IronOCRの利点

  1. 高い認識精度: IronOCRは最新のOCR技術を利用し、正確なテキスト抽出を実現します。
  2. 迅速な処理: 高速な処理速度で大量のドキュメントを効率的に処理できます。
  3. シンプルな統合: APIがシンプルで使いやすいため、開発者は短時間で機能を実装できます。

IronOCRを活用することで、あなたのアプリケーションは自動化されたデータ抽出機能を備え、業務効率を大幅に向上させることができます。

IronOCR は、Iron Software によって開発および保守されており、C# ソフトウェア エンジニアが .NET プロジェクトで OCR、バーコードスキャン、およびテキスト抽出を実行するのに役立つライブラリです。

IronOCR の機能

  • 画像などの多くの形式からテキストを読み取る (JPEG、PNG、GIFF、TIFF、BMP)ストリーム、PDF
  • DeskewDenoiseBinarizeEnhance ResolutionDilateなど、多数のフィルターを使用して、品質の低いスキャンや写真を修正します。

    • 以下の内容を日本語に翻訳してください:

20以上のバーコードフォーマットからバーコードを読み取るおよび QRコードサポート

Visual Studio プロジェクトを作成する

最初のステップはVisual Studioプロジェクトを作成することです。

Visual Studioを開きます。 「新しいプロジェクトを作成」をクリックし、プロジェクトテンプレートを選択してください。 (このデモアプリケーションのテンプレートとしてコンソールアプリケーションを選択しましたが、ご要件や好みに応じて他のテンプレートを選択することもできます。). 「次へ」ボタンをクリックして、プロジェクトに名前を付けます (私はこれを「License plate OCR」と名付けましたが、好きな名前を付けても構いません。). 「次へ」ボタンをクリックし、ターゲットの .NET Framework を選択してください。 最後に、「Create」ボタンをクリックしてプロジェクトを作成します。 プロジェクトは以下のように作成されます。

C#でナンバープレートをOCRする方法(チュートリアル)、図1: ナンバープレートOCRプロジェクトのためのVisual Studioプロジェクトの作成

ナンバープレートOCRプロジェクト用のVisual Studioプロジェクトを作成する

次に、プロジェクトで使用するためにIronOCRライブラリをインストールする必要があります。 最も簡単な方法は、NuGetパッケージマネージャーを通じてインストールすることです。

IronOCR NuGet パッケージをインストール

トップメニューバーから「ツール」をクリックし、「NuGet パッケージ マネージャー」 > 「ソリューションの NuGet パッケージの管理」を選択します。次の画像を参照してください。

C#でナンバープレートをOCRする方法(チュートリアル)、図2:Visual StudioでNuGetパッケージマネージャーUIを見つける

Visual StudioでNuGetパッケージマネージャーUIを見つける

次のウィンドウが表示されます。

C#でナンバープレートをOCRする方法(チュートリアル)、図3: Visual StudioのNuGetパッケージマネージャーのユーザーインターフェイス

Visual Studio の NuGet パッケージ マネージャー UI

「ブラウズ」をクリックして、IronOCR を検索してください。 IronOCR パッケージを選択し、以下に示すように「インストール」ボタンをクリックしてください。

C#でナンバープレートをOCRする方法(チュートリアル)、図4:NuGetパッケージマネージャーUIでIronOCRライブラリをインストール

NuGet パッケージ マネージャー UI で IronOCR ライブラリをインストール

IronOCRライブラリがインストールされ、使用準備が整います。

光学文字認識を用いてナンバープレートを読み取る

ナンバープレートを読み取るプログラムを書きましょう。 IronOCRは、画像からテキストを抽出するために使用されるTesseract OCRエンジンです。車両の検出のためにコンピュータビジョンを実装する必要がある場合は、他の機械学習ライブラリを使用する必要があるかもしれません。 IronOCRは、オープンソースで市場をリードする検出モデルであるOpenCVをサポートしています。 IronOCR を OpenCV と組み合わせて使用することで、車の検出やナンバープレートの検出などのオブジェクト検出を行うことができます。

次のナンバープレートを読み取ります:

C#でナンバープレートをOCRする方法(チュートリアル)、図5: ナンバープレートの番号がはっきりと見えるナンバープレートの画像

ナンバープレートのイメージで、ナンバープレートの番号がはっきりと見える

さて、コードを書きます。

次の名前空間を追加してください:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

次のコードを追加してください:

var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
    input.DeNoise(); // fixes digital noise and poor scanning
    input.ToGrayScale();
    var result = ocr.Read(Input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
    input.DeNoise(); // fixes digital noise and poor scanning
    input.ToGrayScale();
    var result = ocr.Read(Input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
	input.DeNoise() ' fixes digital noise and poor scanning
	input.ToGrayScale()
	Dim result = ocr.Read(Input)
	Console.WriteLine(result.Text)
End Using
VB   C#

これは次の操作を実行します:

  • 初期化します IronTesseract デフォルト設定のオブジェクト。
  • 新規作成 OcrInput(OCR入力) 入力画像ファイルで生成されたオブジェクト。
  • 呼び出します DeNoise(デノイズ)デジタルノイズを除去するフィルターです。このフィルターはノイズが予想される場合にのみ使用してください。 私たちの場合、CCTVのビデオや写真はしばしばノイズだらけです。
  • 次のメソッドを呼び出します Grayscale 各ピクセルをグレーの階調に変えるフィルター (速度を改善する可能性があります).
  • Read メソッドを介して OcrInput オブジェクトからテキストを読み取り、結果を返します。 OcrResult オブジェクト OcrInputは、推奨される入力タイプです。なぜなら、それは 複数ページのドキュメントのOCR画像を読み取る前に強化することで、より速く、より正確な結果を得ることができます。

    検出されたナンバープレートから正しいライセンス番号が抽出されていることがわかります。

    車のナンバープレートをC#でOCRする方法(チュートリアル)、図6:IronOCRはナンバープレート画像から数字を正しく検出および抽出します

    IronOCR は、ナンバープレート画像から数字を正確に検出して抽出します

    別々のナンバープレートがなく、車全体の写真があるとします。 今、ナンバープレートのエリアをスキャンし、文字認識を行う必要があります。

車のナンバープレート番号をスキャンする

System.Drawing.Rectangleを使用して、ナンバープレートを読み取る領域を指定することができます。 測定単位は常にピクセルです。

以下のサンプル画像ファイルを使用します。

C#でナンバープレートをOCRする方法(チュートリアル)、図7:ナンバープレートが見える車のフルリアビュー画像

車のナンバープレートが見える後ろ姿の全体画像

これは、速度の向上を提供し、不必要なテキストの読み取りを回避することができることがわかります。

var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    // a 41% improvement on speed
    var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
    input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    // a 41% improvement on speed
    var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
    input.AddImage(@"D:\Liscence Plate\plate1.jpg", contentArea);
    var result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
	' a 41% improvement on speed
	Dim contentArea = New CropRectangle(x:= 365, y:= 240, height:= 80, width:= 29)
	input.AddImage("D:\Liscence Plate\plate1.jpg", contentArea)
	Dim result = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

これにより41%の速度増加が実現し、具体的に指定することが可能になります。 領域の開始座標を指定します (xとy) 検出領域の幅と高さ。

コンテンツ領域 (OCR クロッピング) PDFを読み取る際にも対応しています。

自動ナンバープレート認識

IronOCRは、OpenCVを利用して、画像内にテキストが存在する領域をコンピュータビジョンで検出します。 画像処理技術を実行し、ナンバープレートを検出するための検出モデルを使用します。 IronOCRにおけるコンピュータビジョンの使用は、テキスト領域がどこに存在するかを判断し、そのあとにTesseractを使用してこれらの領域を読み取ろうとします。

ライセンスプレート検出モデルを使用するには、IronOcr.ComputerVision.Windows をインストールする必要があります。

パッケージマネージャーコンソールで次のコマンドを使用してください。

PM> Install-Package IronOcr.ComputerVision.Windows

これは、IronOCRコンピュータービジョンをモデルファイルと共に使用するために必要なアセンブリを提供します。

以下のサンプルコードは、自動的に車のナンバープレートを検出します。

var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
    input.FindTextRegion();
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
    input.FindTextRegion();
    OcrResult result = ocr.Read(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate1.jpg")
	input.FindTextRegion()
	Dim result As OcrResult = ocr.Read(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

使用の `FindTextRegion (テキスト領域を検索)もちろん、英語のテキストを教えていただけますでしょうか? OcrInputオブジェクトのすべての画像について、コンピュータビジョンを使用してナンバープレートを含む領域を検出します。

サマリー

このチュートリアルでは、IronOCRを使用し、自動車のナンバープレートを読み取るシンプルなプログラムを開発する方法を学びました。 IronOCRは、ぼやけた画像や低解像度の画像からテキストを読み取ることができ、高効率で高精度を提供し、127以上の言語に完全に対応しており、開発には無料で提供されており、製品化に制限がないことを確認しました。

要約すると、IronOCR は以下を提供します:

  • C#向けのOCRで、画像やPDFをスキャンして読み取ります。
  • 127以上のグローバル言語パックを備えた.NET OCRライブラリ
  • テキスト、構造化データ、または検索可能なPDFとして出力
  • .NET 6、5、Core、Standard、Frameworkをサポート

    IronOCR の一部です。 Iron Suite. このスイートには、他にも非常に便利なライブラリが含まれています。 IronPDF PDFの読み書き用に IronXL Excelファイルを操作するための IronWebscraper ウェブサイトからデータを抽出するための。

あなたは 購入 ライブラリ二つ分の価格でIron Suite ライセンス.

< 以前
C#で運転免許証をOCRする方法
次へ >
C#チュートリアルで請求書からテキストを取得する方法