如何在 OCR 中使用 C# 设置 DPI

This article was translated from English: Does it need improvement?
Translated
View the article in English

在 IronOCR 的 OcrInput 中设置 TargetDPI 属性,以提高低分辨率图像的分辨率,从而获得更好的 OCR 精确度。 即使分辨率低至 100 DPI,该配置也能显著提高模糊或像素化文档的文本识别能力。

每英寸点数 (DPI) 衡量图像质量,决定扫描文档或数码照片的细节水平。虽然扫描文档既快速又高效,但扫描过程通常会产生低分辨率文件,尤其是在使用默认或快速扫描设置时。 由于缺乏细节,文本显得模糊或像素化,给数据提取造成了障碍。

OCR 性能取决于图像质量。 OCR 引擎分析字符的形状和模式,将其转换为机器可读的文本。 当图像的 DPI 较低时,就没有足够的像素来清晰地定义每个字母,从而丢失了精细的细节,导致翻译结果不准确。 对于使用 扫描文档或传统数字化系统的开发人员来说,了解 DPI 优化对于可靠的文本提取至关重要。

IronOCR 有效地应对了这些挑战。 它能在分辨率低至 225 DPI 的扫描件上实现高准确度。 该库的图像预处理功能可自动检测和补偿各种图像质量问题,使其适用于处理各种来源的文档。 无论是在一行代码中实施 简单的 OCR 还是构建复杂的文档处理管道,DPI 优化仍然是一个关键因素。

快速入门:设置 TargetDPI 以获得更清晰的 OCR 结果

配置 IronOCR,在一行中提升低分辨率图像的分辨率--以最小的代价提高文本清晰度和识别率。

Nuget Icon立即开始使用 NuGet 创建 PDF 文件:

  1. 使用 NuGet 包管理器安装 IronOCR

    PM > Install-Package IronOcr

  2. 复制并运行这段代码。

    var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrInput { TargetDPI = 300 }.LoadImage("low-res.png"));
  3. 部署到您的生产环境中进行测试

    立即开始在您的项目中使用 IronOCR,免费试用!
    arrow pointer

如何设置 DPI 以获得更好的 OCR 结果? 本示例使用了分辨率约为 100 DPI 的低分辨率示例图像,并添加了人工噪声以演示 `TargetDPI` 功能的有效性。 在使用[OcrInput类](https://ironsoftware.com/csharp/ocr/examples/csharp-ocr-input-for-iron-tesseract/)时,了解如何配置DPI设置至关重要,该类提供了对图像预处理的全面控制。 图片中的实际文字是:"测试 测试 测试 模糊文字示例 示例 示例"。
低分辨率 100 DPI 样本,显示模糊、像素化的文本,表明 OCR 输入质量不佳

提升图像 DPI 需要哪些代码? 在本例中,我们将把 `TargetDPI` 设置为 300,以提高图像分辨率。 然后,我们将加载输入图像,并使用 `Text` 打印提取的文本,使用 `Confidence` 打印置信度。 最佳 DPI 设置通常在 250-400 DPI 之间,具体取决于使用情况和源文件质量。 有关涉及多个图像过滤器的高级应用场景,请参阅我们的[OCR图像优化过滤器](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/)指南。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/dpi-setting.cs ```

使用 Upscaled DPI 可以获得哪些效果?
显示 OCR 结果的调试控制台:DPI 优化后提取的文本具有 85% 的置信度得分
输出结果显示 IronOCR 的置信度达到 85%。 尽管噪声很大,源图像的初始 DPI 也很低,但结果仍然准确无误,证明了升频功能的有效性。 这一准确性水平超过了传统的 OCR 解决方案,因为传统的 OCR 解决方案在处理低质量输入时非常吃力。 对于要求更高精度的应用程序,可考虑实施 [ 进度跟踪](https://ironsoftware.com/csharp/ocr/how-to/progress-tracking/),以实时监控置信度并动态调整设置。 IronOCR 包括内置功能,可在单个库中通过提升分辨率自动增强低分辨率图像。 这种方法无需使用外部图像处理工具,从而简化了工作流程并减少了依赖性。 对于[在 Windows 上开始使用 IronOCR](https://ironsoftware.com/csharp/ocr/get-started/windows/) 的开发人员,该功能无需额外配置即可立即运行。

DPI 设置如何影响 OCR 精确度? 为了说明两者的区别,以下是在未设置 `TargetDPI` 属性的情况下处理相同低分辨率图像的结果。 这一对比说明了为什么正确的 DPI 配置对于可靠的文本提取至关重要。 找到正确的 DPI 需要平衡。 高 DPI 可提供更高的准确性,但处理速度较慢; 低DPI速度更快,但稳定性较差。 如有疑问,请让 `IronTesseract` 的自动预处理功能确定最佳设置。 您可以通过将 `TargetDPI` 属性设置为 0 来禁用自动缩放。对于专业应用,请参阅我们的 [Tesseract 图像 DPI 优化](https://ironsoftware.com/csharp/ocr/examples/ocr-image-dpi-for-tesseract/)指南。

没有 DPI 升频会发生什么?
调试控制台显示较差的 OCR 结果:置信度为 79% 的乱码文本,表明 DPI 提取质量较低
如果不进行放大,置信度得分会下降到 79%,提取的文本准确度也会明显降低。 该对比强调了设置 `TargetDPI` 如何改善低质量图像的 OCR 结果。 在处理包含表格、表单或多列布局的复杂文档时,差异会变得更加明显。

如何设置 PDF 文档的 DPI? 在处理 PDF 时,IronOCR 会将整个文档升频到目标 DPI,而不仅仅是其中的图像。 这种全面的方法可确保整个文档的质量始终如一,这对于商业应用中的[PDF OCR 文本提取](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/)非常重要。 对于高级 PDF 处理,例如处理 [ 可搜索 PDF](https://ironsoftware.com/csharp/ocr/how-to/searchable-pdf/) ,正确的 DPI 配置变得更加重要。 虽然较高的 DPI 通常会带来较好的 OCR 效果,但不同 PDF 的最佳设置各不相同。 如果您不确定使用哪个值,请将 DPI 保留为默认设置,让 IronOCR 自动确定最佳配置。 该库的算法可分析字体大小、图像质量和内容密度等文档特征,从而选择合适的预处理参数。 ```csharp // Example: Processing a PDF with custom DPI settings using IronOcr; var ocrTesseract = new IronTesseract(); using var ocrInput = new OcrInput(); // Configure DPI specifically for PDF processing ocrInput.TargetDPI = 250; // Lower DPI often works well for PDFs // Load a multi-page PDF document ocrInput.LoadPdf(@"documents\scanned-report.pdf"); // Optional: Process only specific pages // ocrInput.LoadPdf(@"documents\scanned-report.pdf", PageSelection: new int[] {1, 3, 5}); // Apply additional filters if needed ocrInput.DeNoise(); // Remove digital noise ocrInput.Sharpen(); // Enhance text edges // Perform OCR with confidence tracking var ocrResult = ocrTesseract.Read(ocrInput); // Process results page by page foreach (var page in ocrResult.Pages) { Console.WriteLine($"Page {page.PageNumber}: {page.Confidence}% confidence"); Console.WriteLine(page.Text); } ```
警告 `TargetDPI`的最大值为 32,766。设置 DPI 超过此限制将导致异常。 这是因为生成的图像尺寸将超过 Tesseract 支持的最大尺寸 32,767 x 32,767 像素。 如果超出限制,您将收到以下错误消息: 'TargetDPI 太高,会导致图像变得过大 ({new_width} x {new_height}),不适合 Tesseract。 Tesseract 的最大图片尺寸为 32767 x 32767'
对于处理大量文件的企业应用程序,可考虑实施动态 DPI 调整策略。 从适中的设置(300 DPI)开始,然后根据置信度分数进行调整。 这种方法兼顾了处理速度和准确性,确保了不同文档类型的最佳性能。将 DPI 优化与其他预处理技术相结合,可以为具有挑战性的文档带来更好的效果。 在处理特定文档类型时,DPI 要求可能会有所不同。 例如,[阅读车牌](https://ironsoftware.com/csharp/ocr/how-to/read-license-plate/)通常需要较高的 DPI 设置,因为字符尺寸较小,摄像头角度可能导致图像失真。 同样,处理 [MICR 支票](https://ironsoftware.com/csharp/ocr/how-to/read-micr-cheque/)也需要特定的 DPI 配置,以准确捕捉专门的 MICR 字体字符。 对于将 OCR 集成到网络应用程序或云服务中的开发人员来说,了解 DPI 优化对于管理处理时间和服务器资源至关重要。 微调 DPI 设置的功能可让您根据具体的应用要求和基础设施限制优化精度和性能之间的平衡。

常见问题解答

什么是 DPI,为什么它对 OCR 精确度很重要?

DPI(每英寸点数)衡量图像质量,决定扫描文档的细节水平。对于 OCR 精确度而言,更高的 DPI 意味着更清晰的字符定义。IronOcr 可以处理分辨率低至 225 DPI 的图像,同时保持高精度,这要归功于其先进的图像预处理功能。

如何改进低分辨率图像的 OCR 结果?

在 IronOCR 的 OcrInput 类中设置 TargetDPI 属性,以提升低分辨率图像的分辨率。例如,将 TargetDPI 设置为 300 可以显著提高模糊或像素化文档的文本识别率,甚至是分辨率低至 100 DPI 的文档。

在 C# 中为 OCR 设置 DPI 的最快方法是什么?

您可以使用 IronOCR 在一行代码中配置 DPI:var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrInput { TargetDPI = 300 }.LoadImage("low-res.png")).这将自动提升图像的分辨率,以提高文字的清晰度和识别率。

OCR 能否有效处理分辨率较低的扫描文件?

是的,IronOCR 是专门为有效处理低分辨率扫描文档而设计的。它能在分辨率低至 225 DPI 的扫描文件上实现高准确度,并包含自动图像预处理功能,可检测和补偿各种质量问题。

实施 OCR DPI 设置的基本步骤是什么?

翻译过程包括五个步骤1) 下载 IronOCR 库;2) 实例化一个新的 OcrInput 对象;3) 将 TargetDPI 属性设置为所需值;4) 使用 LoadImage 方法加载图像;5) 使用 Read 方法提取文本。

为什么默认扫描设置经常导致 OCR 性能低下?

默认或快速扫描设置通常会生成低分辨率文件,以节省时间和存储空间。这就导致文本模糊或像素化,丢失了精细细节,使 OCR 引擎难以准确识别字符形状。IronOCR 的 TargetDPI 功能有助于克服这一限制。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 5,246,844 | 版本: 2025.12 刚刚发布