在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在本教程中,我们将学习如何从视频文件中提取硬编码字幕。 我们将获取一个样本视频文件,并将硬编码字幕提取到一个 txt 文件中。我们将开发一个 C# .NET 程序,使用 OCR 流程提取硬编码字幕。 我将保持本教程的简单易懂,即使是 C# 程序员初学者也能看懂。
我们需要高效的光学字符识别技术(光学字符识别)能够处理视频并获取字幕文件(无论字幕语言)的引擎。
有许多库可以提供 OCR 结果。 这些工具中有些是收费的,有些难以使用,有些效率不高或不准确,因此很难找到一个免费、高效、易用并能提供准确结果的库。
IronOCR 用于开发是免费的,用于商业目的则提供一个月的免费试用期。 它支持 150 多种语言,比现有的大多数其他 OCR 库具有更高的准确性。 同时还要高效易用。 我们将使用该库进行演示。
IronOCR是由 Iron Software 开发和维护的一个库,可帮助 C# 软件工程师在 .NET 项目中执行 OCR、Barcode 扫描和文本提取。
IronOCR 的功能包括
导出可搜索的 PDF、hOCR / HTML 导出和图像内容文本。
让我们开发一个读取车牌号码的演示应用程序。
第一步是创建一个新项目。
打开 Visual Studio。 点击创建新项目,选择控制台应用程序项目模板。
单击下一步按钮,并为项目命名(我已将其命名为 "OCR 字幕",您可以根据自己的喜好为其命名).
单击下一步按钮,选择目标框架。 最后,点击创建按钮创建项目。
项目创建如下所示。
在 Visual Studio 中创建新项目
现在,我们需要安装 IronOCR 库,以便在项目中使用它。 最简单的方法是通过 NuGet Package Manager for Solution 进行安装。
单击顶部菜单栏中的工具,然后选择NuGet 包管理器 > Manage NuGet Packages for Solution,如下图所示。
在 Visual Studio 中安装 IronOCR
将出现以下窗口。
Visual Studio NuGet 软件包管理器用户界面
点击浏览,搜索 IronOCR。 选择 IronOCR 软件包,然后点击安装按钮,如下图所示。
在 NuGet 软件包管理器用户界面中搜索 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
上述代码的工作原理如下:
初始化钢铁魔方反对 它将创建一个 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
结果.保存为文本文件将输出路径作为参数,并将文件保存在给定的路径中。
较长视频的单帧,包含视频标题和视频字幕的文本区域
在本教程中,我们学习了 IronOCR 的使用方法,并开发了一个非常简单的程序来读取视频截图中的字幕。 我们还可以指定区域我们希望为其提取文本。
IronOCR 提供的功能包括OpenCV对于计算机视觉. 我们已经看到,IronOCR 可以让我们从模糊或低分辨率的图像中读取文字。 该库高效、准确。 它支持 127 种以上的语言,且完全准确。 开发免费,生产无限制。
总之,IronOCR 提供以下服务:
支持 .NET 6、5、Core、Standard、Framework
IronOCR是 Iron Software 库套件的一部分,可用于读写 PDF, 操作 Excel 文件, 从图像中阅读文本和网站内容搜索. 购买完整的Iron Suite为价格的两个独立图书馆。