透かしなしで本番環境でテストしてください。
必要な場所で動作します。
30日間、完全に機能する製品をご利用いただけます。
数分で稼働させることができます。
製品トライアル期間中にサポートエンジニアリングチームへの完全アクセス
このチュートリアルでは、ビデオファイルからハードコードされた字幕を抽出する方法について学びます。 サンプル動画ファイルを使用して、ハードコーディングされた字幕をtxtファイルに抽出します。OCRプロセスを使用してハードコーディングされた字幕を抽出するC# .NETプログラムを開発します。 このチュートリアルはシンプルで分かりやすくしますので、初心者のC#プログラマーでも理解できるようにします。
私たちは、字幕の言語に関係なく、ビデオを処理して字幕ファイルを取得できる効率的な光学式文字認識(OCR)エンジンが必要です。
OCR結果を提供するライブラリは多数あります。 いくつかは有料であり、いくつかは使いにくく、またいくつかは効率的でないか正確でないため、無料で、効率的で、使いやすく、正確な結果を提供するライブラリを見つけることは非常に困難です。
IronOCRは、開発目的で無料で使用でき、商用利用には1ヶ月間の無料トライアルを提供しています。 150を超える言語をサポートし、他の多くのOCRライブラリよりも高い精度を提供します。 それはまた、効率的で使いやすいです。 このライブラリをデモンストレーションに使用します。
IronOCRは、C#ソフトウェアエンジニアが.NETプロジェクトでOCR、バーコードスキャン、およびテキスト抽出を行うのを支援するために、Iron Softwareによって開発および維持されているライブラリです。
IronOCRの特徴には以下が含まれます:
検索可能なPDFのエクスポート、hOCR / HTMLのエクスポート、および画像コンテンツのテキスト。
ナンバープレート番号を読み取るデモアプリケーションを開発しましょう。
最初のステップは、新しいプロジェクトを作成することです。
Visual Studioを開きます。 新しいプロジェクトを作成をクリックし、コンソール アプリケーション プロジェクト テンプレートを選択します。
次へボタンをクリックし、プロジェクトに名前を付けます(私は「OCR Subtitles」と名付けましたが、お好みで名前を付けてください)。
次へ ボタンをクリックして、ターゲットフレームワークを選択します。 最後に、作成 ボタンをクリックしてプロジェクトを作成します。
プロジェクトは以下のように作成されます。
Visual Studioで新しいプロジェクトを作成
次に、プロジェクトで使用するためにIronOCRライブラリをインストールする必要があります。 最も簡単な方法は、ソリューションのためのNuGetパッケージマネージャーを介してインストールすることです。
上部メニューバーからツールをクリックし、NuGet パッケージ マネージャー > ソリューションの NuGet パッケージを管理を選択します。以下の図を参照してください。
Visual StudioでのIronOCRのインストール
次のウィンドウが表示されます。
C#で字幕をOCRする方法(チュートリアル)、図3: Visual Studio NuGet パッケージ マネージャー UI
Visual Studio NuGet パッケージマネージャー UI
参照をクリックして、IronOCRを検索してください。 IronOCRパッケージを選択し、下に示されているインストールボタンをクリックします。
NuGet パッケージ マネージャー UI で IronOCR を検索
IronOCRライブラリがインストールされ、使用準備が整います。
ハードコードされた字幕を抽出するプログラムを書きましょう。
以下のスクリーンショットを使用して字幕を抽出します。
テキストを抽出するサンプルビデオのスクリーンショット
次の名前空間を追加してください:
using IronOcr;
using IronOcr;
Imports IronOcr
名前空間の宣言の下に次のコードを書いてください。
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
上記のコードは次のように動作します:
IronTesseract
オブジェクトを初期化します。 それはIronTessearct
のデフォルトインスタンスを作成します。
入力画像ファイルまたはPDFドキュメントでOcrInput
オブジェクトを新たに作成します。 OcrInput
は好ましい入力タイプです。これは多ページのドキュメントのOCRを可能にし、OCRの前に画像を強化してより速く、より正確な結果を得ることができるためです。
OCR入力オブジェクトからテキストを読み取り、OCR結果オブジェクトを返します。 ocr.Read
は、指定された入力スクリーンショットから字幕を抽出します。
result.Text
は、指定された入力から抽出されたすべてのコンテンツを返します。
サンプルプログラムは以下のコンソール出力を生成します:
IronOCRを使用してサンプル画像からテキスト抽出を実行した際に生成されたコンソール出力
ビデオのフレームに、ビデオのタイトルと字幕の両方が含まれていると仮定しましょう。
ビデオのタイトルと字幕用のテキスト領域を含む、より長いビデオの単一フレーム
私たちの目標は、画像の下部領域からハードコーディングされた字幕を抽出することです。 この場合、字幕が表示されるテキスト領域を指定する必要があります。
私たちは、ビデオフレームから字幕を読み取る領域を指定するためにSystem.Drawing.Rectangle
を使用できます。 測定単位は常にピクセルです。
以下のサンプルコードを使用してテキスト領域を指定します。
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 189, y: 272, height: 252, width: 77);
input.AddImage(@"D:\subtitle\image.png", 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: 189, y: 272, height: 252, width: 77);
input.AddImage(@"D:\subtitle\image.png", 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:= 189, y:= 272, height:= 252, width:= 77)
input.AddImage("D:\subtitle\image.png", contentArea)
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
これにより、41%スピードが向上し、具体的に指示を出すことができます。 contentArea
では、x と y の開始点、そして必要な字幕領域の高さと幅を指定しています。
抽出した字幕をTXTファイルに保存しましょう。
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
var result = ocr.Read(input);
result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\subtitle\subtitle1.png"))
{
var result = ocr.Read(input);
result.SaveAsTextFile(@"D:\subtitle\subtitlefile.txt");
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\subtitle\subtitle1.png")
Dim result = ocr.Read(input)
result.SaveAsTextFile("D:\subtitle\subtitlefile.txt")
End Using
result.SaveAsTextFile
は出力パスを引数として取り、指定されたパスにファイルを保存します。
ビデオのタイトルと字幕用のテキスト領域を含む、より長いビデオの単一フレーム
このチュートリアルでは、IronOCRを使用して、ビデオスクリーンショットから字幕を読み取る非常にシンプルなプログラムを開発する方法を学びました。 また、テキストを抽出したい領域を指定することもできます。
IronOCRはOpenCVによるコンピュータビジョンの機能を提供します。 私たちは、IronOCRによってぼやけた画像や低解像度の画像からテキストを読み取ることができることを確認しました。 このライブラリは効率的で高精度を提供します。 127以上の言語に完全対応しています。 開発には無料であり、実運用に制限はありません。
要約すると、IronOCR は以下を提供します:
.NET 6、5、Core、Standard、Frameworkをサポート
IronOCRは、PDFの読み書き、Excelファイルの操作、画像からのテキスト読み取り、およびウェブサイトからのコンテンツ取得に便利なIron Softwareのライブラリスイートの一部です。 2つの個別ライブラリの価格で完全なIron Suiteを購入できます。