在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
在本教程中,我們將學習如何從視頻文件中提取硬編碼字幕。 我們將取樣一個視頻文件,並將內嵌字幕提取到一個 txt 文件中。我們將開發一個 C# .NET 程式,使用 OCR 過程提取內嵌字幕。 我將使本教程保持簡單易懂,即使是初學者的 C# 程式設計師也能理解。
我們需要一個高效能的光學字符辨識 (OCR) 引擎,不論字幕語言為何,都能處理影片並取得字幕檔案。
有許多提供 OCR 結果的庫可用。 其中有些是付費的,有些難以使用,而有些則效率不高或不準確,因此很難找到一個免費、高效、易於使用且能提供準確結果的庫。
IronOCR 在開發時免費,並為商業用途提供一個月的免費試用。 它支持超過 150 種語言,並且提供比大多數其他可用的 OCR 函式庫更高的準確性。 它既高效又易於使用。 我們將使用此庫進行示範。
IronOCR 是由 Iron Software 開發和維護的一個庫,幫助 C# 軟體工程師在 .NET 項目中執行 OCR、條形碼掃描和文字提取。
IronOCR 的特點包括:
導出可搜索的PDF、hOCR/HTML導出和圖像內容文本。
讓我們開發一個讀取車牌號碼的演示應用程式。
第一步是建立一個新專案。
打開 Visual Studio。 點擊建立新專案,然後選擇控制台應用專案模板。
按一下下一步按鈕,為專案命名(我命名為「OCR Subtitles」,您可以根據自己的選擇命名)。
點擊下一步按鈕,並選擇您的目標框架。 最後,點擊建立按鈕來建立專案。
該專案將按如下所示創建。
在 Visual Studio 中創建新專案
現在,我們需要安裝IronOCR庫以在我們的專案中使用它。 最簡單的方法是通過 NuGet 封裝管理器為解決方案安裝它。
在頂部選單列中點擊工具,然後選擇NuGet 套件管理器 > 管理方案的 NuGet 套件,如下所示。
在 Visual Studio 中安裝 IronOCR
以下視窗將會出現。
Visual Studio NuGet 套件管理器介面
點擊瀏覽,然後搜尋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
的默認實例。
建立一個新的OcrInput
物件,填入輸入圖像檔或 PDF 文件。 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 是 Iron Software 的套件庫之一,適用於 讀寫 PDF 檔案、操作 Excel 檔案、從圖像中讀取文字,以及從網站抓取內容。 購買完整的Iron Suite,僅需兩個單獨庫的價格。