跳至页脚内容
使用 IRONOCR

C# 中的 OCR CodeProject 教程:使用 IronOCR 从图像中提取文本

光学字符识别 (OCR) 改变了开发人员在 .NET 项目中处理文档的方式。 无论是处理扫描文档、图像文件还是 TIFF 文件,实施可靠的 OCR 解决方案都能使应用程序提取文本并将可视数据转换为机器可读内容。 在本文中,我们将向您展示如何在 C# CodeProject 中使用 IronOCR 来使用 OCR,IronOCR 是一个功能强大的 OCR 库,可以简化整个文本识别过程。

开始免费试用 IronOCR,跟随这些代码示例一起学习。

如何在我的 .NET 项目中设置 OCR 库?

在 Visual Studio 中设置光学字符识别 (OCR) 只需几个步骤。 IronOCR 库通过 NuGet 提供,因此可以直接集成到任何 Windows 应用程序中。

打开 Visual Studio 并创建一个新的控制台应用程序项目。 在解决方案资源管理器中,右键单击 "引用",然后选择 "管理 NuGet 包"。搜索 "IronOcr "并安装该软件包。 NuGet 软件包管理器会下载所有需要的 DLL 文件,并自动将引用添加到您的项目中。

// Install via Package Manager Console
Install-Package IronOCR
// Install via Package Manager Console
Install-Package IronOCR
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

安装完成后,添加 using 语句将 IronOCR 命名空间导入程序。 该库支持 .NET Framework 4.6.2+ 和 .NET Core,确保不同项目类型和 Windows 版本之间的兼容性。

如何从图像文件中提取文本?

OCR 流程的第一步是加载图像并通过 OCR 引擎。IronOCR 提供了 IronTesseract 类作为字符识别操作的主要 OCR API。 该 OCR 示例演示了从任何图像文件中提取文本的基本方法。

using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        // Initialize the new Tesseract engine
        var ocr = new IronTesseract();
        // Load the image file and perform OCR
        using (var input = new OcrInput())
        {
            input.LoadImage(@"sample-document.png");
            // Process the image and extract text
            OcrResult result = ocr.Read(input);
            // Output the recognized text
            var text = result.Text;
            Console.WriteLine(text);
        }
    }
}
using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        // Initialize the new Tesseract engine
        var ocr = new IronTesseract();
        // Load the image file and perform OCR
        using (var input = new OcrInput())
        {
            input.LoadImage(@"sample-document.png");
            // Process the image and extract text
            OcrResult result = ocr.Read(input);
            // Output the recognized text
            var text = result.Text;
            Console.WriteLine(text);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

光学字符识别输出

!a href="/static-assets/ocr/blog/ocr-csharp-codeproject/ocr-csharp-codeproject-1.webp">OCR in C# CodeProject 教程:使用 IronOCR 从图像中提取文本:图片 1 - OCR 输出截图。

上面的代码创建了一个 IronTesseract 对象,作为所有文本识别操作的 OCR 引擎。 OcrInput 类接受各种图像格式,包括 PNG、JPEG、BMP、GIF 和 TIFF。 调用读取方法时,库会处理输入的图像,并返回一个包含识别文本的 OcrResult 对象。

OcrResult.Text 属性将提取的内容作为纯文本字符串提供,以便在应用程序中进行进一步处理。 该 OCR 代码在内部处理复杂的字符识别算法,可在不同文档类型中提供高准确度的识别结果。

如何处理扫描文档和 TIFF 文件?

现实世界中的应用通常需要处理以 TIFF 文件格式存储的多页扫描文档。 OCR 库允许开发人员加载特定的页面范围或处理整个文档,从而高效地处理这些情况。 该示例代码展示了如何处理多帧 TIFF 图像。

using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput())
        {
            // Load specific pages from a multi-page TIFF file
            int[] pageIndices = new int[] { 0, 1, 2 };
            input.LoadImageFrames(@"scanned-documents.tiff", pageIndices);
            // Apply image enhancement for better results
            input.Deskew();
            OcrResult result = ocr.Read(input);
            // Access page-by-page results
            foreach (var page in result.Pages)
            {
                Console.WriteLine($"Page {page.PageNumber}:");
                Console.WriteLine(page.Text);
            }
        }
    }
}
using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput())
        {
            // Load specific pages from a multi-page TIFF file
            int[] pageIndices = new int[] { 0, 1, 2 };
            input.LoadImageFrames(@"scanned-documents.tiff", pageIndices);
            // Apply image enhancement for better results
            input.Deskew();
            OcrResult result = ocr.Read(input);
            // Access page-by-page results
            foreach (var page in result.Pages)
            {
                Console.WriteLine($"Page {page.PageNumber}:");
                Console.WriteLine(page.Text);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

从多页 TIFF 文件输出OCR

!a href="/static-assets/ocr/blog/ocr-csharp-codeproject/ocr-csharp-codeproject-2.webp">OCR in C# CodeProject 教程:使用 IronOCR 从图像中提取文本:图像 2 - 多页 TIFF OCR 输出。

LoadImageFrames 方法接受一个文件路径和一个整数数组,指定要处理的页面。 当您只需要大型文档档案中的特定页面时,这种方法可以优化性能。 纠偏过滤器可纠正扫描图像中的任何旋转或对齐问题,提高图像质量和 OCR 精确度。

成果中的每一页都要保留排版信息,包括段落、行和单词。 OCR API 可提供置信度分数和定位数据,使复杂的文档分析超越简单的文本提取。

如何处理 OCR 代码错误并提高识别结果?

生产应用程序需要适当的错误处理来管理各种异常情况。 图像质量问题、不支持的文件格式或损坏的文件都可能导致 OCR 过程失败。 实施异常处理可确保您的应用程序从容应对这些情况。

using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        var ocr = new IronTesseract();
        // Configure the OCR engine for your language
        ocr.Language = OcrLanguage.English;
        try
        {
            using (var input = new OcrInput())
            {
                input.LoadImage(@"document.png");
                // Enhance low-quality images
                input.DeNoise();
                input.Deskew();
                OcrResult result = ocr.Read(input);
                if (result.Text.Length > 0)
                {
                    Console.WriteLine("Recognized text:");
                    Console.WriteLine(result.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"OCR Error: {ex.Message}");
        }
    }
}
using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        var ocr = new IronTesseract();
        // Configure the OCR engine for your language
        ocr.Language = OcrLanguage.English;
        try
        {
            using (var input = new OcrInput())
            {
                input.LoadImage(@"document.png");
                // Enhance low-quality images
                input.DeNoise();
                input.Deskew();
                OcrResult result = ocr.Read(input);
                if (result.Text.Length > 0)
                {
                    Console.WriteLine("Recognized text:");
                    Console.WriteLine(result.Text);
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"OCR Error: {ex.Message}");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

语言属性可配置 OCR 引擎使用哪种语言包进行文本识别。 IronOCR 支持超过 125 种语言,每种语言都有单独的 NuGet 软件包。 去噪过滤器可以去除扫描文档中的数字伪影,而纠偏则可以校正对齐度--这两项功能对于从不连贯的源图像中获得最佳识别效果至关重要。

如何从识别的文本中创建可搜索的 PDF?

将扫描文件转换为可搜索的 PDF 文件是最有价值的 OCR 应用程序之一。 然后,用户可以从以前的纯图像文档中搜索、选择和复制文本。 这种转换可使文档管理系统对内容进行索引并提高可访问性。

using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput())
        {
            // Set document metadata
            input.Title = "Converted Document";
            // Load source images or existing PDF
            input.LoadImage(@"page1.png");
            input.LoadImage(@"page2.png");
            OcrResult result = ocr.Read(input);
            // Save as searchable PDF with embedded text layer
            result.SaveAsSearchablePdf(@"searchable-output.pdf");
            Console.WriteLine("Searchable PDF created successfully.");
            Console.WriteLine($"Total pages processed: {result.Pages.Count}");
        }
    }
}
using System;
using IronOcr;
class Program
{
    static void Main(string[] args)
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput())
        {
            // Set document metadata
            input.Title = "Converted Document";
            // Load source images or existing PDF
            input.LoadImage(@"page1.png");
            input.LoadImage(@"page2.png");
            OcrResult result = ocr.Read(input);
            // Save as searchable PDF with embedded text layer
            result.SaveAsSearchablePdf(@"searchable-output.pdf");
            Console.WriteLine("Searchable PDF created successfully.");
            Console.WriteLine($"Total pages processed: {result.Pages.Count}");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出可搜索的 PDF 文档

!a href="/static-assets/ocr/blog/ocr-csharp-codeproject/ocr-csharp-codeproject-3.webp">OCR in C# CodeProject 教程:使用 IronOCR 从图像中提取文本:图像 3 - 从输入图像创建的可搜索 PDF

SaveAsSearchablePdf 方法生成的 PDF 文件保留了原始图像的外观,同时嵌入了一个不可见的文本层。 这种方法通过确保可视化输出与源代码完全匹配来保持文档的保真度,同时还能进行全文检索。 然后,Microsoft Office 应用程序、Adobe Reader 和其他 PDF 阅读器就可以对识别的文本进行搜索和索引。

对于需要 HTML 输出的应用程序,IronOCR 还提供了 SaveAsHocrFile 方法,可以 hOCR 格式导出结果。 这种基于 XML 的标准包括每个单词的定位数据,支持基于网络的文档查看器和高级文本分析工作流。

结论

有了 IronOCR,在 C# 项目中实现光学字符识别变得简单易行。 该库可处理复杂的图像,支持多种图像格式和语言,并提供灵活的输出选项,包括生成可搜索的 PDF。 从简单的文本提取到处理多页 TIFF 文档,本教程中的示例展示了开发人员所需的核心工作流程。

IronOCR文档高级图像过滤器条形码读取特定区域 OCR 处理提供了额外的代码示例。 API 参考详细介绍了用于构建综合文档处理解决方案的所有可用类和方法。

立即开始使用 IronOCR。
green arrow pointer

准备好在您的下一个项目中实施 OCR了吗? 购买许可证,即可在生产环境中部署 IronOCR,并获得全面支持和更新。

常见问题解答

什么是OCR?它如何使C#开发人员受益?

OCR(光学字符识别)是一种将不同类型的文档(例如扫描的纸质文档、PDF 或数码相机拍摄的图像)转换为可编辑和可搜索数据的技术。对于 C# 开发人员而言,OCR 简化了文档处理流程,使应用程序能够从图像和扫描文档中提取文本,从而增强数据的可访问性和可用性。

如何在C#项目中实现OCR?

您可以使用 IronOCR 库在 C# 项目中实现 OCR 功能。该库提供了一个易于使用的接口,用于从 .NET 应用程序中的图像和扫描文档中提取文本,从而轻松地将 OCR 功能集成到您的项目中。

IronOCR 支持哪些图像格式?

IronOCR 支持多种图像格式,包括 JPEG、PNG、BMP、GIF 和 TIFF。这种灵活性使您能够处理各种类型的图像文件,从而高效地提取文本。

IronOCR 可以处理多页 TIFF 文件吗?

是的,IronOCR可以处理多页TIFF文件。它能够处理并提取多页TIFF文件中每一页的文本,是处理复杂文档的理想解决方案。

是否可以使用 IronOCR 从图像的特定区域提取文本?

是的,IronOCR 允许您指定图像中的特定区域来提取文本。当您需要专注于文档的特定部分(例如表单或表格)时,此功能非常有用。

IronOCR是否支持不同语言的文本提取?

IronOCR支持多种语言的文本提取,让您能够无缝处理不同语言的文档。此功能增强了应用程序的通用性,使其能够满足全球用户的需求。

与其他 OCR 库相比,使用 IronOCR 有哪些优势?

IronOCR 具有诸多优势,包括易于使用、文本识别可靠、支持多种语言以及兼容多种图像格式。其强大的功能和性能使其成为希望在 C# 项目中实现 OCR 功能的开发人员的首选。

IronOCR是如何提高文本识别准确率的?

IronOCR 通过先进的算法和机器学习技术提高了文本识别的准确率。它能够处理字体、字号和布局各异的复杂文档,确保文本提取的高精度。

是否可以将 IronOCR 集成到现有的 .NET 应用程序中?

是的,IronOCR 可以轻松集成到现有的 .NET 应用程序中。其简洁易用的 API 使开发人员能够以最小的努力为应用程序添加 OCR 功能,无需进行大量修改即可增强其功能。

IronOCR在C#应用程序中有哪些常见用例?

IronOCR 可用于各种 C# 应用程序,包括文档管理系统、数据录入自动化、归档、从发票和收据中提取文本,以及为视障人士提供的辅助工具。其多功能性使其适用于广泛的行业和应用。

Kannaopat Udonpant
软件工程师
在成为软件工程师之前,Kannapat 在日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了车辆机器人实验室的成员,隶属于生物生产工程系。2022 年,他利用自己的 C# 技能加入 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他可以直接从编写大多数 IronPDF 代码的开发者那里学习。除了同行学习外,Kannapat 还喜欢在 Iron Software 工作的社交方面。不撰写代码或文档时,Kannapat 通常可以在他的 PS5 上玩游戏或重温《最后生还者》。