使用 IRONOCR 如何在 C# 中對字幕進行 OCR(教學) Kannapat Udonpant 更新:8月 24, 2025 下載 IronOCR NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 在本教程中,我們將學習如何從影片檔案中提取硬編碼字幕。 我們將選取一個視訊檔案作為範例,並將其中硬編碼的字幕提取到一個文字檔案中。我們將開發一個 C# .NET 程序,利用 OCR 技術提取這些硬編碼的字幕。 我會盡量讓本教學簡單易懂,以便即使是 C# 程式設計初學者也能理解。 我們需要一個高效的光學字元辨識(OCR)引擎,能夠處理影片並取得字幕文件,而無需考慮字幕語言。 有很多圖書館提供OCR識別結果。 有些函式庫是付費的,有些函式庫使用起來很困難,有些函式庫效率不高或不準確,因此很難找到一個免費、有效率、易用且能提供準確結果的函式庫。 IronOCR 對開發者免費,並為商業用途提供一個月的免費試用期。 它支援超過 150 種語言,並且比大多數其他 OCR 庫提供更高的準確率。 它也高效且易於使用。 我們將使用這個庫進行演示。 如何在 C# 中進行 OCR 字幕識別 安裝 C# 庫以對字幕執行 OCR 識別。 將帶有字幕的圖像匯入到新的OcrInput實例中 透過應用選定的濾波器對影像進行預處理。 指定影像中字幕的位置,以提高OCR效能和準確性 將檢索到的文字匯出為文字文件 IronOCR。 IronOCR是由 Iron Software 開發和維護的函式庫,它可以幫助 C# 軟體工程師在 .NET 專案中執行 OCR、條碼掃描和文字擷取。 IronOCR 的功能包括: 讀取多種格式的文本,例如圖像(JPEG、PNG、BMP)、 GIF 、 TIF/TIFF 、串流媒體和PDF。 使用多種濾鏡(例如去斜、降噪、二值化、增強解析度、膨脹等)校正低品質掃描件和照片 -支援讀取 20 多種不同格式的條碼以及二維碼 採用最新版本的 Tesseract OCR,其效能遠超同類其他函式庫。 匯出可搜尋的 PDF、hOCR / HTML 匯出和圖片內容文字。 讓我們開發一個讀取車牌號碼的演示應用程式。 建立一個 Visual Studio 項目 第一步是建立一個新專案。 開啟 Visual Studio。 點選"建立新專案" ,然後選擇"控制台應用程式"專案範本。 點擊"下一步"按鈕,並為項目命名(我將其命名為"OCR 字幕",您可以根據自己的喜好命名)。 點選"下一步"按鈕,然後選擇目標框架。 最後,點擊"建立"按鈕建立項目。 項目將按如下所示建立。 如何在 C# 中進行 OCR 字幕辨識(教學),圖 1:在 Visual Studio 中建立新項目 在 Visual Studio 中建立新項目 現在,我們需要安裝 IronOCR 庫才能在我們的專案中使用它。 最簡單的方法是透過 NuGet 套件管理器為解決方案安裝。 安裝 IronOCR NuGet 套件 點選頂部功能表列中的"工具" ,然後選擇"NuGet 套件管理器" > "管理解決方案的 NuGet 套件" ,如下圖所示。 如何在 C# 中進行 OCR 字幕辨識(教學),圖 2:在 Visual Studio 中安裝 IronOCR 在 Visual Studio 中安裝 IronOCR 將出現以下視窗。 如何在 C# 中進行 OCR 字幕辨識(教學),圖 3:Visual Studio NuGet 套件管理器 UI Visual Studio NuGet 套件管理器 UI 點擊瀏覽,搜尋 IronOCR。 選擇 IronOCR 軟體包,然後按一下"安裝"按鈕,如下圖所示。 如何在 C# 中進行 OCR 字幕辨識(教學),圖 4:在 NuGet 套件管理器 UI 中搜尋 IronOCR 在 NuGet 套件管理器 UI 中搜尋 IronOCR IronOCR庫將安裝完畢,即可使用。 提取硬編碼字幕 讓我們寫一個程式來提取硬編碼的字幕。 我們將使用以下螢幕截圖來提取字幕。 如何在 C# 中進行 OCR 字幕識別(教程),圖 5:範例視訊截圖,從中提取文本 視訊截圖範例,將從中提取文本 新增以下命名空間: using IronOcr; using IronOcr; Imports IronOcr $vbLabelText $csharpLabel 在命名空間聲明下方編寫以下程式碼。 // 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); } ' Initialize IronTesseract object Dim ocr = New IronTesseract() ' Create an OCR Input using the specified image path Using input = New OcrInput("D:\License Plate\plate3.jpg") ' Perform OCR on the input image to extract text Dim result = ocr.Read(input) ' Output the extracted text to the console Console.WriteLine(result.Text) End Using $vbLabelText $csharpLabel 上述程式碼的工作原理如下: 初始化IronTesseract物件。 它將創建一個IronTesseract的預設實例。 建立一個新的OcrInput對象,並填入輸入影像檔案或 PDF 文件。 OcrInput是首選的輸入類型,因為它允許對多頁文件進行 OCR,並且允許在 OCR 之前增強影像,以獲得更快、更準確的結果。 從 OCR 輸入物件讀取文字並傳回 OCR 結果物件。 ocr.Read將從給定的輸入螢幕截圖中提取字幕。 result.Text將傳回從給定輸入中提取的全部內容。 範例程式會在控制台輸出以下內容: 如何在 C# 中進行 OCR 字幕辨識(教學),圖 7:使用 IronOCR 對範例影像進行文字擷取後產生的控制台輸出 使用 IronOCR 對範例影像進行文字擷取後產生的控制台輸出 假設你有一個視訊幀,其中包含視訊標題和字幕: 如何在 C# 中進行 OCR 字幕識別(教程),圖 6:包含影片標題和視訊字幕文字區域的長影片的單幀圖像 一段較長影片中的單幀畫面,包含影片標題和影片字幕的文字區域。 我們的目標是從圖像底部區域提取硬編碼的字幕。 在這種情況下,我們需要指定顯示副標題的文字區域。 指定字幕在畫面中的位置 我們可以使用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); } ' Initialize IronTesseract object Dim ocr = New IronTesseract() ' Create an OCR Input and specify the region of interest Using input = New OcrInput() ' Define the area within the image where subtitles are located for a 41% improvement on speed Dim 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 Dim result = ocr.Read(input) ' Output the extracted text to the console Console.WriteLine(result.Text) End Using $vbLabelText $csharpLabel 這樣可以提高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"); } ' Initialize IronTesseract object Dim ocr = New IronTesseract() ' Create an OCR Input with the specified image path Using input = New OcrInput("D:\subtitle\subtitle1.png") ' Perform OCR on the input image to extract text Dim result = ocr.Read(input) ' Save the extracted text to a specified file path result.SaveAsTextFile("D:\subtitle\subtitlefile.txt") End Using $vbLabelText $csharpLabel result.SaveAsTextFile會將輸出路徑作為參數,並將檔案儲存到給定的路徑中。 如何在 C# 中進行 OCR 字幕識別(教程),圖 8:包含影片標題和視訊字幕文字區域的長影片的單幀圖像 一段較長影片中的單幀畫面,包含影片標題和影片字幕的文字區域。 概括 在本教程中,我們學習瞭如何使用 IronOCR 並開發了一個非常簡單的程序,用於從視訊截圖中讀取字幕。 我們也可以指定要提取文字的區域。 IronOCR 提供了OpenCV的電腦視覺功能。 我們已經看到,IronOCR 使我們能夠從模糊或低解析度圖像中讀取文字。 這個庫高效且準確。 它支援 125 種以上的語言,準確率極高。 它可免費用於開發,且對生產沒有任何限制。 總而言之,IronOCR 提供: 具備掃描讀取影像及掃描文件的能力 支援150 多種全球語言 輸出格式可以是文字、結構化資料或可搜尋的PDF文件 支援 .NET 6、5、Core、Standard 和 Framework IronOCR是 Iron Software 的一套庫的一部分,該庫可用於讀取和寫入 PDF 、操作 Excel 文件、從圖像中讀取文字以及從網站抓取內容。 只需支付兩個獨立庫的價格,即可購買完整的Iron Suite 套裝。 常見問題解答 如何使用 C# 從視訊檔中擷取硬碼字幕? 您可以使用 IronOCR 用 C# 從視訊檔案中擷取硬碼字幕。透過 NuGet 套件管理員安裝該函式庫,然後用它來處理視訊畫格並擷取文字。 與 Tesseract 相比,使用 IronOCR 進行字幕擷取的優勢何在? IronOCR 提供了 Tesseract 的升級替代方案,具有更高的精確度、易用性,並支援超過 150 種語言,非常適合從影片中擷取字幕。 如何在 IronOCR 中指定字幕位置以提高處理速度? 您可以在 IronOCR 中使用 System.Drawing.Rectangle 指定字幕位置,以聚焦於感興趣的區域,這樣可以提高處理速度達 41%。 在提取字幕時,IronOCR 可以用於英文以外的語言嗎? 是的,IronOCR 支援超過 150 種語言,能夠準確地從多國語言的影片中擷取字幕。 遵循 C# 字幕 OCR 教程的先決條件是什麼? 本教學要求具備 C# 程式設計的基本知識,並能使用 Visual Studio 透過 NuGet 套件管理員安裝 IronOCR 函式庫。 IronOCR 如何處理低品質視訊畫格? IronOCR 包含修正低品質掃描的功能,可提高從次佳視訊畫面擷取文字的精確度。 使用 IronOCR 擷取字幕後有哪些輸出格式? 擷取的字幕可以使用 IronOCR 儲存為文字檔、結構化資料或可搜尋的 PDF。 在商業專案中使用 IronOCR 是否需要成本? IronOCR 對於開發用途是免費的,對於商業專案則提供一個月的免費試用。若要持續進行商業使用,則必須取得授權。 IronOCR 是否可以與其他函式庫整合以獲得額外的功能? 是的,IronOCR 可以與其他 Iron 軟體程式庫整合,以執行 PDF 操作和網頁搜刮等任務,增強其功能。 Kannapat Udonpant 立即與工程團隊聊天 軟體工程師 在成為软件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人实验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因为他直接向编写大部分 IronPDF 使用的代码的开发者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代码或文档时,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。 相關文章 發表日期 12月 18, 2025 C# 讀取 PDF 表單欄位:以程式設計方式擷取表單數據 學習如何在C#中使用IronPDF讀取PDF表單字段。從可填寫PDF中提取文本、複選框、下拉列表等的簡單代碼示例。 閱讀更多 發表日期 12月 18, 2025 C# 從 PDF 擷取影像:完整開發者指南 學習如何使用IronPDF強大的方法從C#中的PDF文檔中提取圖像。完整指南中包含了.NET開發人員的代碼示例。 閱讀更多 發表日期 12月 18, 2025 C# 將 PDF 轉換為圖像:完整開發者指南 學習如何使用IronPDF將PDF文檔轉換為C#中的圖像。詳盡指南中提供了JPG、PNG和TIFF轉換的代碼示例。 閱讀更多 如何在 C# 中從螢幕截圖中提取文本
發表日期 12月 18, 2025 C# 讀取 PDF 表單欄位:以程式設計方式擷取表單數據 學習如何在C#中使用IronPDF讀取PDF表單字段。從可填寫PDF中提取文本、複選框、下拉列表等的簡單代碼示例。 閱讀更多
發表日期 12月 18, 2025 C# 從 PDF 擷取影像:完整開發者指南 學習如何使用IronPDF強大的方法從C#中的PDF文檔中提取圖像。完整指南中包含了.NET開發人員的代碼示例。 閱讀更多
發表日期 12月 18, 2025 C# 將 PDF 轉換為圖像:完整開發者指南 學習如何使用IronPDF將PDF文檔轉換為C#中的圖像。詳盡指南中提供了JPG、PNG和TIFF轉換的代碼示例。 閱讀更多