在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
在本教程中,我们将学习编程式车牌识别。我们将获取一些车牌图像样本并提取车牌号码。我们将开发一个 C# 和 .NET 程序来执行车牌自动识别。本教程简单易学,即使是 C# 程序初学者也能轻松掌握。
有许多可用来执行 OCR 的库。其中有些是付费的,有些难以使用,有些效率不高或不准确。要找到一个免费、高效、易用且结果准确的库可能非常困难。我发现并使用了 IronOCR;它对开发是免费的,对商业用途提供 1 个月的免费试用期,易于使用,效率高,提供多线程,支持 150 多种语言,除此之外还提供更好的准确性。它可以执行从车牌检测到获取车牌号码的所有任务。
IronOCR 是由 Iron Software 开发和维护的一个库,可帮助 C# 软件工程师在 .NET 项目中执行 OCR、条形码扫描和文本提取。
让我们开发一个读取车牌号码的演示程序。
第一步是创建一个 Visual Studio 项目。
打开 Visual Studio。点击 "创建新项目",然后选择项目模板 (我为该演示应用程序选择了控制台应用程序模板,但您也可以根据自己的要求或偏好选择任何模板).点击 "下一步 "按钮,并为项目命名 (我把它命名为 "车牌 OCR",但你可以给它起任何名字).点击 "Next(下一步)"按钮,选择目标 .NET Framework。最后,点击 "Create(创建)"按钮创建项目。创建的项目如下图所示。
为我们的车牌 OCR 项目创建一个 Visual Studio 项目
现在,我们需要安装 IronOCR 库,以便在项目中使用它。最简单的方法是通过 NuGet 包管理器安装。
单击顶部菜单栏中的 "工具",然后选择 NuGet 包管理器 > Manage NuGet Packages for Solution,如下图所示。
在 Visual Studio 中定位 NuGet 包管理器用户界面
将出现以下窗口。
Visual Studio中的NuGet软件包管理器用户界面
点击浏览,搜索 IronOCR。选择 IronOCR 软件包并点击安装按钮,如下图所示。
在 NuGet 软件包管理器用户界面安装 IronOCR 库
IronOCR 库将被安装并准备就绪。
让我们编写一个读取车牌的程序。IronOCR 是一个 Tesseract OCR 引擎,用于从图像中提取文本,因此如果我们需要实现计算机视觉来检测车辆,可能需要使用其他机器学习库。IronOCR 支持 OpenCV,这是一个开源的、市场领先的检测模型。IronOCR 可与 OpenCV 配合使用,执行对象检测,如汽车检测或车牌检测。
我们将读取以下车牌:
清晰可见车牌号码的车牌图片
现在,我们来编写代码。
添加以下命名空间:
using IronOcr;
using IronOcr;
Imports IronOcr
然后添加以下代码:
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
input.DeNoise(); // fixes digital noise and poor scanning
input.ToGrayScale();
var result = ocr.Read(Input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate3.jpg"))
{
input.DeNoise(); // fixes digital noise and poor scanning
input.ToGrayScale();
var result = ocr.Read(Input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate3.jpg")
input.DeNoise() ' fixes digital noise and poor scanning
input.ToGrayScale()
Dim result = ocr.Read(Input)
Console.WriteLine(result.Text)
End Using
其功能如下
Read
方法从一个 OcrInput
对象中读取文本,该方法返回一个 OcrResult 对象。OcrInput "是首选的输入类型,因为它允许 多页文件的 OCR 识别它还可以在读取前对图像进行增强,以获得更快、更准确的结果。我们可以看到,从检测到的车牌中提取到了正确的车牌号码。
IronOCR 能正确检测并提取车牌图像中的数字
假设我们没有单独的车牌,但有整辆车的图片。现在,我们需要扫描车牌区域并进行文字识别。
我们可以使用 "System.Drawing.Rectangle "来指定读取车牌号码的区域。测量单位始终是像素。
我们将使用以下示例图像文件。
一辆汽车的完整后视图像,车牌清晰可见
我们将看到,这不仅能提高速度,还能避免阅读不必要的文字。
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
// a 41% improvement on speed
var contentArea = new CropRectangle(x: 365, y: 240, height: 80, width: 29);
input.AddImage(@"D:\Liscence Plate\plate1.jpg", 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: 365, y: 240, height: 80, width: 29);
input.AddImage(@"D:\Liscence Plate\plate1.jpg", 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:= 365, y:= 240, height:= 80, width:= 29)
input.AddImage("D:\Liscence Plate\plate1.jpg", contentArea)
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
这样速度提高了41%,而且还能让我们更明确。我们指定区域的起始坐标 (x 和 y) 以及检测区域的宽度和高度。
内容区域 (OCR 裁剪) 读取 PDF 文件时也支持
IronOCR 利用 OpenCV 使用计算机视觉来检测图像中存在文字的区域。它执行图像处理技术,并使用检测模型来检测车牌。IronOCR 中计算机视觉的使用将确定存在文字区域的位置,然后使用 Tesseract 尝试读取这些区域。
我们需要安装 "IronOcr.ComputerVision.Windows "来使用车牌检测模型。
在软件包管理器控制台中使用以下命令。
PM> Install-Package IronOcr.ComputerVision.Windows
这将提供必要的程序集,以便在我们的模型文件中使用 IronOCR 计算机视觉。
以下示例代码将自动检测汽车的车牌。
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
input.FindTextRegion();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput(@"D:\Liscence Plate\plate1.jpg"))
{
input.FindTextRegion();
OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput("D:\Liscence Plate\plate1.jpg")
input.FindTextRegion()
Dim result As OcrResult = ocr.Read(input)
Console.WriteLine(result.Text)
End Using
使用情况 查找文本区域 将使用计算机视觉来检测每张 OcrInput
对象图像上包含车牌的区域。
在本教程中,我们学习了如何使用 IronOCR,并开发了一个读取汽车牌照的简单程序。我们看到,IronOCR 能让我们从模糊或低分辨率的图像中读取文字,效率高,准确度高,完全准确地支持 127 种以上的语言,免费用于开发,并且对生产没有限制。
总之,IronOCR 可以提供
IronOCR 是 Iron Suite.该套件包含其他非常有用的库,如 IronPDF 用于读写 PDF 文件、 IronXL 用于操作 Excel 文件,以及 IronWebScrapper 用于从网站提取数据。您可以 购买 铁艺套房只需支付两个图书馆的费用 许可证.