IRONSOFTWAREHOME
USING IRONOCR

如何在 C# 中执行字符识别

Kannaopat Udonpant
Kannapat Udonpant
Updated: 2026年4月21日

光学字符识别(OCR)技术允许将文本转换为机器可读的数字格式。 当文档被扫描时(例如发票或收据),它会以图像文件的形式被计算机保存。然而,普通文本编辑器无法编辑、搜索或统计扫描图像中的文本。

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

在C#中,开发人员可以通过各种库利用OCR的强大功能,其中之一是来自Iron Software的强大库IronOCR。 在本教程中,我们将探索OCR的基础知识,并展示如何在C#中高效使用IronOCR进行字符识别。

How to create Character Recognition in C#

  1. 创建一个全新的C#项目,并在Visual Studio中命名该项目。
  2. 安装IronOCR .NET库,并将其包含在项目文件夹中。
  3. 利用IronOCR Tesseract从图像中读取文本。
  4. 利用IronOCR的高级功能来读取图像中的文本。
  5. 调整IronOCR读取操作的性能。

IronOCR 入门

IronOCRIron Software开发的C#库,提供高级OCR功能。 它能够准确地从图像、PDF和扫描文档中提取文本。 在我们深入代码之前,请确保项目中已安装IronOCR。

来自Iron Software的IronOCR的关键特性

改进的Tesseract OCR引擎

IronOCR增强了广泛使用的Tesseract OCR引擎的能力,提高了准确性和速度。 它作为一种强大的解决方案,可以从多种来源(包括图像、PDF和多样化的文档格式)中提取文本。

广泛的语言覆盖

支持超过125种语言,IronOCR能够很好地处理多语言需求,使其成为需要语言多样性应用程序的理想选择。

多样的输出选择

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

跨平台适应性

设计兼容C#、F#和VB.NET,IronOCR无缝运行于各种.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);
    }
}

代码解释

  1. IronTesseract实例: 我们首先创建一个IronTesseract实例来执行OCR操作。
  2. 加载图像: 我们将示例图像加载到OcrInput对象中。
  3. 读取文本: 图像中的文本被读取,并将结果打印到控制台。

输出

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

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

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

语言选择

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

IronTesseract ocr = new IronTesseract();
ocr.Language = OcrLanguage.English;

页面分割模式

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

ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;

自定义Tesseract变量

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

ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;

白名单和黑名单字符

使用WhiteListCharacters和BlackListCharacters来控制Tesseract识别哪些字符。 例如:

ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ocr.Configuration.BlackListCharacters = "`ë|^";

附加配置变量

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

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

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

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, // Disable reading barcodes
                BlackListCharacters = "`ë|^", // Blacklisted characters
                WhiteListCharacters = null, // No whitelist, allow all
                PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd,
                TesseractVariables = null, // No custom variables 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 text
    }
}

代码解释

  1. **IronOCR配置:**创建IronTesseract(IronOCR主要类)的实例,并赋值给变量ocrTesseract

    配置设置应用于ocrTesseract

    • 语言: 指定OCR的语言(在本例中为英语)。
    • 配置: TesseractConfiguration对象允许进一步定制:
      • ReadBarCodes:禁用条码读取。
      • BlackListCharacters:指定不识别的字符。
      • WhiteListCharacters:没有指定白名单,允许所有字符。
      • PageSegmentationMode:将页面分割模式设置为"AutoOsd"。
      • TesseractVariables:未使用自定义变量。
    • MultiThreaded:禁用多线程。
  2. **OCR输入和图像加载:**一个ocrInput类型为OcrInput的对象。 图像文件"sample1.png"被添加到ocrInput

  3. **文本提取:**对ocrInput。 结果存储在ocrResult变量中。

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

输出

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

步骤5: IronOCR读取操作的性能调优

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

  1. 旋转:

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

  2. 去除倾斜:

    去除倾斜滤镜可纠正图像的倾斜,确保文本是正立且正交的。 这对于OCR特别有用,因为Tesseract在处理正确定位的扫描时表现最佳。

  3. 缩放:

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

  4. 二值化:

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

  5. 灰度化:

    灰度化滤镜将每个像素转换为灰度。 虽然不太可能显著提高OCR准确性,但可能会加快速度。

  6. 反转:

    反转滤镜会反转颜色——白色变为黑色,黑色变为白色。

  7. 替换颜色:

    替换颜色滤镜会在考虑某个阈值的情况下,将图像中的特定颜色替换为另一种颜色。

  8. 对比度:

    对比度滤镜自动增加对比度。通常在低对比度扫描中,提高了OCR速度和准确性。

  9. 膨胀腐蚀:

    这些高级形态学滤镜用于操纵图像中对象的边界。

    • 膨胀在对象边界上添加像素。
    • 腐蚀从对象边界中移除像素。
  10. 锐化:

    锐化滤镜锐化模糊的OCR文档并将阿尔法通道平坦化为白色。

  11. 去噪:

    去噪滤镜去除数字噪声。在噪声预期的地方使用它。

  12. 深度清除背景噪声:

    当已知存在极端的文档背景噪声时,应该仅使用这个重度背景噪声去除滤镜。 它可能会降低干净文档的OCR准确性,并且对CPU要求高。

  13. 增强分辨率:

    增强分辨率滤镜增强低质量图像的分辨率。 由于自动分辨率处理,通常不需要。

这是在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);

常见的OCR应用

  1. 文档数字化: OCR广泛用于将扫描的纸质文档(如发票、收据、表格和合同)转换为数字格式。 这个数字化过程简化了文档存储、检索和管理,减少纸张混乱并提高效率。
  2. 数据提取: OCR允许从扫描文档、图像和PDF中提取文本和数据。 提取的数据可用于自动化数据输入、内容分析、索引以及集成到数据库或业务系统中。
  3. 图像中的文本识别: OCR技术允许从打印的文档和图像中提取文本,以进行索引和搜索目的。 这种能力被用于各种应用,包括增强现实、基于图像的搜索引擎和翻译服务。
  4. 自动车牌识别(ALPR): ALPR系统利用OCR从交通监控、停车管理、收费收集和执法应用中摄像头捕获的图像或视频流中读取车牌号码。
  5. 无障碍解决方案: OCR在为视障人士创建无障碍内容中起到了关键作用。 通过将图像或文档中的文本转换为语音或盲文,OCR有助于使信息可供残障人士访问。
  6. 身份验证: OCR技术被用在身份验证过程中,例如扫描和处理身份证件如护照、驾照和身份证。 它有助于验证文件的真实性,并提取相关信息以用于身份验证目的。
  7. 银行和金融: OCR用于银行和金融中,如读取支票、处理发票、转换现有PDF文档、从财务报表提取数据,以及自动化基于文档的工作流程以提高财务操作的准确性和效率。
  8. 自动翻译: OCR技术集成到翻译工具和语言学习应用中,以将印刷文本从一种语言转换为另一种语言。 用户可以用他们的设备捕获文本,OCR在实时翻译成所需语言时提供帮助。
  9. 档案和历史文件保存: OCR用于数字化档案材料和历史文件,将它们以数字格式保存以供将来访问、研究和分析,同时确保珍贵文化遗产的保存。

许可要求

IronOCR。 提供以下详细信息以获取通过电子邮件ID发送给您的密钥

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

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

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

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

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

<configuration>
    <!-- Other settings -->
    <appSettings>
        <add key="IronOcr.LicenseKey" value="IRONOCR-MYLICENSE-KEY-1EF01"/>
    </appSettings>
</configuration>
XML

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

{
    "IronOcr.LicenseKey": "IRONOCR-MYLICENSE-KEY-1EF01"
}
JSON

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

bool result = IronOcr.License.IsValidLicense("IRONOCR-MYLICENSE-KEY-1EF01");

结论

总之,IronOCR提供了一个强大的OCR解决方案,起价为$999。 通过 IronOCR 拥抱 OCR 的力量,为您的 C# 项目开启无限可能的世界。

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户