如何在 C# | IronOCR 中修復圖片顏色以供閱讀

如何修正圖片顏色以利 C# 閱讀。

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

在 C# 中使用 IronOCR 的二值化、灰階、反轉和色彩置換方法修復影像色彩,以改善文字的可讀性和 OCR 的準確度。 閱讀特定文字顏色,以進行目標擷取。

快速入門:隔離特定文字顏色

使用 IronOCR 的 SelectTextColor 方法將 OCR 集中在特定的文字顏色上 - 不需要複雜的影像處理。 載入影像、選擇文字顏色和公差,並僅抽取該文字以獲得精確的 OCR 結果。

```cs:title=Fix Text Color Fast with IronOCR new IronTesseract().Read(new IronOcr.OcrImageInput("sample.jpg").SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60));


<div class="hsg-featured-snippet">
    <h3>最小工作流程(5 個步驟)</h3>
    <ol>
        <li><a class="js-modal-open" data-modal-id="trial-license-after-download" href="https://nuget.org/packages/IronOcr/">下載一個用於校正影像顏色的 C# 庫</a></li>
        <li>導入 PDF 文檔和圖像以進行閱讀</li>
        <li>套用色彩效果:二進位、灰階、反轉和色彩置換</li>
        <li>導出校正後的影像以供查看</li>
        <li>使用 <code>SelectTextColor</code> 讀取特定的文字顏色</li>
    </ol>
</div>

<br class="clear">

<h2>如何將影像二值化以改善 OCR?

二值化可將影像轉換為雙色格式,通常是黑白兩色。這樣可將文字與背景分開,並減少雜訊,使文字更清晰易讀。

<h3>為什麼二進位可以提高 OCR 精確度?

使用 `Binarize` 方法套用二值化。 OCR 對白底黑字的高對比影像效果最佳。 此方法可清楚區分背景與人物。

二值化對於光線不均勻或有背景雜訊的掃描文件非常有效。該演算法會分析影像並決定最佳臨界值,以區分前景文字與背景。 如需進階的預處理技巧,請參閱 [OCR 影像最佳化濾鏡指南](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/)。

<h3>什麼是二進位的程式碼實作?

```csharp
:path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-binarize-image.cs

針對批次處理,將二值化與其他篩選器結合。 使用濾鏡精靈來決定最適合您影像的濾鏡組合。

如何匯出和比較結果? 使用 `SaveAsImages` 方法匯出修改過的影像。 比較以下二值化之前和之後的影像。
Sample image with red and black text on blue-gray background showing OCR challenges before binarization
Binarized version showing clear black text on pure white background for optimal OCR processing

如何將圖片轉換為灰階以便更好地閱讀? 將圖像轉換為灰階,可減少視覺雜訊並提高可讀性。 當原來的顏色分散了對內容的注意力時,這將有所幫助。

何時應該使用灰階,而非其他方法? 使用 `ToGrayScale` 方法套用灰階。 過程中平均 R、G 和 B 值。 灰階能很好地處理會干擾文字辨識的彩色背景或水印。 與二值化不同,灰階能保留影像中細微變化的細節。 適用於內嵌文字或複雜佈局的照片。 有關低品質掃描,請參閱 [修復低品質掃描及影像](https://ironsoftware.com/csharp/ocr/examples/ocr-low-quality-scans-tesseract/)。

什麼是灰階轉換的簡單程式碼? ```csharp :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-grayscale-image.cs ``` 針對不同的影像品質,將灰階與其他預處理步驟結合。 [OcrInput Class](https://ironsoftware.com/csharp/ocr/examples/csharp-ocr-input-for-iron-tesseract/) 文件解釋了多個篩選器的鏈結。

灰階與原版相比如何?
Sample text with red headers and black body text showing multiple colors before grayscale conversion
Grayscale document with clear text about tech executives, demonstrating improved readability after conversion

何時應該反轉圖片顏色? 反轉顏色可增強對比度。將黑色背景上的白色文字轉換為白色背景上的黑色文字可提高可讀性。

如何實作色彩反轉? 使用 `Invert` 方法反轉顏色。 傳入一個布林值以移除彩色通道並返回灰階。 顏色反轉處理負片圖像或深色主題的螢幕截圖。 現代應用程式使用黑暗模式介面,挑戰傳統的 OCR。 反轉這些圖片可確保最佳的辨識度。 有關各種影像類型,請參閱 [Fast OCR Configuration 指南](https://ironsoftware.com/csharp/ocr/examples/tune-tesseract-for-speed-in-dotnet/)。 ```csharp :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-invert-image.cs ``` 針對混合文件類型的批次處理,實施自動深色背景偵測。 [IronOCR中的電腦視覺](https://ironsoftware.com/csharp/ocr/how-to/computer-vision/)功能可辨識何時需要反轉。

反轉選項之間有何差異? 比較 `Invert` 方法有灰階與無灰階:
Color-inverted document maintaining original color channels with reversed values
Business text with inverted colors showing white text on dark background demonstrating color inversion effect

如何取代圖片中的特定顏色? 替換特定顏色以突出或淡化元素。 利用這一點來改善文字的突出度或糾正有問題的對比。

為什麼公差在換色中很重要? `ReplaceColor` 方法需要當前顏色、新顏色和公差值。 較高的容忍度能更好地處理模糊的影像。 公差決定像素與目標顏色的吻合程度。 低值 (0-50) 適合統一顏色。 較高的值 (100-200) 可處理反鋸齒文字或壓縮假象。 這對於掃描文件有幫助,因為掃描文件中的墨水滲出或紙張紋理會造成變化。

如何實現顏色置換? ```csharp :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-replace-color.cs ```

我該如何處理進階換色情境? 針對複雜的情況,鎖定多個替代詞: ```cs /* :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-multiple-replacements.cs */ // Replace multiple colors in sequence using var imageInput = new OcrImageInput("multi-color-document.jpg"); // Replace red text with black imageInput.ReplaceColor(IronSoftware.Drawing.Color.Red, IronSoftware.Drawing.Color.Black, 70); // Replace blue headers with dark gray imageInput.ReplaceColor(IronSoftware.Drawing.Color.Blue, IronSoftware.Drawing.Color.DarkGray, 60); // Replace light yellow background with white imageInput.ReplaceColor(new IronSoftware.Drawing.Color("#FFFACD"), IronSoftware.Drawing.Color.White, 40); // Perform OCR on the cleaned image var result = ocrTesseract.Read(imageInput); ``` 若要進行複雜的色彩替換,請參閱 [影像校正濾鏡](https://ironsoftware.com/csharp/ocr/how-to/image-quality-correction/),以瞭解其他的預處理技巧。

顏色置換的視覺效果為何?
Text sample with orange-red colored names and content on blue background showing original colors before replacement
Document after color replacement showing dark cyan headers replacing original orange-red text

如何只閱讀特定文字顏色? 使用 `SelectTextColor` 方法讀取特定的文字顏色。 指定目標顏色和公差 (0-255)。 公差表示像素與選定顏色之間在 R、G 和 B 值上的允許差異。

顏色容忍度如何影響結果? ```csharp :path=/static-assets/ocr/content-code-examples/how-to/image-color-correction-select-text-color.cs ``` 對於有顏色區段的表單、擷取高亮文字或閱讀特定警告訊息,請使用選擇性顏色閱讀。 有關結構化資料擷取,請參閱 [OcrResult Class](https://ironsoftware.com/csharp/ocr/examples/results-objects/) 進階處理。

我可以從顏色選擇中期待哪些輸出? OCR 結果只能讀取橙色的文字:
調試控制台顯示 OCR 擷取的橘色文字:MASAYOSHI SON 和 YASUMITSU SHIGETA from business document

如何儲存已套用篩選器的修改後 PDF? IronOCR 可儲存修改過的 PDF 檔案,無論是否有過濾器。 `SaveAsSearchablePdf` 方法的第二個參數指定是否要套用篩選器來儲存。 ### What is the Implementation for Searchable PDFs? ```cs :path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-searchable-pdf.cs ```

何時應該對儲存的 PDF 應用篩選器? 在建立更乾淨、可讀性更高的文件時應用篩選條件。 這有助於存檔目的或跨不同裝置分享文件。 請參閱 [Create Searchable PDFs by OCR](https://ironsoftware.com/csharp/ocr/examples/tesseract-create-searchable-pdf/) 以取得更多資訊。 對於包含表格的複雜文件,請探索 [ 讀取文件中的表格](https://ironsoftware.com/csharp/ocr/examples/read-table-in-document/) 以進行專門的擷取。 如需大量處理,請參閱 [Multithreaded Tesseract OCR](https://ironsoftware.com/csharp/ocr/examples/csharp-tesseract-multithreading-for-speed/) 以優化篩選器在多個文件中的應用。

常見問題解答

如何修正影響 OCR 準確性的不良影像顏色?

IronOCR 提供多種色彩校正方法,包括二值化、灰階轉換、反轉和色彩置換。這些濾鏡可增強文字與背景之間的對比,有助於提高文字的可讀性,讓 OCR 引擎更容易從色彩品質不佳的影像中準確提取文字。

什麼是二進位,什麼時候應該將其用於 OCR?

Binarization 使用 IronOCR 的 Binarize 方法將影像轉換為雙色格式(通常是黑白)。它對於光線不均勻或背景雜訊的掃描文件特別有效,因為它能透過分析影像並決定最佳的分離臨界值,在文字和背景之間建立清晰的區別。

如何從影像中只擷取特定顏色的文字?

IronOCR 的 SelectTextColor 方法可讓您集中對特定文字顏色進行 OCR,而無需複雜的影像處理。只需指定目標顏色和容差等級 - 例如,SelectTextColor(new IronSoftware.Drawing.Color("#DB645C"), 60) - 即可僅擷取該顏色範圍內的文字。

何時應該將圖像轉換為灰階,而不是使用二值化?

在處理會干擾文字辨識的彩色背景或水印時,請使用 IronOCR 的 ToGrayScale 方法。與二值化不同,灰階能夠保留影像中細微變化的細節,因此當您需要維持影像品質,同時減少視覺雜訊時,灰階是最理想的選擇。

我可以匯出修正後的影像來檢視色彩濾鏡的結果嗎?

是的,IronOCR 提供 SaveAsImages 方法,可在套用色彩修正後匯出修改後的影像。這可讓您比較之前和之後的結果,幫助您確定哪種色彩修正方法最適合您的特定影像。

如何為我的影像決定最佳的色彩校正濾鏡?

IronOCR 包含濾鏡精靈工具,可協助您決定影像的最佳濾鏡組合。對於批次處理,您可以將二值化等多種篩選器與其他預處理技術結合,以達到適合您的文件類型的最佳 OCR 結果。

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。

經審核
傑夫·弗里茨
傑弗裡·T·弗里茨
.NET 社群團隊首席專案經理
Jeff 同時也是 .NET 和 Visual Studio 團隊的首席專案經理。他是 .NET Conf 虛擬會議系列的執行製片人,並主持每週兩次的開發者直播節目“Fritz and Friends”,在節目中他會與觀眾一起探討技術並編寫程式碼。 Jeff 也為包括 Microsoft Build、Microsoft Ignite、.NET Conf 和 Microsoft MVP Summit 在內的微軟大型開發者活動撰寫研討會、簡報並策劃內容。
準備好開始了嗎?
Nuget 下載 5,299,091 | 版本: 2025.12 剛剛發布