VisioForge

C# と .NET のナンバープレート認識(ANPR/LPR)

IP カメラ、Web カメラ、動画ファイルから C# で車両のナンバープレートを読み取ります。LicensePlateRecognizerBlock は各プレートを見つけて読み取り、テキストをタイムスタンプ付きで通知します。処理はデバイス上で、映像のプレビュー、録画、配信を行うのと同じパイプラインの中で行われます。

年間 €500 から · Lifetime ライセンス €1,500 から

ナンバープレートリーダーは、車に向けた汎用 OCR ではありません

ナンバープレート自動認識(ANPR、ALPR、LPR とも呼ばれます)は汎用 OCR ではありません。汎用 OCR はフレーム内のすべての看板、ステッカー、ロゴを読み取り、どのテキストがプレートなのかを知りません。ANPR には 2 つのモデルが必要です。プレートを見つける検出器と、プレートの文字で学習した OCR モデルです。さらにフレームも必要です。カメラからデコードし、ハードウェアが追いつけるレートで選び、ライブ映像を止めないようにします。VisioForge SDK では、LicensePlateRecognizerBlock は映像パイプラインのブロックです。SDK がソースをデコードし、ブロックがバックグラウンドスレッドで両方のモデルを実行し、フレームはそのまま画面、ファイル、ネットワークストリームへ流れます。

ANPR を自作またはクラウド API を呼ぶ場合と LicensePlateRecognizerBlock の比較

一般的な自作またはクラウドの ANPRVisioForge パイプラインの LicensePlateRecognizerBlock
プレートの検出プレート検出器を探すか学習させ、ONNX に書き出し、前処理と後処理を書くFastALPR YOLOv9-T プレート検出器(MIT)、DetectionConfidenceThreshold と MaxDetections
文字の読み取りフレーム内の他のテキストもすべて読む汎用 OCRプレート専用の fast-plate-ocr ヘッド。Text は大文字化され、英数字以外の文字は除去されます
カメラからのフレーム取得ソースの種類ごとに別のデコーダーやフレームグラバーSDK のあらゆるソース:RTSP IP カメラ、Web カメラ、動画ファイル
ライブ映像を滑らかに保つキャプチャスレッドでの認識がストリームを止める認識はバックグラウンドワーカーで実行。処理中に届いたフレームはスキップされ、カウントされます
各国のプレートモデルを再学習するか、プロバイダーを変える米国と 90 か国以上向けのグローバルヘッドと EU プレート向けの欧州ヘッドを RecognitionModelPath で選択
映像の行き先フレームをクラウドサービスに送り、呼び出しごとに課金どこにも送りません。ONNX Runtime がプロセス内で動作し、API キーも呼び出しごとの料金もありません

ANPR ブロックでできること

LicensePlateRecognizerBlock は VisioForge.DotNet.Core.AI パッケージに含まれます。映像入力と映像出力を 1 つずつ持ち、受け取ったフレームで 2 つの ONNX モデルを実行し、OnPlateRecognized イベントでプレートを通知します。

  • 2 段階の認識:YOLOv9-T 検出器がプレートを見つけ、切り出した各プレートをプレート専用の OCR モデルが読み取ります。どちらも MIT ライセンスの FastALPR モデルです
  • プレートごとの完全な結果:Text、Confidence(0〜1)、BoundingBox、ソースフレームのピクセル座標による 4 点の Polygon。各イベントにフレームの Timestamp が付きます
  • 地域別ヘッド:グローバルヘッドは米国と 90 か国以上、欧州ヘッドは EU プレートに最適化されています。どちらもラテン文字(数字と A〜Z)を読み取り、入力サイズはモデル自体から読み取られます
  • デバイス上で処理:Windows の GPU では DirectML、Apple プラットフォームでは CoreML、フォールバックは CPU の ONNX Runtime。使用中のものは ActiveProvider でわかります
  • ライブ映像は滑らかなまま:認識はバックグラウンドワーカーで実行され、FramesToSkip で実行頻度を設定し、LastInferenceTimeMs と DroppedFrameCount でハードウェアが追いついているかを確認できます
  • 認識と録画を同時に:DrawResults はプレートの枠とテキストを、プレビュー、ファイル、ストリームへ進むフレームに描画します
  • すべてのエンジンに 1 つのブロック:Media Blocks SDK .NET のパイプラインに接続するか、Video_Processing_AddBlock で VideoCaptureCoreX または MediaPlayerCoreX に追加します

利用シーン

駐車場の入出庫と精算

ゲートカメラでプレートを認識し、バーを開けるか駐車セッションを開始します。

料金所と入退場の記録

固定カメラの前をどのプレートがいつ通過したかを、映像を現地に置いたまま記録します。

車両と構内の管理

私有地や車庫に出入りする車両を追跡します。

交通確認用ツール

手動確認のためにプレートにフラグを付けます。最終的な取り締まりの判断には必ず人による確認を含めてください。

コード例

3 つの FastALPR モデルファイルが同梱された License Plate Recognition Demo をもとにしています。2 つ目の例は、Capture OCR X デモが AI ブロックを追加するのと同じ方法で VideoCaptureCoreX にブロックを追加します。

ゲートカメラのプレートを記録する

C#

IP カメラをプレビューし、プレートを一覧表示して MP4 に録画する

C#

パイプライン

ゲートの例では、LicensePlateRecognizerBlock はカメラとヌルレンダラーの間にあります。プレートは OnPlateRecognized イベントで通知され、DrawResults を有効にするとフレームが枠とテキストを次のブロックへ運びます。

RTSPSourceBlock
LicensePlateRecognizerBlock
NullRendererBlock

よくある質問

映像はマシンの外に出ますか?▼
いいえ。LicensePlateRecognizerBlock は両方のモデルを ONNX Runtime でプロセス内で実行します。クラウドサービスも API キーもなく、フレームとプレート番号はデバイス上に留まります。モデルはアプリケーションと一緒に配布する 2 つの .onnx ファイルです。
どの国のプレートを読み取れますか?▼
FastALPR のグローバル認識ヘッドは米国と 90 か国以上に対応し、別の欧州ヘッドは EU プレートに最適化されています。RecognitionModelPath を地域に合ったヘッドに設定してください。検出器はどちらも同じです。
独自のモデルを学習させる必要はありますか?▼
いいえ。ブロックは FastALPR YOLOv9-T 検出器と fast-plate-ocr 認識ヘッドをそのまま使います。用意するのは 2 つの .onnx ファイルだけで、License Plate Recognition Demo に同梱されています。
車両の多い混雑したシーンや遠くのプレートはどうですか?▼
ブロックは 1 フレームあたり最大 MaxDetections 個(既定値 10)のプレートを通知します。小さいプレートや遠くのプレートには、DetectionConfidenceThreshold を下げるか、カメラの画角を寄せてください。非常に混雑したシーンでは、前段に YOLOObjectDetectorBlock などの車両検出器を置いて先に車両を切り出せます。
どの SDK が必要ですか?▼
LicensePlateRecognizerBlock は VisioForge.DotNet.Core.AI パッケージにあります。パイプラインを自分で組む場合は Media Blocks SDK .NET のパイプラインで使い、アプリがすでにそれらのエンジンを使っている場合は Video_Processing_AddBlock で Video Capture SDK .NET の VideoCaptureCoreX または Media Player SDK .NET の MediaPlayerCoreX に追加します。
ナンバープレートは個人データですか?▼
ナンバープレートは GDPR などのプライバシー規制で一般に個人データとして扱われ、ANPR 独自の規則を持つ法域もあります。導入前に用途に合わせて確認してください。録画内のプレートを読むのではなく隠したい場合は、PIIRedactionBlock が同じプレート検出器でぼかしまたはモザイクをかけます。