VisioForge

.NET で動画ストリームをオンデバイス OCR

RTSP カメラのストリーム、Web カメラ、動画ファイル内の文字を C# から認識します。OCR は Media Blocks SDK .NET のパイプラインのブロックとして動作し、デバイス上でプレビュー・録画・ストリーミングと並行して処理します。

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

動画 OCR は画像 OCR をループで回すことではありません

画像 OCR ライブラリが受け取るのは 1 枚のビットマップです。それでカメラや録画から文字を読むには、ストリームのデコード、フレームの選択と変換、ライブラリの呼び出し、各フレームが表示された時刻の管理を自分で行う必要があります。VisioForge SDK では OCR は動画パイプラインのブロックです。SDK がソースをデコードし、OcrBlock が通過するフレームを読み取り、同じフレームがそのまま画面、ファイル、ネットワークストリームへ流れます。

画像 OCR ライブラリと動画パイプライン内の OCR の比較

一般的な画像 OCR ライブラリVisioForge パイプライン内の OcrBlock
入力コードから渡すビットマップSDK の任意のソース(ファイル、Web カメラ、RTSP カメラ)のデコード済みフレーム
動画のデコード別途デコーダーやフレームグラバーを使って自分で実装パイプラインが処理
読み取るフレーム自分で選んで変換FramesToSkip。OCR の処理中に届いたフレームはスキップされ、件数が記録されます
文字が表示された時刻自分で管理OnTextDetected イベントごとのタイムスタンプ
同時の録画・ストリーミング別の動画パイプラインが必要同じパイプライン:OcrBlock の出力がエンコーダー、ファイル、ストリームへ続きます
動画内の枠と文字自分で描画DrawResults

パイプライン内の OCR で得られること

OcrBlock は VisioForge.DotNet.Core.AI パッケージに含まれています。動画入力と動画出力を 1 つずつ持ち、受け取ったフレームで PP-OCR モデルを実行します。

  • デコードは SDK が担当:SDK が開ける任意のソース(動画ファイル、Web カメラ、RTSP IP カメラ)を OcrBlock に直接接続できます
  • 時刻と位置付きの文字:各 OnTextDetected イベントにはフレームの Timestamp と、行ごとの Text、Confidence、BoundingBox が含まれます
  • 録画・ストリーミングと並行して OCR:フレームはそのまま、または文字を描画した状態で OcrBlock から出て、同じパイプライン内でエンコーダー、ファイル、ネットワーク出力へ進みます
  • デバイス上で動作:ONNX Runtime 上の PP-OCR モデルを CPU、CUDA、DirectML、CoreML のプロバイダーで実行。クラウド API も呼び出しごとの料金もなく、動画はマシンの外に出ません
  • 100 以上の言語:RecognitionModelPath と CharacterDictionaryPath に対象言語の PP-OCR モデルと辞書を指定します。サンプルにはラテン文字モデルが同梱されています
  • クロスプラットフォーム:1 つの C# コードで Windows、macOS、Linux、Android、iOS に対応。OCR サンプルは .NET MAUI 版もあります
  • ライブ動画の負荷を制御:FramesToSkip = N で N + 1 フレームに 1 回 OCR を実行します。各設定とその既定値は OCR ガイドに記載されています

活用例

検索可能な録画

講義、ウェビナー、画面録画の文字を行ごとのタイムスタンプ付きで抽出し、インデックス化します。

放送とデジタルサイネージの監視

テロップ、ティッカー、デジタルサイネージに想定どおりの文字が表示されているかを、ライブ映像または録画で確認します。

生産ライン

固定カメラでシリアル番号、ロット番号、印刷ラベルを読み取り、同じストリームをトレーサビリティのために録画します。

小売・倉庫の IP カメラ

棚札や商品ラベルを現場の RTSP カメラで読み取ります。動画をクラウドの OCR サービスへ送る必要はありません。

コード例

OCR Text Recognition Demo をもとに作成。録画部分は Media Blocks のサンプルと同じ方法で H.264 エンコーダーと MP4 シンクを接続しています。

動画ファイルの文字をタイムスタンプ付きで抽出

C#

RTSP カメラの文字を読み取り MP4 に録画

C#

パイプライン

RTSP の例では、OcrBlock はカメラとエンコーダーの間に置かれます。認識された文字は OnTextDetected イベントで受け取り、フレームは H.264 エンコーダーと MP4 ファイルへ進みます。

RTSPSourceBlock
OcrBlock
H264EncoderBlock
MP4SinkBlock

よくある質問

動画はマシンの外に送信されますか?▼
いいえ。OcrBlock は ONNX Runtime を使い、アプリのプロセス内で PP-OCR モデルを実行します。クラウドサービスも API キーもなく、フレームと認識された文字はデバイス上に留まります。モデルはアプリと一緒に配布するファイルです。
画像 OCR ライブラリとの違いは何ですか?▼
画像 OCR ライブラリでは、動画のデコード、フレームの選択、ビットマップごとの呼び出しを自分で行う必要があります。OcrBlock はソースをデコードするパイプラインの一部です。デコード済みフレームを受け取り、FramesToSkip に従ってスキップし、各領域をフレームのタイムスタンプとともに通知し、フレームを表示、エンコード、ストリーミングへ渡します。
文字の認識とストリームの録画を同時に行えますか?▼
はい。上の RTSP の例のように、OcrBlock の出力をエンコーダーとファイルシンクに接続します。枠と文字を録画に焼き込むかどうかは DrawResults で決まります。
どの SDK が必要ですか?▼
OcrBlock は VisioForge.DotNet.Core.AI パッケージに含まれています。パイプラインを自分で構築する場合は Media Blocks SDK .NET のパイプラインで使います。アプリがすでにキャプチャエンジンやプレーヤーエンジンで作られている場合は、Video_Processing_AddBlock で Video Capture SDK .NET の VideoCaptureCoreX、または Media Player SDK .NET の MediaPlayerCoreX に追加します。
OCR モデルを商用製品に同梱できますか?▼
SDK はサードパーティの ONNX モデルを実行するもので、NuGet パッケージにモデルの重みは含まれていません。サンプルに同梱の PP-OCRv5 mobile モデルは Apache-2.0 です。モデルのライセンスは提供元によって決まるため、他のモデルを同梱する前に、そのモデル、重み、学習データのライセンスを確認してください。
OCR を他の AI ブロックと組み合わせられますか?▼
はい。LicensePlateRecognizerBlock、YOLOObjectDetectorBlock、PIIRedactionBlock は OcrBlock と同じ動画入力と動画出力を持つため、同じパイプライン内で順につなげられます。画面上の文字を読むのではなく隠したい場合は、PIIRedactionBlock が PaddleOCR モデルで見つけた文字領域をぼかすかモザイク処理します。