跳至页脚内容
使用 IRONOCR

OCR C# GitHub:使用 IronOCR 实现文本识别

在 GitHub 上搜索 OCR 解决方案时,经常会找到零散的文档、复杂的 Tesseract 配置以及很久没有更新的项目。对于需要从图像和 PDF 中提取可靠文本的 C# 开发人员来说,浏览版本库可能会耗费大量时间,而这些时间最好用来编码。 许多开源光学字符识别项目需要手动进行二进制管理、下载测试数据文件和 Windows 系统故障排除。

本教程演示了如何使用 IronOCR在 C# 项目中实现 OCR 功能,IronOCR 是一个经过改进的库,消除了原始 Tesseract 实现中常见的令人头疼的配置问题。 无论是构建文档处理管道,还是为现有应用程序添加文本识别功能,本指南都提供了可随时用于 OCR C# GitHub 项目的工作代码示例。

是什么让 IronOCR 成为基于 GitHub 的 C# 代码项目的理想选择?

IronOCR for .NET 提供了一个通过 NuGet 发布的托管 .NET 库,可以直接集成到任何 GitHub 存储库中。 与需要手动管理二进制文件和测试数据配置的开源 Tesseract OCR 封装程序不同,IronOCR 在内部处理这些依赖关系,开箱即用。

该库在 GitHub 上维护官方示例库,开发人员可以克隆和参考。 这些教程演示了现实世界中的实现,包括图像到文本的转换、多语言支持和 PDF 处理。 贡献者可以在克隆后立即测试功能。

要在 Visual Studio 中开始使用,请通过 NuGet 包管理器安装 IronOCR:

Install-Package IronOcr
Install-Package IronOcr
SHELL

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-1.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图片 1 - 安装。

安装后,这个单一软件包就包含了在 Windows、Linux 和 macOS 环境中进行 OCR 操作所需的一切。 该库支持 .NET Framework 4.6.2+、.NET Core 和 .NET 5-10,以实现最大的兼容性。

如何用 C# 从图像格式中提取文本?

下面的示例演示了使用 IronOCR 的 IronTesseract 类提取基本文本的过程。 该 OCR 引擎可读取各种图像格式,包括 PNG、JPG、JPEG、BMP、GIF 和 TIFF:

using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process an image
using var input = new OcrInput("document-scan.png");
// Perform OCR and retrieve results
var result = ocr.Read(input);
// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
using IronOcr;
// Initialize the OCR engine
var ocr = new IronTesseract();
// Load and process an image
using var input = new OcrInput("document-scan.png");
// Perform OCR and retrieve results
var result = ocr.Read(input);
// Output the extracted text to console
Console.WriteLine($"Extracted Text:\n{result.Text}");
Console.WriteLine($"Confidence: {result.Confidence}%");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronTesseract 类是主要的 OCR 引擎,基于经过优化的 Tesseract 5 实现。 创建实例后,OcrInput 对象将从磁盘、URL 或字节数组加载目标图像。 Read 方法处理输入并返回 OcrResult 包含提取的纯文本以及表示识别准确性的置信度百分比。 较高的置信度值(90% 以上)通常表示源文件干净整洁、格式规范。

输入

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-2.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图片 2 - 输入示例。

输出

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-3.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图片 3 - 控制台输出。

OcrResult 对象提供了对已识别内容的结构化访问。 除了纯文本外,开发人员还可以访问单个单词、行、段落和字符,以及它们的位置和置信度分数。 每个 Word 都包含边界矩形坐标,因此对于需要精确文本位置数据的应用(如文档注释或表单字段提取)非常有用。

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-4.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图像 4 - 功能。

图像预处理如何提高光学字符识别的准确性?

扫描文件通常会出现偏斜、噪音或分辨率不理想的情况。 IronOCR 包含内置预处理过滤器,可在 OCR 引擎处理图像之前纠正这些问题:

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");
// Apply preprocessing filters to enhance scan quality
input.Deskew();           // Straighten rotated images
input.DeNoise();          // Remove digital artifacts
input.EnhanceResolution(225);  // Optimize DPI for OCR
var result = ocr.Read(input);
Console.WriteLine(result.Text);
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("skewed-receipt.jpg");
// Apply preprocessing filters to enhance scan quality
input.Deskew();           // Straighten rotated images
input.DeNoise();          // Remove digital artifacts
input.EnhanceResolution(225);  // Optimize DPI for OCR
var result = ocr.Read(input);
Console.WriteLine(result.Text);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Deskew方法可自动检测和纠正图像旋转,最高可达 15 度。 DeNoise 过滤器可去除照片文件或旧扫描文件中常见的斑点和人工痕迹。 EnhanceResolution将低 DPI 图像提升至 200-300 DPI 范围,是光学字符识别的最佳选择。 这些功能可以串联在一起并在内存中运行,不需要临时文件。 在许多情况下,对存在严重质量问题的文档进行多次预处理可以显著提高文本识别结果。

您能否在提取文本的同时提取 BarCode 和 QR 码?

IronOCR 可以在同一文档中同时识别文本和扫描条形码。 事实证明,这种双重功能对于处理发票、运输标签和库存文件非常有价值:

using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection
using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);
// Access extracted text
Console.WriteLine($"Text: {result.Text}");
// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
using IronOcr;
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;  // Enable barcode detection
using var input = new OcrInput("shipping-label.png");
var result = ocr.Read(input);
// Access extracted text
Console.WriteLine($"Text: {result.Text}");
// Access any barcodes found in the image
foreach (var barcode in result.Barcodes)
{
    Console.WriteLine($"Barcode ({barcode.Format}): {barcode.Value}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

当启用 ReadBarCodes 并将其设置为 true 时,条形码检测将激活,而不会对处理时间产生重大影响。结果中的 Barcodes 集合包含每个检测到的条形码的值和格式类型,支持 QR 码、Code 128、EAN-13 和 UPC 等标准格式。 在处理同时包含人类可读文本和机器可读代码的文档时,这种双重功能无需单独使用条形码扫描库。

输入

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-5.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图片 5 - 示例 BarCode 图片。

输出

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-6.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图片 6 - 控制台条形码文本输出。

如何从扫描图像生成可搜索的 PDF?

将扫描文档转换为可搜索的 PDF 可实现文本选择、复制和全文搜索。 可使用各种图像格式作为输入:

using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);
// Export as searchable PDF - create new document from scan
result.SaveAsSearchablePdf("contract-searchable.pdf");
using IronOcr;
var ocr = new IronTesseract();
using var input = new OcrInput("scanned-contract.tiff");
var result = ocr.Read(input);
// Export as searchable PDF - create new document from scan
result.SaveAsSearchablePdf("contract-searchable.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

SaveAsSearchablePdf 方法嵌入了一个与识别内容相匹配的隐形文本层,保留了原始文档的外观,同时支持文本操作。 这将创建符合 PDF/A 标准的文档,适用于存档和企业文档管理系统。 您还可以将结果导出为 JSON 格式,以便与其他系统集成。

GitHub 项目中 OCR 的最佳实践是什么?

在 GitHub 上维护 OCR 项目时,请考虑以下有关版本库的建议:

  • 使用 Git LFS处理大型测试图像,避免臃肿的版本库大小
  • 将许可证密钥存储在环境变量或 GitHub Secrets 中,切勿存储在已提交的 C# 代码中--请参考许可证密钥配置指南
  • 在专用的测试数据文件夹中包含样本图像,供撰稿人验证 OCR 功能
  • 在 README 文件中记录支持的图像格式,以明确预期并回答常见问题
  • 在 CI 管道中构建和运行测试,以确保库在每个版本中都能正确运行

对于 GitHub Actions 工作流程,IronOCR 可在 Windows 和 Linux 上的容器环境中运行。 在针对非 Windows 运行程序时,请参考 Linux 部署指南以了解配置详情。

IronOCR 还支持 多种语言,包括英语、西班牙语、法语、中文和其他 120 多种语言。 通过 NuGet 下载语言包,激活英语以外语言的文本识别功能。 这为您的系统所需的几乎所有语言提供了免费的 OCR 访问。

结论

IronOCR 通过其直观的 API、自动图像预处理和可靠的跨平台支持,简化了 C# GitHub 项目中的 OCR 实现。 上述代码示例为构建能与基于 GitHub 的开发工作流顺利集成的文档处理应用程序奠定了基础。 该库可与 .NET Framework、.NET Core 和现代 .NET 版本一起使用,为任何类型的项目提供广泛的兼容性。

开始免费试用以了解全部功能,或查看用于生产部署的许可选项

!a href="/static-assets/ocr/blog/ocr-csharp-git/ocr-csharp-git-7.webp">OCR C# GitHub:使用 IronOCR 实现文本识别:图片 7 - 许可。

常见问题解答

什么是 IronOCR?

IronOCR 是一个功能强大的 C# 光学字符识别 (OCR) 库,可简化从图像和 PDF 中提取文本的过程。

为什么开发者应该选择 IronOCR 而不是 GitHub 的 OCR 解决方案?

IronOCR 提供可靠且最新的 OCR 功能,无需复杂的配置或手动二进制管理,这与许多分散的 GitHub 项目不同。

IronOCR 可以同时处理图像和 PDF 文档吗?

是的,IronOCR 旨在高效地从图像和 PDF 文档中提取文本。

使用 IronOCR 时是否需要管理 tessdata 文件?

不,IronOCR 消除了手动管理 tessdata 文件的需求,简化了 OCR 的实施过程。

IronOCR 与 Windows 系统兼容吗?

是的,IronOCR 与 Windows 系统完全兼容,无需进行大量的故障排除即可提供无缝的安装和使用体验。

IronOCR 如何改善开发人员的工作流程?

IronOCR 简化了 OCR 集成流程,使开发人员能够更专注于编码,而不是处理分散的文档和配置。

IronOCR是为哪种编程语言设计的?

IronOCR 专为 C# 开发人员设计,提供针对该语言生态系统量身定制的强大 OCR 解决方案。

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