IRONSOFTWAREHOME
USING IRONOCR

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

Kannaopat Udonpant
Kannapat Udonpant
Updated: 2026年6月28日

C# 中的光学字符识别 (OCR) 功能允许您从.NET应用程序中的扫描文档、图像文件和 TIFF 文件中提取机器可读文本。 IronOCR是一个 .NET 原生 OCR 库,您只需安装一个NuGet包,几行代码即可开始从图像中读取文本——无需外部服务,无需运行时依赖,也无需按次 API 调用付费。

立即开始IronOCR的免费试用,并跟随以下代码示例进行操作。

如何在.NET项目中安装IronOCR ?

将 OCR 添加到.NET 10 项目的最快方法是通过NuGet包管理器。 在您的项目目录中打开终端并运行 .NET CLI 命令,或在 Visual Studio 中使用程序包管理控制台:

PM > Install-Package IronOcr

安装完成后, NuGet包管理器会自动下载所有必需的程序集并连接引用。 IronOCR 的目标框架为.NET Framework 4.6.2+、. .NET Core 3.1+ 以及.NET 5 至.NET 10,因此它可以在控制台应用程序、 ASP.NET Core服务、WPF 应用程序和 Azure Functions 中运行。

您无需注册许可证密钥即可在本地进行测试——在应用许可证之前,输出结果上会显示试用水印。 添加 using 指令,并在准备投入生产环境时,在启动时传递一次密钥:

using IronOcr;

// Apply license key before any OCR calls (production only)
IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY";

有关定价和激活详情,请参阅IronOCR许可页面

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

核心OCR工作流程涉及三个对象:OcrResult(输出)。 下面的示例读取一个PNG并将识别的文本打印到控制台。

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.LoadImage("sample-document.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);

光学字符识别输出

OCR在C# CodeProject教程:使用IronOCR从图像中提取文本:图1 - OCR输出的截图

IronTesseract以.NET友好的默认设置和自动模型管理封装了Tesseract 5引擎。 OcrInput.LoadImage接受PNG、JPEG、BMP、GIF、TIFF和WebP文件,因此您很少需要在将图像传递给引擎之前转换格式。

OcrResult.Text属性返回所有识别到的字符的纯字符串,以换行符连接。 要访问更丰富的信息——单词边界框、置信分数、每段文字——请导航到result.Characters集合。

值得了解的关键特性:

  • result.Pages[0].Text ——来自单个页面的文本
  • result.Words[n].Confidence ——每字的准确性(0.0 —— 1.0)
  • result.Pages[0].Paragraphs ——段落分割以进行结构化提取

您还可以调用ocr.ReadAsync(input)以保持桌面或Web应用程序中的UI线程空闲。

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

在文档扫描工作流程中,多页 TIFF 文件很常见。 IronOCR通过LoadImageFrames处理它们,可以让您选择要处理的帧(页面)——当您只需要较大存档的一部分时很有用。

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
int[] pageIndices = { 0, 1, 2 };
input.LoadImageFrames("scanned-documents.tiff", pageIndices);

// Correct skew and remove noise before reading
input.Deskew();
input.DeNoise();

OcrResult result = ocr.Read(input);

foreach (var page in result.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}:");
    Console.WriteLine(page.Text);
}

从多页 TIFF 文件输出OCR

OCR在C# CodeProject教程:使用IronOCR从图像中提取文本:图2 - 多页TIFF的OCR输出

Deskew旋转图像以纠正平板扫描仪引入的任何倾斜。 DeNoise移除会混淆Tesseract引擎的斑点和JPEG伪影。结合这两个预处理滤波器,显著提高了低质量扫描的识别精度。

困难的源材料可用的额外OcrInput滤波器:

  • input.Sharpen() ——增加模糊图像的边缘对比度
  • input.Binarize() ——将文件转换为黑白以适合传真质量的文档
  • input.Scale(200) ——放大小图像以更好地分离字符
  • input.Rotate(90) ——校正旋转的文档方向

有关预处理选项及其应用时机的完整列表,请参阅IronOCR图像滤镜指南

如何配置 OCR 的语言支持?

IronOCR默认读取英文文本。 要处理其他语言的文档,请安装相应语言的NuGet包并在Language属性。

dotnet add package IronOcr.Languages.German, IronOcr.Languages.French, IronOcr.Languages.Japanese

然后配置引擎,对于双语文档,添加第二种语言:

using IronOcr;
using IronOcr.Languages;

var ocr = new IronTesseract();
ocr.Language = OcrLanguage.German;

// For bilingual documents (e.g. Canadian forms, EU directives)
ocr.AddSecondaryLanguage(OcrLanguage.French);

using var input = new OcrInput();
input.LoadImage("german-invoice.png");

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);

IronOCR支持超过 125 种语言,每种语言都以单独的轻量级NuGet包的形式分发。 这样可以保持生产二进制文件的大小——只包含应用程序实际需要的语言数据。 调用AddSecondaryLanguage时,引擎在识别过程中结合使用主次语言模型。

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

生产应用需要针对OCR流程进行错误处理。图像质量问题、文件缺失或格式不支持都可能导致异常。 将调用包裹在 try/catch 块中,可以得到一个清晰的恢复路径。

using IronOcr;

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

try
{
    using var input = new OcrInput();
    input.LoadImage("document.png");
    input.DeNoise();
    input.Deskew();

    OcrResult result = ocr.Read(input);

    if (result.Text.Length > 0)
    {
        Console.WriteLine("Recognised text:");
        Console.WriteLine(result.Text);
    }
    else
    {
        Console.WriteLine("No text was detected in the image.");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"OCR error: {ex.Message}");
}

以下几个附加设置有助于降低准确率:

  • ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto ——让Tesseract自动选择单列、多列和单词布局
  • ocr.Configuration.ReadBarCodes = false ——如果您正在处理仅包含文本的文档,并希望提高吞吐量,请禁用条码检测
  • ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5 ——确保您使用最快可用的引擎

对于字段位置可预测的结构化表单,请使用基于区域的 OCR仅读取重要区域:

using IronOcr;
using IronSoftware.Drawing;

var ocr = new IronTesseract();

using var input = new OcrInput();
var region = new CropRectangle(x: 50, y: 200, width: 600, height: 100);
input.LoadImage("form.png", region);

OcrResult result = ocr.Read(input);
Console.WriteLine(result.Text);

将识别范围限制在裁剪矩形区域内,可以减少大图像处理时间高达 90%。 该技术非常适合用于提取发票号码、读取表单字段和扫描身份证件。 更多详情请参阅区域 OCR 使用指南

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

将扫描图像存档转换为可搜索的 PDF 文件是 OCR 最有价值的应用案例之一。 生成的文件保留了原始的视觉外观,同时嵌入了一个不可见的文本层,PDF 查看器、搜索引擎和屏幕阅读器可以对其进行索引。

using IronOcr;

var ocr = new IronTesseract();

using var input = new OcrInput();
input.Title = "Quarterly Report Q1 2026";
input.LoadImage("page1.png");
input.LoadImage("page2.png");
input.LoadImage("page3.png");

OcrResult result = ocr.Read(input);
result.SaveAsSearchablePdf("searchable-output.pdf");

Console.WriteLine("Searchable PDF created.");
Console.WriteLine($"Pages processed: {result.Pages.Count}");

输出可搜索的 PDF 文档

OCR在C# CodeProject教程:使用IronOCR从图像中提取文本:图3 - 从输入图像创建的可搜索PDF

SaveAsSearchablePdf写入与PDF/A兼容的文件,其中每个识别的单词被放置在原始图像的确切像素坐标上。 Adobe Acrobat、macOS 上的预览程序和 Foxit Reader 都支持在生成这些文件后立即进行全文搜索。

对于基于Web的文档查看器或下游NLP流水线,请改用result.SaveAsHocrFile("output.hocr")hOCR 格式是一种开放的 XML 标准,它将每个单词的边界框与文本一起编码,从而实现客户端搜索高亮显示和单词级辅助功能注释。

OcrResult可用的额外输出格式:

  • result.SaveAsHocrFile("output.hocr") ——包含位置数据的hOCR XML
  • result.ToXDocument() ——LINQ可查询的XDocument用于程序处理
  • result.Pages[0].Text ——每页的纯文本以进行流式处理管道

对于已经与IronPDF一起工作的应用程序,您可以将OcrResult直接传入PDF生成工作流,在单个.NET进程中结合OCR提取与PDF编辑。

如何解读条形码和文字?

IronOCR可以读取嵌入在与印刷文本同一图像中的条形码和二维码,无需运行单独的条形码库。 通过一个配置属性启用该功能:

using IronOcr;

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;

using var input = new OcrInput();
input.LoadImage("shipping-label.png");

OcrResult result = ocr.Read(input);

Console.WriteLine("Text:");
Console.WriteLine(result.Text);

Console.WriteLine("Barcodes:");
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"  {barcode.Format}: {barcode.Value}");
}

支持的条形码格式包括 Code 128、Code 39、EAN-13、EAN-8、UPC-A、UPC-E、PDF417、Data Matrix 和 QR 码。 详细信息请参阅IronOCR条形码读取指南

这项功能在物流、医疗保健和零售应用中尤其有用,因为运输标签、病人腕带和产品标签都包含人可读文本和机器可读条形码。

如何将IronOCR与其他.NET OCR 选项进行比较?

开发人员在评估.NET的 OCR 库时通常会考虑IronOCR、Tesseract .NET以及 Google Cloud Vision 或 Azure计算机视觉 等云服务。 下表总结了关键差异:

基于关键开发人员标准的.NET OCR 选项比较
标准IronOCRTesseract.NETAzure计算机视觉
部署本地部署或云端部署,无需外部呼叫本地部署仅限云端,需要互联网连接
安装单个NuGet包多个软件包 + 原生二进制文件SDK + Azure 订阅
语言包通过NuGet包提供 125 多个包手动 tessdata 下载由 Azure 管理
可搜索的 PDF 输出内置一个方法调用不包含不包含
图像预处理12+ 内置过滤器需要手动预处理自动(服务器端)
定价模式一次性永久许可开源(Apache 2.0)按通话次数计费

Tesseract是由 Google 维护的开源项目,它为IronOCR和 Tesseract .NET提供底层技术支持。 IronOCR增加了 .NET 惯用的打包方式、自动模型管理以及原始 Tesseract 绑定所缺乏的生产输出功能(可搜索的 PDF、hOCR 导出)。 Azure 计算机视觉提供最先进的云精度,但引入了网络延迟和每次调用成本,不适合高容量或离线工作流程。

对于数据隐私法规禁止将文档发送到外部服务的情况(例如医疗记录、法律文件、财务报表),像IronOCR这样的本地库是合适的选择。

下一步计划是什么?

现在,您已具备向任何.NET 10 应用程序添加 OCR 的基本构建模块:通过NuGet安装、基本图像到文本提取、多页 TIFF 处理、语言配置、错误处理、基于区域的读取、条形码检测和可搜索的 PDF 生成。

如需深入了解,请浏览以下IronOCR资源:

IronOCR文档主页——完整的 API 参考和功能指南 图像滤镜教程——所有预处理滤镜的详细指南 条形码读取指南——二维码和线性条形码及文本 -区域 OCR 使用指南——基于作物的表单和 ID 识别 -语言参考-- 超过 125 种受支持语言的完整列表

有关许可问题或在生产环境中部署IronOCR ,请访问IronOCR许可页面免费试用许可证可在评估期间移除输出水印, Iron Software 的支持团队可解答任何级别的技术问题。

第一步:
arrow pointer

相关文章

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 天试用密钥
无需信用卡或创建账户