如何使用 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
或者通过 .NET CLI:
dotnet add package IronOcr
想要另一种语言吗?
IronOCR 通过 NuGet 支持127 种以上语言。例如:
Install-Package IronOcr.Languages.German
💡 提示:仅安装您需要的语言包以减少应用程序大小。
使用 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);
此代码加载图像文件并执行 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);
仅在真正需要的图像上使用诸如 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);
}
在此设置中,我们明确选择英语作为 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);
}
在这里,我们使用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}%)");
}
}
}
在此示例中,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 可为您节省数小时(甚至数天)的配置和预处理工作。