使用 IRONOCR

如何在C#中OCR车牌(教程)

更新 2024年十一月12日
分享:

介绍

车牌识别已成为许多行业中不可或缺的工具,从交通管理和停车系统到执法和收费解决方案。 通过利用光学字符识别 (光学字符识别)通过技术,开发人员可以高效地从图像中提取文本,实现车牌识别过程的自动化。 在本教程中,我们将演示如何使用IronOCR,强大的C# OCR库,从图像中精确读取车牌。 IronOCR通过与OpenCV源码的无缝集成,用于计算机视觉任务,提供了一个强大的解决方案,即使从复杂或噪声较大的图像来源中也能识别文本。 无论您是在处理干净的车牌图像,还是完整的车辆照片,本指南将指导您通过现代光学字符识别(OCR)技术构建可靠的车牌识别系统的步骤。

如何使用车牌识别 C

  1. 安装C#库以使用车牌识别功能

  2. 将车牌图像导入到新的OcrImageInput实例中

  3. 在C#中应用图像滤镜以改善文本提取

  4. 通过在照片中指定车牌区域来提高识别速度

  5. 使用 OcrLicensePlateResult 实例打印提取的文本

IronOCR 入门

IronOCR 是一个基于 Tesseract OCR 引擎的 C# OCR 库,专为在 .NET 应用程序中为文本识别项目提供高精度和高效能而设计。 适用于处理噪声或低质量图像,IronOCR包含强大的图像预处理功能,如自动降噪和灰度转换,以增强文本提取的清晰度。

IronOCR 的一些显著功能包括:

  • 高OCR准确度:针对多种语言和字体进行了优化,IronOCR在处理复杂或扭曲文本时仍能表现出色的准确性。
  • 图像和PDF支持:它可以从多种图像格式和PDF文件中读取文本,使其能适应不同的文档类型。
  • 与 OpenCV 的集成:通过 OpenCV 支持,IronOCR 可以执行计算机视觉任务,如检测图像中的特定文本区域,这对于车牌识别尤其有用。
  • 高级预处理:包括灰度转换、旋转、去倾斜和对比度增强的过滤器,以提高识别质量。
  • 灵活的输入选项:支持多页文档和可调区域,使开发人员能够将OCR处理集中在选定区域,以获得更快和更有针对性的结果。

    凭借这些功能,IronOCR 是一个强大的解决方案,适用于构建对准确性、灵活性和与其他计算机视觉工具的易于集成性有要求的 OCR 应用程序。

创建 Visual Studio 项目

首先打开 Visual Studio,并选择“创建新项目”。 这将带您进入一个页面,您可以在其中选择要构建的项目类型。(在我们的案例中,我们将创建一个控制台应用程序。). 选择所需的应用类型,然后点击“下一步”。

License Plate Ocr Csharp Tutorial 1 related to 创建 Visual Studio 项目

现在,为您的项目命名并选择保存位置。

License Plate Ocr Csharp Tutorial 2 related to 创建 Visual Studio 项目

最后,选择你的目标 .NET 框架,并点击“创建”按钮。 这将创建项目,如下所示。

License Plate Ocr Csharp Tutorial 3 related to 创建 Visual Studio 项目

接下来的步骤是安装IronOCR库,以便我们开始处理车牌。

安装 IronOCR

要在您的C#项目中开始使用IronOCR,您需要从NuGet安装IronOCR包。 IronOCR兼容.NET Framework和.NET Core,使其易于集成到各种.NET应用程序中。

步骤 1:打开包管理器控制台

在 Visual Studio 中,导航至 Tools > NuGet Package Manager > Package Manager Console

步骤 2:安装 IronOCR 包

在包管理器控制台中输入以下命令:

Install-Package IronOcr
Install-Package IronOcr
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronOcr
VB   C#

此命令安装IronOCR库,包括运行项目中OCR功能所需的所有依赖项。 由于我们的应用程序需要使用计算机视觉的高级功能,例如车牌检测,您也可以通过这种方式安装可选的 IronOcr.ComputerVision.Windows 包:

Install-Package IronOcr.ComputerVision.Windows
Install-Package IronOcr.ComputerVision.Windows
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronOcr.ComputerVision.Windows
VB   C#

并确保您拥有IronOcr.Extensions.AdvancedScan安装扩展以便您可以使用其强大的 ReadLicensePlate 方法:

Install-Package IronOcr.Extensions.AdvancedScan
Install-Package IronOcr.Extensions.AdvancedScan
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronOcr.Extensions.AdvancedScan
VB   C#

或者,您可以使用工具 > NuGet 包管理器 > 为解决方案管理 NuGet 包来安装这些包,并搜索您需要的包:

License Plate Ocr Csharp Tutorial 4 related to 步骤 2:安装 IronOCR 包

设置代码

最后,我们必须在代码的顶部添加必要的导入和 using 语句:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

使用光学字符识别读取车牌号码

在本节中,我们将创建一个程序来读取车牌,使用IronOCR,一个擅长从图像中提取文本的 Tesseract OCR 引擎。 为了实现车辆检测,我们还可以结合其他机器学习库。 值得注意的是,IronOCR 与 OpenCV 集成,这是一个领先的开源计算机视觉库,使我们能够执行物体检测任务,例如识别车辆和车牌。

示例车牌图像

我们将使用以下车牌:

License Plate Ocr Csharp Tutorial 5 related to 示例车牌图像

接下来,添加以下代码对车牌进行OCR:

using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixing the digital noise and making the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saving the license plate text to a string variable
    string output = result.Text;

    // Outputting the license plate text to the console
    Console.WriteLine(output);
}
using IronOcr;

var ocr = new IronTesseract();

using (var input = new OcrImageInput("licensePlate.jpeg"))
{
    // Fixing the digital noise and making the image easier to read
    input.DeNoise();
    input.ToGrayScale();

    // Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);

    // Saving the license plate text to a string variable
    string output = result.Text;

    // Outputting the license plate text to the console
    Console.WriteLine(output);
}
Imports IronOcr

Private ocr = New IronTesseract()

Using input = New OcrImageInput("licensePlate.jpeg")
	' Fixing the digital noise and making the image easier to read
	input.DeNoise()
	input.ToGrayScale()

	' Using the OcrLicensePlateResult and ReadLicensePlate methods to read the license plate information and store it for further use
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)

	' Saving the license plate text to a string variable
	Dim output As String = result.Text

	' Outputting the license plate text to the console
	Console.WriteLine(output)
End Using
VB   C#

License Plate Ocr Csharp Tutorial 6 related to 如何在C#中OCR车牌(教程)

代码解析:

  • 初始化:这行代码 var ocr = new IronTesseract(); 创建一个新实例的钢铁魔方类,提供用于光学字符识别的方法(光学字符识别).
  • 图像输入:using 语句创建一个新的OcrImageInput指定图像文件“licensePlate.jpeg”的对象。 该对象用于存储用于OCR处理的图像数据。
  • 图像预处理

    请注意,您提供的内容是空的。请提供要翻译的文本。input.DeNoise();应用数字噪声减少滤镜来提高图像质量,使OCR引擎更容易读取文本。

    请注意,您提供的内容是空的。请提供要翻译的文本。input.ToGrayScale();将图像转换为灰度,这可以提高识别精度和处理速度。

  • 车牌识别:OcrLicensePlateResult result = ocr.ReadLicensePlate(输入); 使用 ReadLicensePlate 方法分析处理后的图像,提取检测到的任何车牌信息,并将结果存储在一个OcrLicensePlateResult反对
  • 输出存储:通过访问 result.Text,将车牌识别出的文本存储在字符串变量 output 中。
  • 控制台输出:最后,Console.WriteLine(产量); 将提取的车牌文字打印到控制台以进行验证。

扫描车牌号码

如果我们有一整辆汽车的图像,而不仅仅是车牌,我们可以指定一个矩形区域来专注于车牌区域。 我们可以使用System.Drawing.Rectangle以像素为单位定义此区域。

原始图片

我们将使用以下图像文件作为示例:

License Plate Ocr Csharp Tutorial 7 related to 原始图片

通过指定感兴趣的区域,我们提高了处理速度,并避免提取不必要的文本。

实现代码

using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
using IronOcr;
using System.Drawing;

var ocr = new IronTesseract();

using (var input = new OcrInput())
{
    var contentArea = new Rectangle(x: 252, y: 282, width: 148, height: 47);
    input.LoadImage("CarPlate.jpeg", contentArea);
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
Imports IronOcr
Imports System.Drawing

Private ocr = New IronTesseract()

Using input = New OcrInput()
	Dim contentArea = New Rectangle(x:= 252, y:= 282, width:= 148, height:= 47)
	input.LoadImage("CarPlate.jpeg", contentArea)
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

License Plate Ocr Csharp Tutorial 8 related to 实现代码

代码解析:

  • 初始化: var ocr = new IronTesseract(); 创建一个新的IronTesseract类实例,该实例负责执行OCR操作。
  • OCR 输入:使用(var input = new OcrInput())该语句创建一个新的 OcrInput 对象,将用于加载和处理图像以进行 OCR。
  • 定义兴趣区:var contentArea = new Rectangle(x: 252, y: 282, 宽度: 148, 高度: 47); 定义一个矩形区域(内容区域)图像中的内容。 该矩形指定坐标和尺寸(宽度和高度)预期放置车牌的位置。
  • 加载图像:input.LoadImage(“CarPlate.jpeg”,内容区); 加载指定的图像文件("CarPlate.jpeg")并将注意力集中在定义的矩形上。(内容区域)将OCR处理限制在该特定区域。
  • 读取车牌号: OcrLicensePlateResult result = ocr.ReadLicensePlate(输入); 调用 ReadLicensePlate 方法,该方法分析输入图像中的车牌字符并返回一个包含提取文本的 OcrLicensePlateResult 对象。
  • 输出:Console.WriteLine(result.Text); 将车牌识别的文字打印到控制台。

自动车牌识别

IronOCR利用OpenCV识别图像中的文本区域,并采用各种图像处理技术。 此功能使程序能够通过定位图像中的文本区域来检测车牌,然后利用Tesseract读取这些区域。

安装

要启用车牌检测模型,请通过包管理控制台安装所需的包:

var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();

using (var input = new OcrImageInput("CarPlate.jpeg"))
{
    input.FindTextRegion();
    OcrLicensePlateResult result = ocr.ReadLicensePlate(input);
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()

Using input = New OcrImageInput("CarPlate.jpeg")
	input.FindTextRegion()
	Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(input)
	Console.WriteLine(result.Text)
End Using
VB   C#

License Plate Ocr Csharp Tutorial 9 related to 安装

代码解析:

  • 初始化:创建一个IronTesseract类的实例,它将用于光学字符识别。(光学字符识别)使用 Tesseract 引擎。
  • 图像输入:使用指定的图像文件实例化新的OcrImageInput对象。("CarPlate.jpeg"). 该对象将作为OCR过程的输入,并被包含在using语句中以确保适当的资源管理。
  • 文本区域检测查找文本区域方法在输入对象上调用。 该方法采用计算机视觉技术自动识别图像中可能包含文本的区域,特别是针对车牌。
  • 车牌识别:调用 ReadLicensePlate 方法分析检测到的文本区域并提取车牌号。 结果存储在OcrLicensePlateResult对象中,该对象包含识别的文本和任何相关的元数据。
  • 输出:检测到的车牌文本将打印到控制台,使用户可以查看提取的车牌号码。

IronOCR 许可

License Plate Ocr Csharp Tutorial 10 related to IronOCR 许可

对于那些想亲自体验IronOCR的人,IronOCR提供一个免费试用这使您可以访问它提供的所有工具,这意味着您可以在购买许可证之前在自己的项目中试用它们。 一旦您的免费试用期结束,IronOCR 许可起价仅为 $749 的 Lite License。 它还提供可选的附加组件,需支付额外费用,例如免版税的再分发覆盖、不间断支持和持续的产品更新。

除此之外,如果您发现自己需要使用的不仅仅是IronOCR,还包括其他IronSoftware产品,比如用于PDF相关任务的IronPDF或处理Word文档的IronWord,那么IronSoftware还提供Iron Suite, 这是以优惠的价格获取全套工具的绝佳方式。

结论

在本指南中,我们探讨了如何使用C#构建一个可靠的车牌识别系统。IronOCR. 凭借其强大的文本提取能力和与OpenCV的集成,IronOCR为需要从车辆图像中进行准确文本识别的应用程序提供了一种高效、易于使用的解决方案。 从图像预处理到设置特定检测区域,IronOCR使用专为嘈杂或复杂图像(如交通和监控录像中的车牌)设计的工具简化了OCR流程。

无论您是在开发交通监控、停车执法,还是任何需要自动车牌识别的应用程序,IronOCR 都提供了一个能够无缝集成到 .NET 环境中的综合库。 通过遵循这些步骤,您将具备部署 OCR 驱动的解决方案的能力,从而在各种实际场景中提高效率和准确性。 IronOCR通过区域选择和降噪等附加功能,确保您的车牌识别任务获得最佳结果优化。

< 前一页
如何在C#中OCR 驾照
下一步 >
如何在 C# 教程中从发票获取文本

准备开始了吗? 版本: 2024.11 刚刚发布

免费NuGet下载 总下载量: 2,698,613 查看许可证 >