IronOCR 操作指南 读取车牌 如何使用 IronOCR 用 C# 阅读车牌。 Curtis Chau 已更新:2026年1月10日 下载 IronOCR NuGet 下载 DLL 下载 Windows 安装程序 免费试用 法学硕士副本 法学硕士副本 将页面复制为 Markdown 格式,用于 LLMs 在 ChatGPT 中打开 向 ChatGPT 咨询此页面 在双子座打开 向 Gemini 询问此页面 在 Grok 中打开 向 Grok 询问此页面 打开困惑 向 Perplexity 询问有关此页面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 复制链接 电子邮件文章 This article was translated from English: Does it need improvement? Translated View the article in English IronOCR 的 ReadLicensePlate 方法使用先进的 OCR 技术从车辆图像中自动提取车牌号码。 此单一方法调用可高精度处理车牌,为自动车辆管理系统返回车牌文本和置信度分数。 在管理大量车辆图像时,手动读取车牌既费时又容易出错。 使用 IronOCR 等工具实现此过程的自动化,可以提供更高效、更准确的解决方案。 IronOCR 的 ReadLicensePlate 方法可以通过编程从图像中提取车牌号码,在提高数据准确性的同时节省大量时间。 在本指南中,我们将演示如何使用 IronOCR 进行车牌识别,并通过示例和可定制的配置实现无缝流程。 通过利用这些方法,开发人员可以自动读取车牌号码,从而提高停车管理、收费或安全监控等任务的效率。 要使用此功能,您还必须安装IronOcr.Extension.AdvancedScan软件包。 快速入门:立即提取车牌号码 使用 IronOCR 的 ReadLicensePlate 只需调用一个方法,您就可以通过编程从任何图像中提取车牌文本。 它可随时使用--只需加载图片、调用方法,即可立即获得车牌号码和信心。 立即开始使用 NuGet 创建 PDF 文件: 使用 NuGet 包管理器安装 IronOCR PM > Install-Package IronOcr 复制并运行这段代码。 OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); 部署到您的生产环境中进行测试 立即开始在您的项目中使用 IronOCR,免费试用! 免费试用30天 ### 最小工作流程(5 个步骤) 下载用于读取车牌的 C# 库 导入车牌图像进行处理 确保文档仅包含车牌图像,且没有头部或尾部 使用ReadLicensePlate方法从图像中提取数据 访问 OcrLicensePlateResult 属性以查看和操作提取的许可证数据 如何用 C# 阅读车牌? 要在 IronOCR 中读取车牌,我们采用以下步骤: 我们利用 ReadLicensePlate 方法,该方法将 OcrInput 作为输入参数。 与该库的标准 Read 对应方法相比,该方法针对车牌进行了更多优化。 我们可以选择配置 IronOCR,将车牌中可能存在的特定字符列入白名单,以加快车牌号码的处理速度。 请注意 该方法目前仅适用于英语、中文、日语、韩语和拉丁字母脚本。 在 .NET Framework 上使用高级扫描功能需要项目在 x64 架构上运行。 输入车牌是什么样子的? !显示 "8TRS777 "的加利福尼亚州车牌--车牌读取演示示例。 如何配置车牌 OCR? :path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-license-plate.cs using IronOcr; using System; var ocr = new IronTesseract(); ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_"; using var inputLicensePlate = new OcrInput(); inputLicensePlate.LoadImage("plate.jpeg"); // Read license plate OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate); // Retrieve license plate number and confidence value string output = $"{result.Text}\nResult Confidence: {result.Confidence}"; Console.WriteLine(output); Imports Microsoft.VisualBasic Imports IronOcr Imports System Private ocr = New IronTesseract() ocr.Configuration.WhiteListCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_" Dim inputLicensePlate = New OcrInput() inputLicensePlate.LoadImage("plate.jpeg") ' Read license plate Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate) ' Retrieve license plate number and confidence value Dim output As String = $"{result.Text}" & vbLf & "Result Confidence: {result.Confidence}" Console.WriteLine(output) $vbLabelText $csharpLabel 我应该期待什么样的结果? !调试控制台显示车牌 OCR 结果:加利福尼亚州,车牌 8TRS777,置信度 95.87% 该代码演示了如何将图像作为OcrInput导入,并将其与ReadLicensePlate方法一起使用,以从车牌中提取文本。 输出结果显示了与输入图像中显示的车牌匹配的提取文本,以及指示 OCR 准确性的置信度。 文本:从 OCR 输入中提取的文本。 信心:一个 double 属性,表示平均每个字符的统计准确性置信度,1 表示最高,0 表示最低。 要对 OCR 过程进行更精确的控制,您可以探索高级配置选项来微调字符识别设置。 如何从汽车图片中提取车牌? 该方法对于包含车牌的汽车图像也同样有效。 代码与上面的代码相同,只是更改了输入图片。 您还可以提取车牌所在区域的像素坐标。 哪种类型的汽车图片效果最好? !深灰色斯柯达汽车,显示马哈拉施特拉邦车牌 MH 20 EE 7602,停在砖砌人行道上。 为达到最佳效果,请确保您的汽车图片具有以下特征 车牌清晰可见 良好的照明条件(避免眩光或阴影) 尽量减少角度变形 足够的分辨率(考虑调整 DPI 设置,以适应低分辨率的图像) 如何获取车牌位置坐标? :path=/static-assets/ocr/content-code-examples/how-to/read-license-plate-read-from-car.cs using IronOcr; using IronSoftware.Drawing; using System; var ocr = new IronTesseract(); using var inputLicensePlate = new OcrInput(); inputLicensePlate.LoadImage("car_license.jpg"); // Read license plate OcrLicensePlateResult result = ocr.ReadLicensePlate(inputLicensePlate); // Retrieve license plate coordinates RectangleF rectangle = result.Licenseplate; // Write license plate value and coordinates in a string string output = $"License Plate Number:\n{result.Text}\n\n" + $"License Plate Area_\n" + $"Starting X: {rectangle.X}\n" + $"Starting Y: {rectangle.Y}\n" + $"Width: {rectangle.Width}\n" + $"Height: {rectangle.Height}"; Console.WriteLine(output); Imports Microsoft.VisualBasic Imports IronOcr Imports IronSoftware.Drawing Imports System Private ocr = New IronTesseract() Private inputLicensePlate = New OcrInput() inputLicensePlate.LoadImage("car_license.jpg") ' Read license plate Dim result As OcrLicensePlateResult = ocr.ReadLicensePlate(inputLicensePlate) ' Retrieve license plate coordinates Dim rectangle As RectangleF = result.Licenseplate ' Write license plate value and coordinates in a string Dim output As String = $"License Plate Number:" & vbLf & "{result.Text}" & vbLf & vbLf & $"License Plate Area_" & vbLf & $"Starting X: {rectangle.X}" & vbLf & $"Starting Y: {rectangle.Y}" & vbLf & $"Width: {rectangle.Width}" & vbLf & $"Height: {rectangle.Height}" Console.WriteLine(output) $vbLabelText $csharpLabel 结果包括哪些信息? !Visual Studio 调试输出,显示检测到的车牌 MH20EE7602 及边界框坐标和尺寸。 该示例展示了如何将ReadLicensePlate方法应用于汽车图像。 该方法还会返回车牌在图像中所在的矩形坐标。 该方法经过优化,仅用于查找单个车牌,并且能够在图库图片中搜索车牌。 如何处理多个车牌? 在处理多张车辆图像时,您可以使用批处理操作对其进行高效处理: using IronOcr; using System.IO; using System.Threading.Tasks; public async Task ProcessMultipleLicensePlates(string[] imagePaths) { var ocr = new IronTesseract(); // Configure for optimal performance ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock; var tasks = imagePaths.Select(async path => { using var input = new OcrInput(); input.LoadImage(path); var result = await Task.Run(() => ocr.ReadLicensePlate(input)); return new { FilePath = path, PlateNumber = result.Text, Confidence = result.Confidence }; }); var results = await Task.WhenAll(tasks); // Process results foreach (var result in results) { Console.WriteLine($"File: {result.FilePath}"); Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})"); } } using IronOcr; using System.IO; using System.Threading.Tasks; public async Task ProcessMultipleLicensePlates(string[] imagePaths) { var ocr = new IronTesseract(); // Configure for optimal performance ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock; var tasks = imagePaths.Select(async path => { using var input = new OcrInput(); input.LoadImage(path); var result = await Task.Run(() => ocr.ReadLicensePlate(input)); return new { FilePath = path, PlateNumber = result.Text, Confidence = result.Confidence }; }); var results = await Task.WhenAll(tasks); // Process results foreach (var result in results) { Console.WriteLine($"File: {result.FilePath}"); Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})"); } } Imports IronOcr Imports System.IO Imports System.Threading.Tasks Public Async Function ProcessMultipleLicensePlates(imagePaths As String()) As Task Dim ocr As New IronTesseract() ' Configure for optimal performance ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock Dim tasks = imagePaths.Select(Async Function(path) Using input As New OcrInput() input.LoadImage(path) Dim result = Await Task.Run(Function() ocr.ReadLicensePlate(input)) Return New With { .FilePath = path, .PlateNumber = result.Text, .Confidence = result.Confidence } End Using End Function) Dim results = Await Task.WhenAll(tasks) ' Process results For Each result In results Console.WriteLine($"File: {result.FilePath}") Console.WriteLine($"Plate: {result.PlateNumber} (Confidence: {result.Confidence:P})") Next End Function $vbLabelText $csharpLabel 对于大规模处理,请考虑实施多线程功能,以最大限度地提高性能。 如何提高车牌识别准确性? 为提高车牌检测的准确性,请考虑以下优化技术: 应用图像预处理过滤器 using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); // Load and preprocess the image input.LoadImage("blurry_plate.jpg"); input.Deskew(); // Correct image rotation input.DeNoise(); // Remove background noise input.EnhanceResolution(225); // Upscale for better clarity input.Sharpen(); // Enhance edge definition var result = ocr.ReadLicensePlate(input); using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); // Load and preprocess the image input.LoadImage("blurry_plate.jpg"); input.Deskew(); // Correct image rotation input.DeNoise(); // Remove background noise input.EnhanceResolution(225); // Upscale for better clarity input.Sharpen(); // Enhance edge definition var result = ocr.ReadLicensePlate(input); Imports IronOcr Dim ocr As New IronTesseract() Using input As New OcrInput() ' Load and preprocess the image input.LoadImage("blurry_plate.jpg") input.Deskew() ' Correct image rotation input.DeNoise() ' Remove background noise input.EnhanceResolution(225) ' Upscale for better clarity input.Sharpen() ' Enhance edge definition Dim result = ocr.ReadLicensePlate(input) End Using $vbLabelText $csharpLabel 了解有关可用图像过滤器和图像校正技术的更多信息,以优化输入图像。 处理不同的照明条件 对于具有挑战性的照明场景,应进行适当的修正: using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); input.LoadImage("dark_plate.jpg"); input.Contrast(1.5); // Increase contrast input.Brightness(1.2); // Adjust brightness input.Binarize(); // Convert to black and white for clarity var result = ocr.ReadLicensePlate(input); using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); input.LoadImage("dark_plate.jpg"); input.Contrast(1.5); // Increase contrast input.Brightness(1.2); // Adjust brightness input.Binarize(); // Convert to black and white for clarity var result = ocr.ReadLicensePlate(input); Imports IronOcr Dim ocr As New IronTesseract() Using input As New OcrInput() input.LoadImage("dark_plate.jpg") input.Contrast(1.5) ' Increase contrast input.Brightness(1.2) ' Adjust brightness input.Binarize() ' Convert to black and white for clarity Dim result = ocr.ReadLicensePlate(input) End Using $vbLabelText $csharpLabel 如何监控 OCR 性能? 在处理大批量车牌时,跟踪进度有助于管理系统资源: using IronOcr; var ocr = new IronTesseract(); // Subscribe to progress events ocr.OcrProgress += (sender, e) => { Console.WriteLine($"Processing: {e.ProgressPercent}% complete"); }; using var input = new OcrInput(); input.LoadImage("large_parking_lot.jpg"); var result = ocr.ReadLicensePlate(input); using IronOcr; var ocr = new IronTesseract(); // Subscribe to progress events ocr.OcrProgress += (sender, e) => { Console.WriteLine($"Processing: {e.ProgressPercent}% complete"); }; using var input = new OcrInput(); input.LoadImage("large_parking_lot.jpg"); var result = ocr.ReadLicensePlate(input); Imports IronOcr Dim ocr As New IronTesseract() ' Subscribe to progress events AddHandler ocr.OcrProgress, Sub(sender, e) Console.WriteLine($"Processing: {e.ProgressPercent}% complete") End Sub Using input As New OcrInput() input.LoadImage("large_parking_lot.jpg") Dim result = ocr.ReadLicensePlate(input) End Using $vbLabelText $csharpLabel 如需详细的性能监控,请探索 IronOCR 中的进度跟踪功能。 这与其他文档阅读相比有何不同? IronOCR 的专业文档阅读能力不仅限于车牌。 为车牌检测提供动力的计算机视觉技术同样可以应用于以下领域: 护照阅读,用于旅行和身份验证 银行应用程序的 MICR 支票处理</a 数字化项目的一般文档扫描</a 常见的使用案例有哪些? 使用 IronOCR 进行车牌识别可以实现各种应用: 停车管理:自动出入记录和付款处理 收费:加快收费站的车辆识别速度 安全监控:跟踪禁区内的车辆行驶情况 车队管理:监控公司车辆和物流 执法:快速识别相关车辆 每个用例都受益于 IronOCR 的高准确性和实时处理图像的能力,使其既适用于批处理,也适用于实时应用。 常见问题解答 如何用 C# 从图像中读取车牌? 您可以使用 IronOCR 的 ReadLicensePlate 方法用 C# 阅读车牌。只需创建一个 IronTesseract 实例,然后使用包含车牌图像的 OcrInput 调用 ReadLicensePlate。该方法会返回一个 OcrLicensePlateResult,其中包含提取的车牌文本和置信度分数。 车牌识别需要安装什么软件包? 要使用 IronOCR 中的车牌识别功能,您需要安装 IronOCR 主软件包和来自 NuGet 的 IronOcr.Extension.AdvancedScan 软件包。AdvancedScan 扩展包提供了专门的 ReadLicensePlate 方法。 只需一行代码就能提取车牌吗? 是的,IronOCR 只需一行代码即可提取车牌文本:OcrLicensePlateResult result = new IronTesseract().ReadLicensePlate(new OcrInput("plate.jpg")); 这将立即返回车牌号码和置信度分数。 车牌识别支持哪些语言? IronOCR 的 ReadLicensePlate 方法目前支持英文、中文、日文、韩文和拉丁字母脚本的车牌。该方法专门针对这些字符集进行了优化。 如何提高车牌读取的准确性? 您可以通过以下方法提高 IronOCR 的准确性:将车牌中出现的特定字符列入白名单,确保图片只包含车牌而不包含页眉或页脚,以及使用高质量图片。ReadLicensePlate 方法已专门针对车牌识别进行了优化。 .NET Framework 上车牌识别的系统要求是什么? 在 .NET Framework 上使用 IronOCR 的高级扫描功能(包括 ReadLicensePlate)时,您的项目必须在 x64 架构上运行。这一要求可确保车牌识别功能达到最佳性能。 车牌识别会返回哪些信息? IronOCR 的 ReadLicensePlate 方法会返回一个 OcrLicensePlateResult 对象,其中包含提取的车牌文本和置信度分数。这样,您既可以检索车牌号码,也可以评估 OCR 结果的可靠性。 Curtis Chau 立即与工程团队聊天 技术作家 Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。 准备开始了吗? Nuget 下载 5,384,824 | 版本: 2026.2 刚刚发布 免费 NuGet 下载 总下载量:5,384,824 查看许可证