如何使用 IronOCR 和 Tesseract 在 C# 中构建 OCR 应用程序 - 完整教程

2025-06-09

如何使用 IronOCR 和 Tesseract 在 C# 中构建 OCR 应用程序 - 完整教程

最后更新:2025年5月14日

想要将 OCR(光学字符识别)功能引入你的 C# 应用程序,又不想手动配置原生 Tesseract?来对地方了。

💡注意:虽然本文引用了 Tesseract,但所有代码示例均使用IronOCR——一个功能强大的商业 C# OCR 库,它利用并增强了开源 Tesseract 引擎。IronOCR 简化了 OCR 开发,添加了高级预处理功能,支持 PDF,并且在 Windows、Linux 和 macOS 上开箱即用。

为什么选择 IronOCR?

IronOCR 不仅仅是 Tesseract 的包装器,它还是一个为 .NET 开发人员构建的功能齐全的 OCR 引擎,提供以下功能:

  • 内置图像预处理(去斜、去噪、增强分辨率等)
  • 读取 PDF、图像、TIFF 和流
  • 输出结构化数据(文本、置信度、坐标)
  • 将结果导出为可搜索的 PDF
  • 通过 NuGet 提供 127 多种语言包的多语言支持
  • 快速+准确的OCR策略
  • 跨平台支持(Windows、Linux、macOS、Docker、Azure、AWS)

📄 IronOCR 许可:IronOCR 是一个商业库,提供开发和测试免费试用。许可证起价为 749 美元。
查看当前价格:IronOCR 许可页面

先决条件和兼容性

IronOCR 几乎适用于所有现代 .NET 平台

  • ✅ .NET 9、8、7、6、5
  • ✅ .NET Core 2.0+
  • ✅ .NET 标准 2.0+
  • ✅ .NET Framework 4.6.2+

跨平台?是的!IronOCR 支持:

  • 🖥️ Windows
  • 🍎 macOS
  • 🐧 Linux
  • 🐳 Docker
  • ☁️ Azure 和 AWS 环境

安装

通过NuGet安装最新版本(截至 2025 年 5 月,v2025.4.13):

使用包管理器控制台:

Install-Package IronOcr
Enter fullscreen mode Exit fullscreen mode

安装 OCR 库 - IronOCR

或者通过 .NET CLI:

dotnet add package IronOcr
Enter fullscreen mode Exit fullscreen mode

想要另一种语言吗?

IronOCR 通过 NuGet 支持127 种以上语言。例如:

Install-Package IronOcr.Languages.German
Enter fullscreen mode Exit fullscreen mode

💡 提示:仅安装您需要的语言包以减少应用程序大小。

使用 IronOCR 在 C# 中进行基本 OCR

让我们从一个简单的示例开始,该示例使用 IronTesseract 从图像中读取文本。我们使用 IronTesseractLoadImage()直接从磁盘加载图像。您还可以根据需要应用可选的增强功能,例如对图像进行去歪斜或去噪,尤其是在处理倾斜或噪声输入时。

using IronOcr;        

var Ocr = new IronTesseract(); 
var ocrInput = new OcrInput();
ocrInput.LoadImage("image.jpg");

var Result = Ocr.Read(ocrInput);
Console.WriteLine(Result.Text);
Enter fullscreen mode Exit fullscreen mode

此代码加载图像文件并执行 OCR 以提取文本内容。

从图像中提取文本

您可以通过应用预处理功能(例如Deskew()DeNoise()EnhanceResolution()如果输入图像存在对齐或清晰度问题)来提高识别准确性。

 var Ocr = new IronTesseract(); 
 var ocrInput = new OcrInput();
 ocrInput.LoadImage("image.jpg");

 // Optional Pre-processing
 ocrInput.Deskew();              // Fix tilted text
 ocrInput.DeNoise();            // Remove background noise
 ocrInput.EnhanceResolution();  // Improve blurry or low-res images

 var Result = Ocr.Read(ocrInput);
 Console.WriteLine(Result.Text);
Enter fullscreen mode Exit fullscreen mode

仅在真正需要的图像上使用诸如 Deskew() 和 DeNoise() 之类的预处理方法。不必要的使用可能会增加处理时间,且无法提高准确率。

自定义 OCR:语言、速度、过滤器

IronOCR 允许您使用丰富的配置选项来微调 OCR 行为。在以下示例中,我们自定义语言、禁用条形码读取、将不需要的字符列入黑名单、启用 PDF 和 HOCR 渲染,并设置特定的 Tesseract 行为,例如页面分割模式和线程并行化。这种灵活性可帮助您根据用例优化识别准确率和输出格式。

using IronOcr; 


var Ocr = new IronTesseract();
 Ocr.Language = OcrLanguage.English;
 Ocr.Configuration.ReadBarCodes = false;
 Ocr.Configuration.BlackListCharacters = "`ë|^";
 Ocr.Configuration.RenderSearchablePdf = true;
 Ocr.Configuration.RenderHocr = true;
 Ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.AutoOsd;
 Ocr.Configuration.TesseractVariables["tessedit_parallelize"] = false;
 using (var Input = new OcrInput())
 {
     Input.LoadImage("image.png");
     var Result = Ocr.Read(Input);
     Console.WriteLine(Result.Text);
 }
Enter fullscreen mode Exit fullscreen mode

在此设置中,我们明确选择英语作为 OCR 语言,并调整引擎的行为以忽略不需要的字符并禁用条形码检测。我们还支持可搜索的 PDF 和 HOCR 格式的输出,并指定了更智能的页面分割策略。这些设置可以精细地控制 IronOCR 如何处理和解释您的输入文档。

PDF 文档的 OCR

IronOCR 支持对 PDF 文件(包括扫描件或基于图像的 PDF)进行直接 OCR 识别。这使得它对于自动化涉及扫描报告、表格或发票的文档工作流程尤其有用。以下示例演示了如何使用 IronTesseract 中的 LoadPdf() 函数加载和提取 PDF 中的文本。

using IronOcr;

var Ocr = new IronTesseract();

using (var Input = new OcrInput())
{
    Input.LoadPdf("doc.pdf");
    var Result = Ocr.Read(Input);
    Console.WriteLine(Result.Text);
}
Enter fullscreen mode Exit fullscreen mode

在这里,我们使用IronOCRLoadPdf()将 PDF 文件导入OcrInput容器。然后,IronOCR 会处理该文件并提取任何可读的文本,无论其内容最初是文本还是图像。这在处理扫描的 PDF(如果其本身不包含可选或可搜索的文本)时尤其有用。

深入探讨:结构化输出

IronOCR 不仅返回纯文本,还提供详细的结构化结果,例如页面、段落、行和单词。您甚至可以访问置信度级别和边界框数据,这对于审计、数据提取或自定义文本处理非常有用。以下示例展示了如何读取 PDF 并检索段落级结果及其置信度分数。

var Ocr = new IronTesseract();

using (var Input = new OcrInput())
{
    Input.LoadPdf("sample.pdf");
    var Result = Ocr.Read(Input);

    foreach (var page in Result.Pages)
    {
        foreach (var paragraph in page.Paragraphs)
        {
            Console.WriteLine($"Paragraph: {paragraph.Text} (Confidence: {paragraph.Confidence}%)");
        }
    }
}

Enter fullscreen mode Exit fullscreen mode

在此示例中,OCR 结果先按页面细分,再按段落细分。每个段落都包含提取的文本和一个置信度百分比,该百分比指示 OCR 输出的可靠性——值越高,识别越准确。这对于质量控制和后期处理工作流程尤其有用。

IronOCR的主要特点

特征 描述
多格式输入支持 从图像、多页 TIFF、PDF 和流中读取。
内置图像预处理 应用去偏斜、去噪、对比度增强和分辨率提升。
127+ 种语言包 通过 NuGet 语言包支持超过 127 种语言的 OCR。
结构化输出 返回包含页面、段落、行、单词、坐标和置信度级别的结构化数据。
可搜索的 PDF 导出 可以将结果导出为带有文本层的可搜索 PDF。
跨平台 可在 Windows、macOS、Linux、Docker、Azure 和 AWS 环境上运行。

许可

IronOCR 是一款商业 OCR 解决方案,提供:

  • 💼专业许可:起价 749 美元
  • 🧪 30 天免费试用:功能齐全,无任何限制
  • 📄官方许可页面

商业模式允许 IronOCR 投资于高级功能、更好的支持和定期更新,这些远远超出了开源 Tesseract。

结论

如果您正在构建需要可靠 OCR 的 .NET 应用(尤其是跨多种文件格式、语言或部署平台),那么 IronOCR 是目前最方便开发人员使用且功能最丰富的选择之一。通过将 Tesseract 的强大功能与现代 .NET API 和商业级支持相结合,IronOCR 可为您节省数小时(甚至数天)的配置和预处理工作。

📚 更多资源

鏂囩珷鏉ユ簮锛�https://dev.to/mhamzap10/how-to-use-tesseract-ocr-in-c-9gc
PREV
JavaScript 中的 Array.sort() - 我在一次面试中被问到这个问题
NEXT
7 Python Excel Libraries: In-Depth Review for Developers