C# 指南:使用 IronOCR 影像濾鏡提升 OCR 辨識效果
IronOCR 提供讀取影像所需的工具,這些影像可能需要以濾鏡的形式進行預處理。 您可以從各種各樣的濾鏡中進行選擇,這些濾鏡可以處理您的影像,使其可以進行後續處理。
快速入門:應用濾鏡清理 OCR 影像
只需一個簡單的呼叫鏈,即可套用DeNoise 、 Binarize和Deskew過濾器來提高 OCR 先前的掃描清晰度。 本範例展示了使用 IronOCR 的內建濾鏡增強影像是多麼容易,並且可以立即上手。
立即開始使用 NuGet 建立 PDF 檔案:
使用 NuGet 套件管理器安裝 IronOCR
複製並運行這段程式碼。
using var input = new IronOcr.OcrInput("scan.jpg"); input.DeNoise(true).Binarize().Deskew(45); var result = new IronOcr.IronTesseract().Read(input);部署到您的生產環境進行測試
OCR影像濾鏡列表
以下影像濾鏡可顯著提升性能:
Filters to change the Image OrientationRotate- 將影像順時針旋轉指定角度。逆時針旋轉請使用負數。Deskew- 將影像旋轉成正確的方向和正交角度。 這對於 OCR 非常有用,因為 Tesseract 對傾斜掃描的容忍度可以低至 5 度。Scale- 按比例縮放 OCR 輸入頁。Filters to manipulate Image ColorsBinarize- 此影像濾鏡將每個像素變為黑色或白色,沒有中間色。 這可以提高文字與背景對比度非常低時的 OCR 效能。ToGrayScale- 此影像濾鏡將每個像素轉換為灰階。 不太可能提高OCR識別準確率,但可能會提高速度。Invert- 反轉所有顏色。 例如,白色變成黑色,反之亦然。ReplaceColor- 將影像中的一種顏色替換為在一定閾值範圍內的另一種顏色。
Filters to improve Contrast in an ImageContrast- 自動增加對比。 此濾鏡通常可以提高低對比度掃描影像的 OCR 速度和準確性。Dilate- 高階形態學。 膨脹操作是指在影像中物件的邊界上新增像素。 與侵蝕相反。Erode- 高階形態學。 腐蝕會從物體邊界移除像素。 與擴張相反。
Filters to reduce Image NoiseSharpen- 銳利化模糊的 OCR 文檔,並將 alpha 通道展平為白色。DeNoise- 去除數位雜訊。此濾波器僅套用於預期會出現雜訊的場景。EnhanceResolution- 提高低品質影像的解析度。 這個過濾器並不經常需要,因為OcrInput.MinimumDPI和OcrInput.TargetDPI會自動擷取並解決低解析度輸入。
過濾器範例及用法
下面的範例將示範如何在程式碼中套用篩選器。
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-1.csusing IronOcr;
using System;
var ocr = new IronTesseract();
using var input = new OcrInput();
input.LoadImage("my_image.png");
input.Deskew();
var result = ocr.Read(input);
Console.WriteLine(result.Text);調試過濾器/過濾器正在執行什麼操作?
如果您在程式中讀取影像或條碼時遇到困難,可以儲存篩選結果的影像。 這樣,你就可以進行調試,並準確地看到每個濾鏡的作用以及它是如何處理圖像的。
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-2.csusing IronOcr;
using System;
var file = "skewed_image.tiff";
var ocr = new IronTesseract();
using var input = new OcrInput();
var pageindices = new int[] { 1, 2 };
input.LoadImageFrames(file, pageindices);
// Here we apply the filter: Deskew
input.Deskew();
// Save the input with filter(s) applied
input.SaveAsImages("my_deskewed");
// We read, then print the text to the console
var result = ocr.Read(input);
Console.WriteLine(result.Text);過濾器使用案例
旋轉
篩選說明
旋轉濾鏡用於手動設定影像的已知旋轉角度,使其盡可能接近直線。 IronOCR 具有運行Deskew()功能,但是,其容差範圍相當窄,最適合用於幾乎完全筆直的影像(偏差在 15 度左右)。 對於偏離 90 度或上下顛倒的輸入影像,我們應該呼叫Rotate() 。
用例程式碼範例
這是一個呼叫Rotate()函數來校正倒置影像的範例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-3.csusing IronOcr;
using System;
var image = "screenshot.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Rotate 180 degrees because image is upside-down
input.Rotate(180);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);在輸入Before旋轉(180)`` | 輸入After旋轉(180)`` |
|---|---|
![]() | ![]() |
桌子
篩選說明
使用霍夫變換來嘗試在一定容差範圍內矯正影像。 對於不完全水平的影像來說,這一點很重要,因為傾斜的文件可能會導致誤讀。
[{i:(此方法傳回一個布林值,如果應用了過濾器,則傳回 true;如果由於無法偵測影像方向而未能套用,則傳回 false。 如果頁面沒有內容來定義方向,此操作將會失敗。
用例程式碼範例
這是一個呼叫Deskew()函數來校正傾斜影像的範例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-4.csusing IronOcr;
using System;
var image = @"paragraph_skewed.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply deskew with 15 degree snap
bool didDeskew = input.Deskew(15);
if (didDeskew)
{
// Read image into variable: result
var result = ocr.Read(input);
Console.WriteLine(result.Text);
}
else
{
Console.WriteLine("Deskew not applied because Image Orientation could not be determined.");
}規模
篩選說明
縮放是一個有用的影像處理濾鏡,它可以利用影像已有的像素來調整影像大小。 當條碼無法掃描時(因為圖像只有幾十個像素寬,每個條形佔一個像素),或者文字太小而沒有抗鋸齒,可以使用這種方法。
對於1000px x 1000px的條碼尺寸來說,存在一個最佳尺寸範圍,在這個範圍內條碼可以很好地被讀取。如果您的條碼無法被找到,則應考慮此尺寸範圍。
用例程式碼範例
這是一個呼叫Scale()函數來增加條碼中條形之間的間距以便掃描的範例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-5.csusing IronOcr;
using System;
var image = @"small_barcode.png";
var ocr = new IronTesseract();
// Optional: This example uses a barcode
ocr.Configuration.ReadBarCodes = true;
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply scale
input.Scale(400); // 400% is 4 times larger
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);二值化
篩選說明
二值化濾波器根據自適應演算法將影像中的所有像素分類為黑色或白色。 這會移除所有顏色,並將背景變成純白色,所有被識別為文字的部分都會變成全黑色,以便於閱讀。
用例程式碼範例
這是一個呼叫Binarize()函數來對齊彩色文字並去除背景顏色和雜訊的範例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-6.csusing IronOcr;
using System;
var image = @"no-binarize.jpg";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Binarize
input.Binarize();
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);在二值化Before ()`` | 二進位化After ()`` |
|---|---|
![]() | ![]() |
倒置
篩選說明
IronOCR 辨識black text on a white background影像效果最佳。 Invert濾鏡透過反轉影像上的所有顏色來實現這一效果。
用例程式碼範例
這是一個呼叫Invert()函數將黑底白字變成白底黑字的範例:
:path=/static-assets/ocr/content-code-examples/tutorials/c-sharp-ocr-image-filters-7.csusing IronOcr;
using System;
var image = @"before-invert.png";
var ocr = new IronTesseract();
using var input = new OcrInput();
// Load at least one image
input.LoadImage(image);
// Apply Invert
input.Invert(true);
// Read image into variable: result
var result = ocr.Read(input);
// Example print to console
Console.WriteLine(result.Text);Before | After |
|---|---|
![]() | ![]() |
常見問題解答
如何在C#中使用影像濾波器來提高OCR辨識準確率?
IronOCR中的影像濾鏡可對影像進行預處理,以提升影像質量,從而提高OCR辨識準確率。例如,二值化和對比度濾鏡透過調整顏色和對比度來提高影像的可讀性,而旋轉和傾斜校正濾鏡則可以校正影像方向。
有哪些濾鏡可用來校正影像方向?
IronOCR 提供旋轉和校正傾斜濾鏡來修正影像方向問題。旋轉功能可手動調整影像角度,而校正傾斜功能則會自動矯正輕微傾斜的影像。
二值化濾波器如何影響影像預處理?
IronOCR 中的二值化濾鏡將影像像素轉換為黑白,從而去除背景色彩並增強文字可見性,尤其是在低對比度條件下提高 OCR 準確性。
何時適合使用降噪濾波器?
當影像中存在數位雜訊時,應使用銳利化和去雜訊等降噪濾鏡。這些濾鏡可以淨化影像,使文字更清晰,從而在 IronOCR 中獲得更好的 OCR 辨識效果。
提高影像解析度會影響OCR效能嗎?
是的,使用 EnhanceResolution 濾鏡可以透過提高低品質影像的解析度來提升 OCR 性能。雖然 IronOCR 的預設 MinimumDPI 和 TargetDPI 設定通常足夠,但如果需要,則該濾鏡可以提供額外的解析度增強。
顏色處理濾鏡在OCR中扮演什麼角色?
IronOCR 中的顏色處理濾鏡,例如“反轉”、“轉灰度”和“二值化”,可以調整圖像顏色,從而提高文字的可讀性。 「反轉」濾鏡會改變色彩方案,「轉灰度」濾鏡會將影像轉換為灰階影像,「二值化」濾鏡會將影像簡化為黑白影像。
對比濾鏡和銳利化濾鏡有什麼差別?
IronOCR 中的對比度濾鏡可以增加明暗區域之間的差異,提高文字清晰度;而銳利化濾鏡可以增強邊緣,使文字更加清晰,兩者都有助於提高 OCR 識別率。
如何在 IronOCR 中保存和調試已過濾的圖像?
若要在 IronOCR 中儲存和調試經濾鏡處理的影像,請在套用濾鏡後使用SaveAsImages功能。這有助於可視化濾鏡效果,並確保預處理步驟提高了 OCR 的影像品質。
IronOCR 中有哪些高階形態學濾鏡?
IronOCR 提供諸如膨脹和腐蝕等高級形態學濾鏡。膨脹功能會在物體邊界添加像素以增強特徵,而腐蝕功能則會移除像素,這兩種功能都用於清晰化影像細節,從而提高 OCR 的準確率。













