如何在 C# 中修复图像颜色以进行读取

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

修复图像颜色涉及多种技术,旨在提高图像的清晰度和质量。 IronOcr 提供二值化、灰度化、反转和颜色替换方法,使图像中的文本和内容更易读、更美观,这在使用 OCR(光学字符识别)从图像中提取文本时尤为重要。 也可以只读取选定的文本颜色。

快速入门:一次性隔离特定文本颜色

使用 IronOCR 的 SelectTextColor 方法,将 OCR 的重点放在您关心的文本颜色上——无需复杂的图像处理。 只需一行代码,即可加载图像、选择文本颜色和容差,并仅提取该文本,从而获得准确的 OCR 结果。

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

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

    PM > Install-Package IronOcr

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

    new IronTesseract().Read(new IronOcr.OcrImageInput("sample.jpg").SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60));
  3. 部署到您的生产环境中进行测试

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


二值化图像示例

这个过程将图像转换为双色格式,通常是黑白图像。它有助于将文本与背景分离并减少噪点,使文本更加清晰易读。

要对图像应用二值化效果,请使用Binarize方法。 由于 OCR 处理在对比度最高的图像(即白底黑字)上效果最佳,因此这种方法对于使背景与字符形成鲜明对比至关重要。

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-binarize-image.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply binarize affect
imageInput.Binarize();

// Export the modified image
imageInput.SaveAsImages("binarize.jpg");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Apply binarize affect
imageInput.Binarize()

' Export the modified image
imageInput.SaveAsImages("binarize.jpg")
$vbLabelText   $csharpLabel

为了方便起见,您可以使用SaveAsImages方法导出修改后的图像。 下面对比的是二值化前后的图像。

Sample image
Binarized image

灰度图像示例

将图像转换为各种灰度可以减少干扰,使读者更容易阅读。 当图像中的原始颜色造成视觉混乱时,这尤其有用。

要将灰度效果应用于图像,请使用ToGrayScale方法。 灰度处理过程包括对 R、G 和 B 值取平均值。

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-grayscale-image.cs
// Apply grayscale affect
imageInput.ToGrayScale();
' Apply grayscale affect
imageInput.ToGrayScale()
$vbLabelText   $csharpLabel
Sample image
Grayscaled image

反转图像示例

反转颜色可以增强对比度。例如,将黑底白字改为白底黑字可以提高可读性。

使用Invert方法反转图像颜色。 该方法可以选择性地接受一个布尔值,该值用于移除所有颜色通道并返回灰度图像。

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-invert-image.cs
// Apply invert affect
imageInput.Invert();
' Apply invert affect
imageInput.Invert()
$vbLabelText   $csharpLabel

下图展示了启用和禁用灰度选项后的反转方法。

反转 image
反转 and grayscaled image

替换颜色示例

这种技术允许您将图像中的特定颜色替换为其他颜色,这有助于突出或弱化某些元素。 它通常用于使文本更加突出或纠正有问题的颜色对比度。

要使用ReplaceColor方法,请指定要替换的当前颜色以及新颜色。 该方法的第三个参数,即容差值,也很重要。 对于模糊图像,需要更高的容忍度才能达到预期效果。

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-replace-color.cs
using IronOcr;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
IronSoftware.Drawing.Color currentColor = new IronSoftware.Drawing.Color("#DB645C");
IronSoftware.Drawing.Color newColor = IronSoftware.Drawing.Color.DarkCyan;

// Replace color
imageInput.ReplaceColor(currentColor, newColor, 80);

// Export the modified image
imageInput.SaveAsImages("replaceColor");
Imports IronOcr

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
Private currentColor As New IronSoftware.Drawing.Color("#DB645C")
Private newColor As IronSoftware.Drawing.Color = IronSoftware.Drawing.Color.DarkCyan

' Replace color
imageInput.ReplaceColor(currentColor, newColor, 80)

' Export the modified image
imageInput.SaveAsImages("replaceColor")
$vbLabelText   $csharpLabel
Sample image
Replaced color image

阅读特定文本颜色示例

此功能旨在仅读取指定颜色的文本。 使用SelectTextColor方法指定 IronOcr 要关注的颜色以及容差值。 容差值接受 0-255 的范围,表示颜色空间中每个 R、G 和 B 值对应的像素颜色与所选颜色之间允许的差异。

:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-select-text-color.cs
using IronOcr;
using System;

// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();

// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Text color to focus on
IronSoftware.Drawing.Color focusColor = new IronSoftware.Drawing.Color("#DB645C");

// Specify which text color to read
imageInput.SelectTextColor(focusColor, 60);

// Perform OCR
OcrResult ocrResult = ocrTesseract.Read(imageInput);

// Output result to console
Console.WriteLine(ocrResult.Text);
Imports IronOcr
Imports System

' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()

' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Text color to focus on
Private focusColor As New IronSoftware.Drawing.Color("#DB645C")

' Specify which text color to read
imageInput.SelectTextColor(focusColor, 60)

' Perform OCR
Dim ocrResult As OcrResult = ocrTesseract.Read(imageInput)

' Output result to console
Console.WriteLine(ocrResult.Text)
$vbLabelText   $csharpLabel

下面您将看到 OCR 结果,该结果旨在仅读取橙色文本。

OCR结果

可搜索的PDF

除了提供图像过滤选项外,IronOcr 还允许开发人员保存应用了或未应用这些过滤器的修改后的 PDF 文件。 SaveAsSearchablePdf方法的第二个参数是一个布尔标志,允许用户指定是否启用或禁用过滤器来保存 PDF。

:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs
using IronOcr;

var ocr = new IronTesseract();
var ocrInput = new OcrInput();

// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");

// Apply gray scale filter
ocrInput.ToGrayScale();
OcrResult result = ocr.Read(ocrInput);

// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputGrayscale.pdf", true);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

常见问题解答

如何在.NET C#中增强图像颜色以进行 OCR?

您可以使用 IronOCR 在.NET C#中增强图像颜色以进行 OCR。首先从 NuGet 下载 IronOCR 库,导入图像,并应用二值化、灰度和反转等颜色校正技术以提高文本可读性。

二值化在图像颜色校正中的作用是什么?

图像颜色校正中的二值化将图像转换为黑白格式,这有助于将文本与背景分离,减少噪音并使文本更加显著,从而使用 IronOCR 获得更好的 OCR 结果。

应用灰度效果对 OCR 过程有何好处?

通过将图像转换为灰色阴影,应用灰度效果可减少颜色干扰。这种简化使图像不那么混乱,并增强文本的可读性,这对于使用 IronOCR 的 OCR 过程非常有利。

反转图像颜色对文本提取有何优势?

反转图像颜色可以通过改变颜色方案来提高对比度,例如将黑色背景上的白色文本改为白色背景上的黑色文本。这样的对比度提高可以在使用 IronOCR 时增强文本提取的准确性。

如何更改图像中特定颜色以获得更好的 OCR 结果?

要更改图像中特定颜色以获得更好的 OCR 结果,请在 IronOCR 中使用 ReplaceColor 方法。指定原始颜色、新颜色,并调整容差值以微调颜色替换。

是否可以在 OCR 过程中集中于特定颜色的文本?

是的,可以在 OCR 过程中使用 IronOCR 的 SelectTextColor 方法集中于特定颜色的文本。这样可以指定目标文本颜色和容差值,提高彩色文本的 OCR 准确性。

如何在颜色校正后导出修改后的图像?

在对图像进行颜色校正后,可以使用 IronOCR 中的 SaveAsImages 方法导出它们。这允许您将修改后的图像保存以供进一步处理或查看。

调整图像对比度对于 OCR 准确性为何重要?

调整图像对比度对于 OCR 准确性至关重要,因为这有助于将文本与背景区分开,使字符更加突出并更容易被 OCR 算法提取,特别是在使用 IronOCR 时。

Curtis Chau
技术作家

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

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

审核者
Jeff Fritz
Jeffrey T. Fritz
首席项目经理 - .NET 社区团队
Jeff 也是 .NET 和 Visual Studio 团队的首席项目经理。他是 .NET Conf 虚拟会议系列的执行制片人,并主持“Fritz and Friends”直播节目,每周两次与观众一起谈论技术并编写代码。Jeff 撰写研讨会、演示文稿并计划包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP 峰会在内的最大型微软开发者活动的内容。
准备开始了吗?
Nuget 下载 5,167,857 | Version: 2025.11 刚刚发布