如何为阅读修正图像颜色

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

查克尼特·宾

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

开始使用IronOCR

立即在您的项目中开始使用IronOCR,并享受免费试用。

第一步:
green 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");
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")
VB   C#

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

图片样本
二值化图像

灰度图像示例

将图像转换为不同深浅的灰色可以使其不那么分散注意力,更便于阅读。 这在原始图像的颜色导致视觉混乱时尤其有帮助。

要将灰度效果应用到图像上,请使用 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()
VB   C#
图片样本
灰度图像

反相图像示例

颜色反转可以增强对比度。例如,将白色文字与黑色背景转换成黑色文字与白色背景可以提高可读性。

使用 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()
VB   C#

下面的图片显示了使用和不使用灰度选项时的反转方法。

倒置图像
反转和灰度图像

替换颜色示例

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

要使用 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")
VB   C#
图片样本
替换彩色图像

读取特定文本颜色示例

此功能旨在仅读取指定的文本颜色。 使用 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)
VB   C#

下面是 OCR 结果,只读橙色文本。

OCR 结果
Chaknith related to 读取特定文本颜色示例

查克尼特·宾

软件工程师

Chaknith 是开发者中的福尔摩斯。他第一次意识到自己可能在软件工程方面有前途,是在他出于乐趣做代码挑战的时候。他的重点是 IronXL 和 IronBarcode,但他为能帮助客户解决每一款产品的问题而感到自豪。Chaknith 利用他从直接与客户交谈中获得的知识,帮助进一步改进产品。他的轶事反馈不仅仅局限于 Jira 票据,还支持产品开发、文档编写和市场营销,从而提升客户的整体体验。当他不在办公室时,他可能会在学习机器学习、编程或徒步旅行。