如何修正圖片顏色以便閱讀

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 工單,並支持產品開發、文件撰寫和行銷,以提升客戶的整體體驗。不在公司時,他通常在學習機器學習、寫程式和徒步旅行。