C# OCRでナンバープレートを読む方法

IronOCRでナンバープレートをC#で読む方法

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronOCRのReadLicensePlateメソッドは、高度なOCR技術を使って車両画像からナンバープレートを自動的に抽出します。 この単一のメソッド呼び出しは、ナンバープレートを高精度で処理し、自動車両管理システムのためにプレートテキストと信頼度スコアの両方を返すことができます。

大量の車両画像を管理する場合、ナンバープレートを手動で読み取るのは時間がかかり、人為的エラーが発生しやすくなります。 IronOCR のようなツールを使用してこのプロセスを自動化すると、より効率的で正確なソリューションが得られます。 IronOCRのReadLicensePlateメソッドは、プログラムによって画像からナンバープレートを抽出することができ、データの精度を高めながら時間を大幅に節約することができます。

このガイドでは、IronOCRをナンバープレート認識用に使用する方法を、例やカスタマイズ可能な設定を通して説明し、プロセスをシームレスにします。 これらの方法を活用することで、開発者はナンバープレートの読み取りを自動化し、駐車場管理、通行料徴収、セキュリティ監視などのタスクをより効率的に行うことができます。

この機能を使用するには、 IronOcr.Extension.AdvancedScanパッケージもインストールする必要があります。

クイックスタート: ナンバープレートの番号を即座に抽出する

IronOCRのReadLicensePlateメソッドを呼び出すだけで、どんな画像からでもナンバープレートのテキストをプログラムで抽出することができます。 画像を読み込んでメソッドを呼び出すだけで、すぐにプレート番号と信頼度の両方を取得できます。

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronOCR をインストールします

    PM > Install-Package IronOcr

  2. このコード スニペットをコピーして実行します。

    OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg"));
  3. 実際の環境でテストするためにデプロイする

    今すぐ無料トライアルでプロジェクトに IronOCR を使い始めましょう
    arrow pointer

C#でナンバープレートを読むには?

IronOCRでナンバープレートを読むには、以下のステップを適用します:

  • OcrInputを入力パラメータとして受け取るReadLicensePlateメソッドを利用します。 このメソッドは、ライブラリの標準的なReadの対応よりも、ナンバープレート用に最適化されています。
  • オプションとして、IronOCRがナンバープレート中に存在しうる特定の文字をホワイトリストに登録し、ナンバープレート番号の処理を高速化するように設定することができます。

ブラケットオープン

  • この方法は現在、英語、中国語、日本語、韓国語、ラテンアルファベット文字にのみ対応しています。
  • .NET Framework で詳細スキャンを使用するには、プロジェクトを x64 アーキテクチャで実行する必要があります。
    ブラケットを閉じる

入力ナンバープレートはどのように見えますか?

"8TRS777"を示すカリフォルニア州のナンバープレート - ナンバープレート読み取りデモの例

ナンバープレートの OCR を設定するには?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-license-plate.cs
using IronOcr;
using System;

var ocr = new IronTesseract();
ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";

using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("plate.jpeg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate number and confidence value
string output = $"{result.Text}\nResult Confidence: {result.Confidence}";

Console.WriteLine(output);
$vbLabelText   $csharpLabel

どのような結果が期待できますか?

Debug console showing license plate OCR results:カリフォルニア州、プレート 8TRS777、信頼度 95.87%

このコードは、画像をOcrInputとしてインポートし、それをReadLicensePlateメソッドと共に使用してナンバー プレートからテキストを抽出する方法を示しています。 出力には、入力画像に表示されているナンバープレートに一致する抽出されたテキストと、OCR の精度を示す信頼度レベルが表示されます。

テキスト: OCR 入力から抽出されたテキスト。

自信doubleプロパティで、すべての文字の平均の統計的な精度の信頼度を示し、1が最高、0が最低です。

OCR プロセスをより正確に制御するには、高度な構成オプションを調べて、文字認識設定を微調整することができます。


車の画像からナンバープレートを抽出するにはどうすればよいですか?

この方法は、ナンバープレートの付いた車が写っている画像にも有効です。 コードは上のものと同じですが、入力画像が変更されています。 画像内でナンバープレートが配置されている領域のピクセル座標を抽出することもできます。

どのようなタイプの車の画像が最も効果的ですか?

マハラシュトラ州のナンバープレートMH 20 EE 7602を示すダークグレーのシュコダ車がレンガの舗道に駐車

最適な結果を得るためには、車の画像に以下のような特徴があることを確認してください:

  • ナンバープレートの明確な視認性
  • 良好な照明条件(まぶしさや影を避けること)
  • 最小限の角度の歪み
  • 適切な解像度(低解像度の画像については、DPI設定の調整を検討してください。)

ナンバープレートの位置座標を取得するにはどうすればよいですか?

:path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-from-car.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

var ocr = new IronTesseract();
using var inputLicensePlate = new OcrInput();
inputLicensePlate.LoadImage("car_license.jpg");

// Read license plate
OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate);

// Retrieve license plate coordinates
RectangleF rectangle = result.Licenseplate;

// Write license plate value and coordinates in a string
string output = $"License Plate Number:\n{result.Text}\n\n"
              + $"License Plate Area_\n"
              + $"Starting X: {rectangle.X}\n"
              + $"Starting Y: {rectangle.Y}\n"
              + $"Width: {rectangle.Width}\n"
              + $"Height: {rectangle.Height}";

Console.WriteLine(output);
$vbLabelText   $csharpLabel

結果にはどのような情報が含まれますか?

検出されたナンバープレート MH20EE7602 とバウンディングボックス座標および寸法を示す Visual Studio デバッグ出力

この例では、 ReadLicensePlateメソッドを車の画像に適用する方法を示します。 このメソッドは、画像内でナンバープレートが配置されている場所の長方形座標も返します。

この方法は、単一のナンバープレートのみを見つけるために最適化されており、ストック画像内で検索することができます。

複数のナンバープレートを処理するにはどうすればよいですか?

複数の車両画像を扱う場合、バッチ処理を使用すると効率的に処理できます:

using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Confidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})");
    }
}
using IronOcr;
using System.IO;
using System.Threading.Tasks;

public async Task ProcessMultipleLicensePlates(string[] imagePaths)
{
    var ocr = new IronTesseract();

    // Configure for optimal performance
    ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;

    var tasks = imagePaths.Select(async path => 
    {
        using var input = new OcrInput();
        input.LoadImage(path);

        var result = await Task.Run(() => ocr.ReadLicensePlate(input));

        return new { 
            FilePath = path, 
            PlateNumber = result.Text, 
            Confidence = result.Confidence 
        };
    });

    var results = await Task.WhenAll(tasks);

    // Process results
    foreach (var result in results)
    {
        Console.WriteLine($"File: {result.FilePath}");
        Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})");
    }
}
$vbLabelText   $csharpLabel

大規模処理の場合は、マルチスレッド機能を実装してパフォーマンスを最大化することを検討してください。

ナンバープレート認識の精度を向上させるにはどうすればよいですか?

ナンバープレート検出の精度を高めるには、以下の最適化テクニックを検討してください:

画像前処理フィルタを適用する

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

// Load and preprocess the image
input.LoadImage("blurry_plate.jpg");
input.Deskew();  // Correct image rotation
input.DeNoise(); // Remove background noise
input.EnhanceResolution(225); // Upscale for better clarity
input.Sharpen(); // Enhance edge definition

var result = ocr.ReadLicensePlate(input);
$vbLabelText   $csharpLabel

入力画像を最適化するために利用可能な 画像フィルタ画像補正テクニック の詳細をご覧ください。

さまざまな照明条件に対応する

困難な照明シナリオについては、適切な補正を適用します:

using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

input.LoadImage("dark_plate.jpg");
input.Contrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();
using var input = new OcrInput();

input.LoadImage("dark_plate.jpg");
input.Contrast(1.5); // Increase contrast
input.Brightness(1.2); // Adjust brightness
input.Binarize(); // Convert to black and white for clarity

var result = ocr.ReadLicensePlate(input);
$vbLabelText   $csharpLabel

OCRのパフォーマンスを監視するにはどうすればよいですか?

大量のナンバープレートを処理する場合、進捗状況を追跡することで、システムリソースの管理に役立ちます:

using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
using IronOcr;

var ocr = new IronTesseract();

// Subscribe to progress events
ocr.OcrProgress += (sender, e) => 
{
    Console.WriteLine($"Processing: {e.ProgressPercent}% complete");
};

using var input = new OcrInput();
input.LoadImage("large_parking_lot.jpg");

var result = ocr.ReadLicensePlate(input);
$vbLabelText   $csharpLabel

詳細なパフォーマンス監視については、IronOCRの進捗追跡機能をご覧ください。

他のドキュメントリーディングと比較してどうですか?

IronOCRの専門的な文書読み取り能力は、ナンバープレートだけにとどまりません。 ナンバープレート検出に力を与えているのと同じコンピュータ ビジョン テクノロジーを適用することができます:

一般的な使用例とは

IronOCRによるナンバープレート認識は様々なアプリケーションを可能にします:

  • 駐車場管理:入出庫ロギングと支払い処理の自動化
  • 料金徴収:料金所での車両識別のスピードアップ
  • セキュリティ監視:制限区域での車両の動きを追跡する
  • フリート管理:社用車と物流を監視する
  • 法執行:対象車両をすばやく特定する

IronOCRは高精度でリアルタイムに画像を処理できるため、バッチ処理にもライブアプリケーションにも適しています。

よくある質問

C#で画像からナンバープレートを読み取るには?

IronOCRのReadLicensePlateメソッドを使ってC#でナンバープレートを読むことができます。IronTesseractインスタンスを作成し、ナンバープレート画像を含むOcrInputを指定してReadLicensePlateを呼び出すだけです。このメソッドは、抽出されたナンバープレートのテキストと信頼度スコアのOcrLicensePlateResultを返します。

ナンバープレート認識にはどのパッケージをインストールする必要がありますか?

IronOCRのナンバープレート認識機能を使用するには、NuGetからIronOCRのメインパッケージとIronOcr.Extension.AdvancedScanパッケージの両方をインストールする必要があります。AdvancedScanエクステンションは専用のReadLicensePlateメソッドを提供する。

たった1行のコードでナンバープレートを抽出できますか?

はい、IronOCRは1行のコードでナンバープレートのテキストを抽出することができます:OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); これでナンバープレートと信頼度スコアが即座に返されます。

ナンバープレート認識でサポートされている言語は?

IronOCRのReadLicensePlateメソッドは現在、英語、中国語、日本語、韓国語、ラテンアルファベットのナンバープレートをサポートしています。このメソッドはこれらの文字セット専用に最適化されています。

ナンバープレートの読み取り精度を向上させるにはどうすればよいですか?

IronOCRでは、ナンバープレートに現れる特定の文字をホワイトリストに登録し、ヘッダーやフッターを含まないナンバープレートだけを画像に含ませ、高品質の画像を使用することで精度を向上させることができます。ReadLicensePlateメソッドはすでにナンバープレート認識専用に最適化されています。

.NET Frameworkでのナンバープレート認識のシステム要件は何ですか?

.NET Framework上でReadLicensePlateを含むIronOCRの高度なスキャン機能を使用する場合、プロジェクトはx64アーキテクチャ上で実行する必要があります。この要件はナンバープレート認識機能の最適なパフォーマンスを保証します。

ナンバープレート認識はどのような情報を返しますか?

IronOCRのReadLicensePlateメソッドは、抽出されたナンバープレートテキストと信頼度スコアを含むOcrLicensePlateResultオブジェクトを返します。これにより、ナンバープレートの取得とOCR結果の信頼性評価の両方が可能になります。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 5,299,091 | バージョン: 2025.12 リリース