C#での字幕のOCR方法(チュートリアル)
このチュートリアルでは、ビデオファイルからハードコードされた字幕を抽出する方法を学びます。 サンプルのビデオファイルを取り出し、ハードコードされた字幕をテキストファイルに抽出します。OCRプロセスを使用してハードコードされた字幕を抽出するC# .NETプログラムを開発します。 このチュートリアルをシンプルで簡単にして、C#の初心者でも理解できるようにします。
字幕の言語に関係なく、ビデオを処理して字幕ファイルを取得できる効率的な光学文字認識(OCR)エンジンが必要です。
OCRの結果を提供する多くのライブラリが利用可能です。 その中には有料のもの、使いにくいもの、効果的ではないものや正確でないものもあり、無料で、効率的で、使いやすく、正確な結果を提供するライブラリを見つけるのは非常に難しいです。
開発に無料で使用できるIronOCRは、商業目的に1か月の無料トライアルを提供しています。 150以上の言語をサポートし、他の多くのOCRライブラリよりも高い精度を提供します。 効率的で使いやすいのも魅力です。 このライブラリをデモンストレーションに使用します。
C#で字幕をOCRする方法
- 字幕のOCRを実行するためのC#ライブラリをインストールする
- 字幕付きの画像を新しい
OcrInputインスタンスにインポートします。 - 選択したフィルターを適用して画像を前処理する
- 画像内の字幕の位置を指定して、OCRのパフォーマンスと精度を向上させます
- 取得したテキストをテキストファイルとしてエクスポートする
IronOCRの概要
IronOCRは、C#ソフトウェアエンジニアが.NETプロジェクトでOCR、バーコードスキャン、テキスト抽出を行うのを支援するために、Iron Softwareによって開発および維持されているライブラリです。
IronOCRの機能には以下が含まれます:
- 画像(JPEG、PNG、BMP)、GIF、TIF/TIFF、ストリーム、PDFなど多くの形式からのテキスト読み取り
- デスキュー、ノイズ除去、2値化、解像度の向上、拡張などの多数のフィルターによる低品質のスキャンや写真の補正
- 20以上の異なる形式からのバーコードの読み取り、QRコードサポート付き
- そのパフォーマンスが他の同種ライブラリを大幅に上回る最新のTesseract OCRビルドを使用
- 検索可能なPDF、hOCR / HTMLエクスポート、画像のコンテンツテキストをエクスポート
ナンバープレートを読み取るデモアプリケーションを開発しましょう。
Visual Studioプロジェクトを作成
最初のステップは、新しいプロジェクトを作成することです。
Visual Studioを開きます。 新しいプロジェクトを作成をクリックし、コンソールアプリケーションのプロジェクトテンプレートを選択します。
次へボタンをクリックし、プロジェクトに名前を付けます(私は"OCR字幕"と名付けましたが、好みの名前に変更できます)。
次へボタンをクリックし、ターゲットフレームワークを選択します。 最後に、作成ボタンをクリックしてプロジェクトを作成します。
プロジェクトは以下のように作成されます。
Visual Studioで新しいプロジェクトを作成する
今、プロジェクトで使用するためにIronOCRライブラリをインストールする必要があります。 最も簡単な方法は、NuGetパッケージマネージャーを使用してソリューションにインストールすることです。
IronOCRの概要 NuGetパッケージをインストールする
上部メニューバーからツールをクリックし、NuGetパッケージマネージャー > ソリューションのNuGetパッケージを管理を選択します。
Visual StudioでのIronOCRのインストール
次のウィンドウが表示されます。
Visual Studio NuGet Package Manager UI
"参照"をクリックして、IronOCRを検索します。 IronOCRパッケージを選択し、インストールボタンをクリックします。
NuGet Package Manager UIでIronOCRを検索する
IronOCRライブラリがインストールされ、使用可能になります。
ハードコードされた字幕を抽出する
ハードコードされた字幕を抽出するプログラムを書きましょう。
以下のスクリーンショットを使用して字幕を抽出します。
抽出されるテキストのサンプルビデオスクリーンショット
以下の名前空間を追加します。
using IronOcr;using IronOcr;namespace宣言の下に以下のコードを書きます。
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
// Perform OCR on the input image to extract text
var result = ocr.Read(input);
// Output the extracted text to the console
Console.WriteLine(result.Text);
}// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input using the specified image path
using (var input = new OcrInput(@"D:\License Plate\plate3.jpg"))
{
// Perform OCR on the input image to extract text
var result = ocr.Read(input);
// Output the extracted text to the console
Console.WriteLine(result.Text);
}上記のコードは次のように動作します:
IronTesseractオブジェクトを初期化します。 それにより、IronTesseractのデフォルトインスタンスが作成されます。OcrInputオブジェクトを作成し、入力画像ファイルまたはPDFドキュメントで埋めます。OcrInputはマルチページドキュメントのOCRを可能にし、OCRの前に画像を強化することでより速く、より正確な結果を得ることができるため、推奨入力タイプです。- OCR入力オブジェクトからテキストを読み取り、OCR結果オブジェクトを返します。
ocr.Readは、与えられた入力スクリーンショットから字幕を抽出します。 result.Textは、与えられた入力から抽出された全内容を返します。
サンプルプログラムは以下のコンソール出力を生成します:
IronOCRを使用してサンプル画像のテキスト抽出を実行した際に生成されるコンソール出力
ビデオタイトルと字幕の両方を含むビデオフレームがあると仮定しましょう:
ビデオタイトルと字幕のテキスト領域を含む長いビデオの1コマ
私たちの目標は、画像の下部領域からハードコードされた字幕を抽出することです。 この場合、字幕が表示されるテキスト領域を指定する必要があります。
フレームでの字幕の位置を指定する
System.Drawing.Rectangleを使用することで、ビデオフレームから字幕を読み取る領域を指定できます。 計測単位は常にピクセルです。
テキスト領域を指定するために以下のサンプルコードを使用します。
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
// Define the area within the image where subtitles are located for a 41% improvement on speed
var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
// Add the specific region of the image to the OCR input
input.AddImage(@"D:\subtitle\image.png", contentArea);
// Perform OCR on the specified region
var result = ocr.Read(input);
// Output the extracted text to the console
Console.WriteLine(result.Text);
}// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input and specify the region of interest
using (var input = new OcrInput())
{
// Define the area within the image where subtitles are located for a 41% improvement on speed
var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
// Add the specific region of the image to the OCR input
input.AddImage(@"D:\subtitle\image.png", contentArea);
// Perform OCR on the specified region
var result = ocr.Read(input);
// Output the extracted text to the console
Console.WriteLine(result.Text);
}これにより、41%の速度向上が実現し、特定性を高めることができます。 contentAreaでは、字幕領域のスタートポイントをxとyで指定し、その後に高さと幅を設定しています。
字幕を字幕テキストファイルに保存する
抽出された字幕をテキストファイルに保存しましょう。
// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
// Perform OCR on the input image to extract text
var result = ocr.Read(input);
// Save the extracted text to a specified file path
result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}// Initialize IronTesseract object
var ocr = new IronTesseract();
// Create an OCR Input with the specified image path
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
// Perform OCR on the input image to extract text
var result = ocr.Read(input);
// Save the extracted text to a specified file path
result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}result.SaveAsTextFileは、出力パスを引数として取り、指定されたパスにファイルを保存します。
ビデオタイトルと字幕のテキスト領域を含む長いビデオの1コマ
概要
このチュートリアルでは、IronOCRを使用し、ビデオスクリーンショットから字幕を読み取る非常にシンプルなプログラムを開発する方法を学びました。 また、抽出したいテキストの領域を指定することもできます。
IronOCRは、OpenCVによるコンピュータビジョンの機能を提供しています。 IronOCRを使用すると、ぼやけた画像や解像度の低い画像からテキストを読み取ることができることを確認しました。 このライブラリは効率的で、正確性を提供します。 125以上の言語を完全な精度でサポートしています。 開発には無料で、製品化には制限がありません。
要約すると、IronOCRは以下を提供します:
- 画像とスキャンされたドキュメントのスキャンおよび読み取り機能
- 150以上の世界言語のサポート
- テキスト、構造化データ、または検索可能なPDFとしての出力
- .NET 6、5、Core、Standard、Frameworkをサポート
IronOCRは、PDFの読み書き、Excelファイルの操作、画像からのテキストの読み取り、Webサイトからのコンテンツのスクレイピングに便利なIron Softwareのライブラリスイートの一部です。 Iron Suiteを二つの個別ライブラリの価格で購入できます。
よくある質問
C#でビデオファイルからハードコードされた字幕をどのように抽出するのですか?
C#でIronOCRを使用してビデオファイルからハードコードされた字幕を抽出できます。NuGetパッケージマネージャーを通じてライブラリをインストールし、その後ビデオフレームを処理してテキストを抽出します。
字幕抽出においてTesseractに対するIronOCRの利点は何ですか?
IronOCRは、150以上の言語をサポートし、動画から字幕を抽出するのに適しており、精度の向上や使いやすさを備えたTesseractのアップグレードされた代替手段を提供します。
処理速度を改善するためにIronOCRで字幕の位置をどのように指定しますか?
System.Drawing.Rectangleを使用して対象領域に集中することで、処理速度を最大41%向上させることができます。
IronOCRは字幕抽出の際に英語以外の言語でも使用できますか?
はい、IronOCRは150以上の言語をサポートしており、複数の言語のビデオから正確に字幕を抽出できます。
C#字幕OCRチュートリアルの前提条件は?
このチュートリアルには、C#プログラミングの基本的な知識と、NuGetパッケージマネージャーを使用してVisual StudioでIronOCRライブラリをインストールする能力が必要です。
IronOCRは低品質のビデオフレームをどのように処理しますか?
IronOCRには低品質のスキャンを修正する機能が含まれており、サブオプティマルなビデオフレームからのテキスト抽出の精度を向上させます。
IronOCRで字幕を抽出した後の出力フォーマットは何がありますか?
抽出された字幕は、テキストファイル、構造化データ、または検索可能なPDFとして保存できます。
商業プロジェクトでIronOCRを使用することには費用がかかりますか?
IronOCRは開発目的で無料で、商業プロジェクトには1か月間の無料トライアルを提供しています。継続して商業用に利用するにはライセンスが必要です。
IronOCRは追加機能のために他のライブラリと統合できますか?
はい、IronOCRはPDF操作やウェブスクレイピングなどを行うために他のIron Softwareライブラリと統合でき、その機能を向上させます。






