使用 IRONOCR

如何在 C# 中创建字符识别

发布 2024年四月29日
分享:

介绍

光学字符识别技术(光学字符识别)可将印刷或手写文本转换为机器可读的数字格式。扫描文件时(如发票或收据)您的计算机会将扫描文件保存为图像文件。但是,扫描图像中的文本无法使用普通文本编辑器进行编辑、搜索或计算。

然而,OCR 可以处理图像、提取文本并将其转换为计算机可以阅读的文本格式。 这样就可以从各种来源(包括 PDF 文件和其他扫描图像)中提取文本。 此外,OCR 功能不仅限于简单的文本提取,还包括主要的图像格式和 PDF 文档,并将其转换为可搜索的 OCR 数据。

在 C# 中,开发人员可以通过各种库利用 OCR 的强大功能,其中一个功能强大的库是IronOCR铁软件. 在本教程中,我们将探讨 OCR 的基础知识,并演示如何使用IronOCR以在 C# 中高效执行字符识别。

如何在 C# 中创建字符识别;

  1. 在 Visual Studio 中创建一个全新的 C# 项目并命名该项目。

  2. 安装IronOCR翻译时必须使用 .NET 库,并将其包含在项目文件夹中。

  3. 利用IronOCR使用 Tesseract 从图像中读取文本。

  4. 利用IronOCR在图像中阅读文本的高级功能

  5. 性能调整IronOCR阅读操作。

IronOCR 入门

IronOCR开发的一个 C# 库。铁软件译文必须是能够提供高级 OCR 功能的语言。 它可以从图像、PDF 和扫描文档中准确提取文本。 在我们深入研究代码之前,请确保您的项目中安装了 IronOCR。

来自 铁软件IronOCR 的主要特征

改进的 Tesseract OCR 引擎

IronOCR通过提高准确性和速度,提升了广泛使用的 Tesseract OCR 引擎的功能。 它是一个强大的解决方案,可从各种来源(包括图像、PDF 和各种文档格式)中提取文本。

语言覆盖面广

IronOCR 支持超过 127 种语言,善于处理多语言需求,是要求语言多样性的应用程序的理想选择。

多种输出选择

提取的文本可以方便地输出为纯文本或结构化数据,以便无缝集成到进一步的处理管道中。 此外,IronOCR 还可帮助直接从图像输入创建可搜索的 PDF。

跨平台适应性

IronOCR 与 C#、F# 和 VB.NET 兼容,可在各种 .NET 环境中无缝运行,包括 8、7、6、Core、Standard 和 Framework 版本。

利用 Tesseract 5

IronOCR利用 Tesseract 5 的强大功能,在 .NET 生态系统中实现最佳性能。

基于区域的 OCR 功能

有了 IronOCR,用户可以精确定义文档中的特定区域,实现有针对性的 OCR 处理。 该功能可将处理能力集中到最需要的地方,从而提高准确性和效率。

图像预处理工具

该库提供一套图像预处理功能,如去斜和降噪。 即使在处理不完美的源图像时,这些工具也能确保卓越的结果,最终提升整体 OCR 体验。

现在,我们将开发一个演示应用程序,利用 IronOCR 从图像中读取文本。

先决条件

  1. Visual Studio: 确保您已安装Visual Studio或任何其他 C# 开发环境。

  2. NuGet 软件包管理器: 确保 NuGet 的存在,以便管理项目中的软件包。

步骤 1:在 Visual Studio 中创建一个新的 C#; 项目

首先,让我们使用 Visual Studio 创建一个新的控制台应用程序,如下图所示。

如何在 C# 中创建字符识别:图 1 - 在 Visual Studio 中创建一个全新的 C# 项目

请在下面提供项目名称和地点。

如何在 C# 中创建字符识别:图 2 - 提供项目名称和希望保存的位置

选择项目所需的 .NET 版本。

如何在 C# 中创建字符识别:图 3 - 为项目选择合适的 .NET 版本

单击 "创建 "按钮创建新项目。

第 2 步:安装 IronOCR 库并将其集成到您的项目中。

IronOCR可以在NuGet软件包管理器控制台如下所示。 使用提供的命令安装软件包。

如何在 C# 中创建字符识别:图 4 - IronOCR NuGet 软件包管理器下载页面

使用 Visual Studio NuGet 包管理器搜索 IronOCR 并安装到您的项目文件夹。

如何在 C# 中创建字符识别:图 5 - 使用 NuGet 软件包管理器通过浏览选项卡搜索 IronOCR

安装完成后,应用程序即可使用IronOCR从图像中读取文字。

步骤 3:利用 IronOCR Tesseract 从图像中读取文本。

IronOCR 是提供 Tesseract 5 OCR 功能的独家 .NET 库。 目前,它是所有编程语言中最复杂的 Tesseract 5 库。 IronOCR 将 Tesseract 5 无缝集成到各种 .NET 环境中,包括 Framework、Standard、Core、Xamarin 和 Mono,确保在整个生态系统中提供全面支持。

请将下面的图片文件作为输入。 现在,让我们看看如何阅读该图像文件中的文本

如何用 C# 创建字符识别:图 6 - 输入示例

using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
using IronOcr;
public class Program
{
    public static void Main(String [] args)
    {
        var ocrTesseract = new IronTesseract(); 
    using var ocrInput = new OcrInput();
    ocrInput.LoadImage(@"sample1.png");
    var ocrResult = ocrTesseract.Read(ocrInput);
    Console.WriteLine(ocrResult.Text);
    }
}
Imports IronOcr
Public Class Program
	Public Shared Sub Main(ByVal args() As String)
		Dim ocrTesseract = New IronTesseract()
	Dim ocrInput As New OcrInput()
	ocrInput.LoadImage("sample1.png")
	Dim ocrResult = ocrTesseract.Read(ocrInput)
	Console.WriteLine(ocrResult.Text)
	End Sub
End Class
VB   C#

代码解释

  1. 我们首先创建 IronTesseract,并进行必要的配置

  2. 然后,我们将所示的示例图片加载到 OcrInput 对象中

  3. 最后,我们读取图片中的文本,并将其输出到控制台上

输出

如何在 C# 中创建字符识别:图 7 - 使用 IronOCR 提取的文本

第 4 步:利用 IronOCR 高级功能阅读图像中的文本

IronTesseract.Configuration对象允许高级用户访问C#/.NET中的底层Tesseract API,从而可以进行详细的设置配置,以进行微调和优化。 以下是一些可能的高级配置

语言选择

您可以使用语言属性指定 OCR 的语言。 例如,要将语言设置为英语,请使用

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;
Dim ocr As New IronTesseract()
ocr.Language = OcrLanguage.English
VB   C#

页面分割模式

PageSegmentationMode 决定了 Tesseract 如何分割输入图像。 选项包括 AutoOsd、SingleBlock、SingleLine 等。 例如

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd
VB   C#

自定义 Tesseract 变量

您可以通过设置特定变量对 Tesseract 进行微调。 例如,禁用并行化:

ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ["tessedit_parallelize"] = false;
ocr.Configuration.TesseractVariables ("tessedit_parallelize") = False
VB   C#

白名单和黑名单字符

使用 WhiteListCharacters 和 BlackListCharacters 控制 Tesseract 可识别的字符。 例如

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë
^";
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
ocr.Configuration.BlackListCharacters = "`ë ^"
VB   C#

附加配置变量

探索其他 Tesseract 配置变量,根据您的需求自定义行为。 例如:

ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ["classify_num_cp_levels"] = 3;
ocr.Configuration.TesseractVariables ["textord_debug_tabfind"] = 0;
// ... (more variables)
ocr.Configuration.TesseractVariables ("classify_num_cp_levels") = 3
ocr.Configuration.TesseractVariables ("textord_debug_tabfind") = 0
' ... (more variables)
VB   C#

现在,让我们尝试使用高级设置解码相同的图像

using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
using IronOcr;
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Decoding using advanced features");
        var ocrTesseract = new IronTesseract() // create instance
        {
            Language = OcrLanguage.EnglishBest, // configure best english language
            Configuration = new TesseractConfiguration()
            {
                ReadBarCodes = false, // read bar codes false
                BlackListCharacters = "`ë
^", // black listed characters
                WhiteListCharacters = null, // no white list, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // no custom variable used
            },
            MultiThreaded = false,
        };
        using var ocrInput = new OcrInput(); // create a disposible ocr input object
        ocrInput.AddImage(@"sample1.png"); // load the sample image 
        var ocrResult = ocrTesseract.Read(ocrInput); // read the text from the image
        Console.WriteLine(ocrResult.Text);// output the image
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

代码解释

  1. IronOCR 配置:一个 IronTesseract 实例(主 IronOCR 类)创建并分配给变量 ocrTesseract。

    配置设置适用于 ocrTesseract:

    1. 语言:指定 OCR 的语言(在这种情况下,英语).

    2. 配置:一个 TesseractConfiguration 对象,允许进一步定制:

    3. ReadBarCodes:禁用读取 BarCode。

    4. BlackListCharacters:指定要列入黑名单的字符(不认识的字符).

    5. 白名单字符:未指定白名单,允许使用所有字符。

    6. PageSegmentationMode:将页面分割模式设置为 "AutoOsd"。

    7. Tesseract 变量:未使用自定义变量。
    1. 多线程:禁用多线程。
  1. OCR 输入和图像加载: 一个 using 块创建了一个 OcrInput 类型的一次性 ocrInput 对象。 图像文件 "sample1.png "已添加到 ocrInput 中。

  2. 文本提取:在ocrTesseract 上调用 Read 方法,并传入 ocrInput。

  3. 翻译结果存储在 ocrResult 变量中。

  4. 输出:使用 Console.WriteLine 将提取的文本打印到控制台(ocrResult.Text).

输出

如何在 C# 中创建字符识别:图 8 - 使用 IronOCR 提取的文本

第 5 步:IronOCR 读操作的性能调整。

在使用IronOCR时,您可以使用各种图像过滤器,这些过滤器可以帮助在执行 OCR 之前对图像进行预处理。 这些过滤器可以优化图像质量、提高可视性、减少噪音或伪影。 它们有助于提高 OCR 操作的性能。

  1. 旋转

    旋转滤镜允许您按指定的度数顺时针旋转图像。如需逆时针旋转,请使用负数。

  2. Deskew

    纠偏过滤器可纠正图像偏斜,确保文本直立和正交。 这对 OCR 特别有用,因为 Tesseract 对正确方向的扫描效果最佳。

  3. 规模

    缩放过滤器按比例缩放 OCR 输入页面。

  4. 二进制

    二值化滤镜会将每个像素转换为黑色或白色,没有中间值。 在文本与背景对比度非常低的情况下,它可以提高 OCR 性能。

  5. ToGrayScale.ToGrayScale.ToGrayScale

    ToGrayScale 过滤器可将每个像素转换为灰度。 虽然不太可能大幅提高 OCR 的准确性,但可以提高速度。

  6. Invert

    反转滤镜可以反转颜色--白色变为黑色,黑色变为白色。

  7. ReplaceColor

    ReplaceColor 过滤器将图像中的特定颜色替换为另一种颜色,并考虑一定的阈值。

  8. 对比

    对比度过滤器可自动增加对比度。它通常可以提高低对比度扫描的 OCR 速度和准确性。

  9. DilateErode

    这些高级形态学过滤器可以处理图像中的对象边界。

    1. Dilate 为对象边界添加像素。
    1. Erode 删除对象边界上的像素。

    2. 锐化

      锐化滤镜可将模糊的 OCR 文档锐化,并将 alpha 通道平铺为白色。

    3. 去噪

      去噪滤波器可去除数字噪声。将其用于预期会出现噪音的地方。

    4. DeepCleanBackgroundNoise

      只有在已知文档背景噪音极大的情况下,才能使用这种严重的背景噪音去除过滤器。 它可能会降低干净文档的 OCR 准确性,并且是 CPU 密集型的。

    5. 增强分辨率

      EnhanceResolution 过滤器可增强低质量图像的分辨率。 由于可以自动解决,因此不需要经常翻译。

    下面是一个如何在 C# 中使用 IronOCR 应用过滤器的示例:

var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
var ocr = new IronTesseract();
var input = new OcrInput();
input.LoadImage("sample.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);
Dim ocr = New IronTesseract()
Dim input = New OcrInput()
input.LoadImage("sample.png")
input.Deskew()
Dim result = ocr.Read(input)
Console.WriteLine(result.Text)
VB   C#

常见的 OCR 应用程序

  1. 文档数字化: OCR 广泛用于将扫描的纸质文档(如发票、收据、表格和合同)转换为数字格式。 这一数字化过程简化了文档的存储、检索和管理,减少了纸张杂乱,提高了效率。

  2. 数据提取: OCR 可以从扫描文件、图像和 PDF 中提取文本和数据。 提取的数据可用于自动数据录入、内容分析、索引编制以及集成到数据库或业务系统中。

  3. 图像中的文字识别: OCR 技术可以从印刷或手写文本图像中提取文字,用于编制索引和搜索。 这种能力可用于各种应用,包括增强现实、基于图像的搜索引擎和翻译服务。

  4. 自动车牌识别(ALPR): ALPR 系统利用 OCR 技术从安装在交通监控、停车场管理、收费和执法应用中的摄像头捕获的图像或视频流中读取车牌号码。

  5. 无障碍解决方案: OCR 在为视觉障碍人士创建无障碍内容方面发挥着至关重要的作用。 通过将图像或文档中的文本转换为语音或盲文,OCR 可帮助残障人士获取信息。

  6. 身份验证: OCR 技术用于身份验证流程,如扫描和处理护照、驾照和身份证等身份证件。 它有助于验证文件的真实性,并提取相关信息用于身份验证目的。

  7. 银行和金融: OCR 用于银行和金融领域,如读取支票、处理发票、转换现有 PDF 文档、从财务报表中提取数据,以及自动化基于文档的工作流程,以提高金融业务的准确性和效率。

  8. 医疗记录管理: 在医疗保健领域,OCR 可帮助将手写或打印的医疗记录转换为电子格式,有助于电子健康记录的生成。(电子健康记录系统)译文还必须包括以下内容:管理、数据分析和决策过程。

  9. 自动翻译: 翻译工具和语言学习应用程序中集成了 OCR 技术,可将印刷文本从一种语言转换为另一种语言。 用户可以使用设备捕捉文本,然后通过 OCR 将其实时翻译成所需的语言。

    1. 档案和历史文件保存: OCR 可用于档案材料和历史文件的数字化,将其保存为数字格式,以便将来进行访问、研究和分析,同时确保宝贵的文化遗产得到保存。

许可证要求

IronOCR. 请提供以下详细信息,以便将密钥发送到您的电子邮件 ID

如何在 C# 中创建字符识别:图 9 - IronPDF 试用许可证页面

通过购买或免费试用获得密钥后,请按照以下步骤使用密钥

设置许可证密钥:使用代码设置您的 IronOCR 许可证密钥。 在应用程序启动时添加以下一行(在使用 IronOCR 之前):

IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01";
IronOcr.License.LicenseKey = "IRONOCR-MYLICENSE-KEY-1EF01"
VB   C#

全球应用钥匙(Web.Config 或 App.Config):要在应用程序中全局应用密钥,请使用配置文件(Web.Config 或 App.Config). 在您的 appSettings 中添加以下键:

<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<configuration> <!-- Other settings -- > <appSettings> <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/> </appSettings> </configuration>
VB   C#

Using .NET Core appsettings.json:对于 .NET Core 应用程序,请在项目根目录中创建 appsettings.json 文件。 将 "IronOcr.LicenseKey "键替换为您的许可证值:

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
If True Then
	"IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
End If
VB   C#

测试许可证密钥:通过测试验证您的密钥是否已正确安装:

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");
Dim result As Boolean = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01")
VB   C#

结论

总之、IronOCR,起价为 749 美元。利用 OCR 的强大功能IronOCR并为你的 C# 项目开启一个充满可能性的世界。

< 前一页
如何在C#中执行车辆注册OCR
下一步 >
如何使用C#通过OCR读取身份证件

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

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