使用 IRONOCR

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

发布 2024年四月29日
分享:

简介

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

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

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

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

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

2.安装 IronOCR .NET 库,并将其包含在项目文件夹中。

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

4.利用 IronOCR 读取图像中文字的高级功能

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

IronOCR 入门

IronOCR 开发的一个 C# 库。 铁软件 是一款提供高级 OCR 功能的软件。它能从图像、PDF 和扫描文档中准确提取文本。在深入学习代码之前,请确保您的项目中已安装 IronOCR。

来自 铁软件IronOCR 的主要特征

改进的魔方 OCR 引擎

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

广泛的语言覆盖面

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

多功能输出选择

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

跨平台适应性

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

利用魔方 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 进行微调。例如,要禁用并行化

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

白名单和黑名单角色

使用白名单字符(WhiteListCharacters)和黑名单字符(BlackListCharacters)控制魔方识别的字符。例如

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:禁止读取条形码。

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

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

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

    7.TesseractVariables:未使用自定义变量。

    8.MultiThreaded(多线程禁用多线程。

  1. OCR 输入和图像加载: 一个 using 块创建了一个 OcrInput 类型的一次性 ocrInput 对象。图像文件 "sample1.png "被添加到 ocrInput 中。

  2. 提取文本:调用 ocrTesseract 的读取方法,并传入 ocrInput。

4.结果存储在 ocrResult 变量中。

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

输出

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

步骤 5:性能调整 IronOCR 阅读操作。

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

  1. 旋转

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

  2. 德斯克

    纠偏滤镜可纠正图像偏斜,确保文字直立和正交。这对 OCR 特别有用,因为 Tesseract 在正确方向的扫描中表现最佳。

  3. 规模

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

  4. 二进制

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

  5. 灰度

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

  6. Invert

    反相**:反相滤波器可将颜色反转--白色变为黑色,黑色变为白色。

  7. ReplaceColor

    ReplaceColor 滤镜会将图像中的特定颜色替换成另一种颜色,并考虑一定的阈值。

  8. 对比

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

  9. DilateErode

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

    1.Dilate (放大)会将像素添加到对象边界。

    2.删除对象边界上的像素。

    1. 锐化

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

    1. 去噪音

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

    1. DeepCleanBackgroundNoise

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

    1. 增强分辨率

    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 系统利用光学字符识别技术,从安装在交通监控、停车场管理、收费和执法应用系统中的摄像头捕获的图像或视频流中读取车牌号码。

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

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

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

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

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

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

许可证要求

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

如何在 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).在应用程序设置中添加以下键:

<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.9 刚刚发布

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