用於提升 OCR 讀取精準度的 C# 影像校正濾鏡
IronOCR 提供五種關鍵的影像校正濾鏡(dilate 以及 erode),這些濾鏡會對影像進行預處理,透過在文字擷取前提升文字清晰度並降低雜訊,從而顯著提高 OCR 準確度。
快速入門:套用"Sharpen"濾鏡以獲得清晰文字
using IronOCR 的 OcrImageInput,僅需一行程式碼即可銳化模糊的影像。 此範例展示如何透過影像增強技術來提升 OCR 辨識精準度。
簡化工作流程(5 個步驟)
- 下載一個使用濾鏡進行影像修正的 C# 函式庫
- 匯入 PDF 文件及圖片以供閱讀
- 套用所需的濾鏡,例如銳化、提升解析度、去噪、膨脹與蝕蝕
- 匯出修正後的圖片以供檢視
- 請使用
Read方法進行 OCR 處理
如何套用 Sharpen 濾鏡?
此濾鏡可增強影像邊緣的對比度,使文字邊界更加清晰。 這能提升文字清晰度,使字元辨識更為精準。
為何銳化能提升 OCR 準確度?
"銳化"濾鏡透過增強邊緣對比度,突顯文字與背景之間的界線。字元辨識演算法需要清晰、分明的字母輪廓才能正常運作。 邊緣模糊的文字(常見於掃描文件或低畫質照片)會導致 OCR 引擎錯誤識別字元邊界。 若想進一步了解 OCR 的最佳影像處理方法,請參閱我們關於 OCR 影像優化濾鏡的完整指南。
若要套用 sharpen 篩選器,請呼叫 OcrImageInput 物件的 Sharpen 方法:
:path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-sharpen-filter.cs
using IronOcr;
// Instantiate IronTesseract
IronTesseract ocrTesseract = new IronTesseract();
// Add image
using var imageInput = new OcrImageInput("sample.jpg");
// Apply sharpen filter
imageInput.Sharpen();
// Export filtered image
imageInput.SaveAsImages("sharpen.jpg");
Imports IronOcr
' Instantiate IronTesseract
Private ocrTesseract As New IronTesseract()
' Add image
Private imageInput = New OcrImageInput("sample.jpg")
' Apply sharpen filter
imageInput.Sharpen()
' Export filtered image
imageInput.SaveAsImages("sharpen.jpg")
何時該使用 Sharpen 濾鏡?
針對略微失焦的影像、文字邊緣模糊的掃描文件,或光線不足下拍攝的照片,請使用銳化功能。 請避免對明文進行過度優化,此舉會引入人工痕跡並降低準確性。 若掃描檔極度模糊,請將銳化功能與其他濾鏡結合使用,或參閱我們的《修復低品質掃描檔與圖片》指南。
using SaveAsImages 方法匯出已過濾的圖片。 以下為翻譯前後的對照。
前
之後
如何提升解析度以獲得更好的 OCR 效果?
此濾鏡可提高像素密度,從而提升銳利度與清晰度。 它有助於 OCR 引擎更精確地讀取低解析度圖片中的文字。
進行 OCR 時應設定多少 DPI 才合適?
OCR 引擎在 300 DPI(每英吋點數)下表現最佳。 較低的分辨率會導致字元辨識錯誤; 較高的解析度會拖慢處理速度,卻無法提升準確度。 IronOCR 的增強濾鏡能智能地將影像放大至最佳 DPI 水平。 如需詳細指引,請參閱我們的 DPI 設定指南。
呼叫 EnhanceResolution 方法以套用此篩選器。 預設解析度為 225 DPI:
using IronOcr;
// Create OCR input
var imageInput = new OcrImageInput("low-res-scan.jpg");
// Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution();
// Or specify a custom DPI
imageInput.EnhanceResolution(300);
// Combine with OCR reading
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
Console.WriteLine($"Extracted text: {result.Text}");
using IronOcr;
// Create OCR input
var imageInput = new OcrImageInput("low-res-scan.jpg");
// Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution();
// Or specify a custom DPI
imageInput.EnhanceResolution(300);
// Combine with OCR reading
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
Console.WriteLine($"Extracted text: {result.Text}");
Imports IronOcr
' Create OCR input
Dim imageInput As New OcrImageInput("low-res-scan.jpg")
' Apply enhance resolution filter with default 225 DPI
imageInput.EnhanceResolution()
' Or specify a custom DPI
imageInput.EnhanceResolution(300)
' Combine with OCR reading
Dim ocr As New IronTesseract()
Dim result = ocr.Read(imageInput)
Console.WriteLine($"Extracted text: {result.Text}")
何時最需要提升解析度?
解析度提升對於以下方面至關重要:
- 螢幕擷圖以螢幕解析度 (72-96 DPI) 擷取
- 從網路上下載的網頁圖片
- 低解析度掃描的歷史文件
- 傳真傳輸的解析度本質上較低
OCR Tesseract 影像 DPI 範例說明了 DPI 如何影響各類文件類型的辨識準確度。
前
之後
如何從圖片中去除雜訊?
去噪濾鏡可減少影像中的不必要雜訊。 降噪功能可隔離文字與背景干擾,產生更清晰且更精準的 OCR 結果。
2x2 形態學與 3x3 形態學有何區別?
形態學大小決定去噪強度。 採用 2x2 形態學濾波器進行溫和的雜訊抑制,在保留細微文字的同時,將偽影降至最低。 3x3 形態學模型能針對嚴重損毀的文件提供強效的雜訊去除功能,但可能會影響非常小的文字。
若要套用降噪濾鏡,請使用 DeNoise 方法。 預設形態為 2x2。若要使用 3x3 形態,請傳入 'true':
using IronOcr;
// Load noisy document
var imageInput = new OcrImageInput("noisy-scan.pdf");
// Apply denoise filter with default 2x2 morphology
imageInput.DeNoise();
// Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(true);
// Combine with other filters for severely degraded images
imageInput.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Process with OCR
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
// Check confidence levels
foreach (var page in result.Pages)
{
Console.WriteLine($"Page confidence: {page.Co/nfidence}%");
}
using IronOcr;
// Load noisy document
var imageInput = new OcrImageInput("noisy-scan.pdf");
// Apply denoise filter with default 2x2 morphology
imageInput.DeNoise();
// Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(true);
// Combine with other filters for severely degraded images
imageInput.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Process with OCR
var ocr = new IronTesseract();
var result = ocr.Read(imageInput);
// Check confidence levels
foreach (var page in result.Pages)
{
Console.WriteLine($"Page confidence: {page.Co/nfidence}%");
}
Imports IronOcr
' Load noisy document
Dim imageInput As New OcrImageInput("noisy-scan.pdf")
' Apply denoise filter with default 2x2 morphology
imageInput.DeNoise()
' Apply stronger denoising with 3x3 morphology
imageInput.DeNoise(True)
' Combine with other filters for severely degraded images
imageInput.DeNoise() _
.Sharpen() _
.EnhanceResolution(300)
' Process with OCR
Dim ocr As New IronTesseract()
Dim result = ocr.Read(imageInput)
' Check confidence levels
For Each page In result.Pages
Console.WriteLine($"Page confidence: {page.Confidence}%")
Next
我該如何判斷我的圖片是否需要去噪?
請留意以下雜訊指標:
- 背景上出現隨機斑點或小點
- 因掃描品質不佳而產生的鹽與胡椒雜訊
- 高 ISO 攝影產生的顆粒感
- 背景紋理採用再生紙素材
若需自動雜訊偵測功能,請探索我們的"濾波精靈"。
前
之後
如何使用 Dilate 濾鏡?
擴張演算法可擴展影像中的亮部區域。 它會加粗文字,使其更為醒目,並讓 OCR 軟體更容易辨識。
何時應對文字進行擴展?
擴張功能最適用於處理以下情況中出現的細小或斷裂文字:
- 墨跡不均勻的舊式打字機文件
- 褪色的收據與熱感紙列印文件
- 採用細線字體的文件
- 圖像格式中過度壓縮的文字
擴張可填補字元內的小空隙,並強化筆畫間的薄弱連結。 這可防止 OCR 引擎將損壞的字元誤判為多個符號。
若要套用擴張濾鏡,請使用 Dilate 方法。 預設形態為 2x2; 對於 3x3,請傳入 'true':
using IronOcr;
// Create OCR engine
var ocrTesseract = new IronTesseract();
// Apply dilate filter
var imageInput = new OcrImageInput("thin-text.jpg");
imageInput.Dilate();
// For more aggressive dilation
imageInput.Dilate(true);
// Practical example for faded receipt processing
var receiptInput = new OcrImageInput("faded-receipt.jpg");
receiptInput.Dilate()
.DeNoise()
.EnhanceResolution(300);
// Configure for better receipt reading
ocrTesseract.Co/nfiguration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;
ocrTesseract.Co/nfiguration.ReadBarCodes = true;
// Perform OCR
var result = ocrTesseract.Read(receiptInput);
using IronOcr;
// Create OCR engine
var ocrTesseract = new IronTesseract();
// Apply dilate filter
var imageInput = new OcrImageInput("thin-text.jpg");
imageInput.Dilate();
// For more aggressive dilation
imageInput.Dilate(true);
// Practical example for faded receipt processing
var receiptInput = new OcrImageInput("faded-receipt.jpg");
receiptInput.Dilate()
.DeNoise()
.EnhanceResolution(300);
// Configure for better receipt reading
ocrTesseract.Co/nfiguration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock;
ocrTesseract.Co/nfiguration.ReadBarCodes = true;
// Perform OCR
var result = ocrTesseract.Read(receiptInput);
Imports IronOcr
' Create OCR engine
Dim ocrTesseract As New IronTesseract()
' Apply dilate filter
Dim imageInput As New OcrImageInput("thin-text.jpg")
imageInput.Dilate()
' For more aggressive dilation
imageInput.Dilate(True)
' Practical example for faded receipt processing
Dim receiptInput As New OcrImageInput("faded-receipt.jpg")
receiptInput.Dilate() _
.DeNoise() _
.EnhanceResolution(300)
' Configure for better receipt reading
ocrTesseract.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock
ocrTesseract.Configuration.ReadBarCodes = True
' Perform OCR
Dim result = ocrTesseract.Read(receiptInput)
過度擴張的常見問題有哪些?
過度擴展可能導致:
- 字元溢出(相鄰字母重疊)
- 內部細節遺漏(例如"e"或"8"字元缺失)
- 粗體文字的準確度較低
請監控翻譯結果並據此調整。 對於文字粗細不一的文件,請有選擇性地使用我們的影像品質修正濾鏡。
前
之後
如何套用 Erode 濾鏡?
侵蝕處理可縮小影像中的亮部區域,藉此精修過粗或變形的字元,並改善字元間的分離度。
為何"侵蝕"能幫助處理粗體文字?
侵蝕效果會使文字筆畫變細,並將相鄰的字元分開。 此過濾器在以下方面表現出色:
- 墨水過多的列印文件
- 字元溢出的影印本
- 顯示為合併的粗體文字
- 傳真傳輸品質不佳
細緻的字形修整能恢復字元間距並提升單一字母的辨識度,從而避免整WORD被誤讀。
請使用 Erode 方法套用此篩選器。 預設形態為 2x2; 對於 3x3,請傳入 'true':
using IronOcr;
// Create OCR instance
var ocrTesseract = new IronTesseract();
// Load image with thick text
var imageInput = new OcrImageInput("thick-text.jpg");
// Apply erode filter
imageInput.Erode();
// Stronger erosion for heavily bleeding text
imageInput.Erode(true);
// Example: Processing a poor-quality photocopy
var photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");
// Apply erosion followed by sharpening for best results
photocopyInput.Erode()
.Sharpen()
.EnhanceResolution(300);
// Configure OCR for better accuracy
ocrTesseract.Co/nfiguration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";
ocrTesseract.Co/nfiguration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";
var ocrResult = ocrTesseract.Read(photocopyInput);
// Extract with confidence check
var highConfidenceText = ocrResult.Blocks
.Where(b => b.Co/nfidence > 90)
.Select(b => b.Text);
using IronOcr;
// Create OCR instance
var ocrTesseract = new IronTesseract();
// Load image with thick text
var imageInput = new OcrImageInput("thick-text.jpg");
// Apply erode filter
imageInput.Erode();
// Stronger erosion for heavily bleeding text
imageInput.Erode(true);
// Example: Processing a poor-quality photocopy
var photocopyInput = new OcrImageInput("thick-text-photocopy.pdf");
// Apply erosion followed by sharpening for best results
photocopyInput.Erode()
.Sharpen()
.EnhanceResolution(300);
// Configure OCR for better accuracy
ocrTesseract.Co/nfiguration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./";
ocrTesseract.Co/nfiguration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 ";
var ocrResult = ocrTesseract.Read(photocopyInput);
// Extract with confidence check
var highConfidenceText = ocrResult.Blocks
.Where(b => b.Co/nfidence > 90)
.Select(b => b.Text);
Imports IronOcr
' Create OCR instance
Dim ocrTesseract As New IronTesseract()
' Load image with thick text
Dim imageInput As New OcrImageInput("thick-text.jpg")
' Apply erode filter
imageInput.Erode()
' Stronger erosion for heavily bleeding text
imageInput.Erode(True)
' Example: Processing a poor-quality photocopy
Dim photocopyInput As New OcrImageInput("thick-text-photocopy.pdf")
' Apply erosion followed by sharpening for best results
photocopyInput.Erode() _
.Sharpen() _
.EnhanceResolution(300)
' Configure OCR for better accuracy
ocrTesseract.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\:"";<>?,./"
ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 "
Dim ocrResult = ocrTesseract.Read(photocopyInput)
' Extract with confidence check
Dim highConfidenceText = ocrResult.Blocks _
.Where(Function(b) b.Confidence > 90) _
.Select(Function(b) b.Text)
如何在保持技術精準度與提升文本可讀性之間取得平衡?
要找到合適的侵蝕程度,需要仔細測試:
- 從預設的 2x2 形態學開始
- 請使用具代表性的文件範例進行測試
- 確認標點符號仍清晰可見
- 確保細體字型不會出現斷字
若文件包含不同字重,請參閱我們的高階設定選項。
前
之後
如何將篩選後的圖片儲存為可搜尋的 PDF 檔案?
IronOCR 讓您能將經過濾鏡處理的 PDF 檔案儲存為修改後版本,或保留原始狀態。 SaveAsSearchablePdf 方法的第二個參數決定是否使用篩選器進行儲存。
保留篩選器變更有何好處?
保留篩選器變更具有以下幾項優勢:
- 生成更簡潔、易於閱讀的文件
- 確保不同文件批次間的一致性
- 可透過視覺化方式確認文本品質的提升
- 支援品質控制比對
建立可搜尋的 PDF 檔案時,會在維持視覺外觀的同時嵌入 OCR 文字層。 請參閱我們的《建立可搜尋 PDF 指南》以了解更多資訊。
using IronOcr;
var ocr = new IronTesseract();
var ocrInput = new OcrInput();
// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");
// Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale()
.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Perform OCR
OcrResult result = ocr.Read(ocrInput);
// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", true);
// Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", false);
// Export to other formats
result.SaveAsTextFile("extracted-text.txt");
result.SaveAsHocrFile("output.html");
using IronOcr;
var ocr = new IronTesseract();
var ocrInput = new OcrInput();
// Load a PDF file
ocrInput.LoadPdf("invoice.pdf");
// Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale()
.DeNoise()
.Sharpen()
.EnhanceResolution(300);
// Perform OCR
OcrResult result = ocr.Read(ocrInput);
// Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", true);
// Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", false);
// Export to other formats
result.SaveAsTextFile("extracted-text.txt");
result.SaveAsHocrFile("output.html");
Imports IronOcr
Dim ocr As New IronTesseract()
Dim ocrInput As New OcrInput()
' Load a PDF file
ocrInput.LoadPdf("invoice.pdf")
' Apply multiple filters for comprehensive improvement
ocrInput.ToGrayScale() _
.DeNoise() _
.Sharpen() _
.EnhanceResolution(300)
' Perform OCR
Dim result As OcrResult = ocr.Read(ocrInput)
' Save the result as a searchable PDF with filters applied
result.SaveAsSearchablePdf("outputFiltered.pdf", True)
' Or save without filters to preserve original appearance
result.SaveAsSearchablePdf("outputOriginal.pdf", False)
' Export to other formats
result.SaveAsTextFile("extracted-text.txt")
result.SaveAsHocrFile("output.html")
該如何在"已過濾"與"原始"PDF 之間做出選擇?
在以下情況下節省資源 (true):
- 原始文件品質不佳
- 各文件間需保持外觀一致性
- 經過篩選的版本顯著提升了可讀性
- 將文件歸檔以供長期儲存
在以下情況下節省時不套用篩選器 (false):
- 依法須保留原始版面樣式
- 顏色資訊至關重要
- 文件之真實性必須予以維持
- 僅在需要提高 OCR 準確度時才需使用濾鏡
如需進階的 PDF 處理選項,請參閱我們的 PDF OCR 文字擷取指南。 如需最佳篩選條件組合,請參閱"篩選精靈"教學指南。
常見問題
有哪些影像濾鏡能提升 C# 中的 OCR 準確度?
IronOCR 提供五種關鍵的影像校正濾鏡:銳化、提升解析度、去噪、膨脹與蝕蝕。這些濾鏡透過預處理影像,在文字擷取前提升文字清晰度並降低雜訊,從而顯著提高 OCR 準確度。
如何銳化模糊的圖片以提升文字辨識效果?
您可以透過 IronOCR 的 OcrImageInput,僅需一行程式碼即可銳化模糊的影像:new IronOcr.OcrImageInput("sample.png").Sharpen()。此濾鏡會增強影像邊緣的對比度,使文字邊界更為清晰,從而提升字元辨識效果。
為何銳化能提升 OCR 準確度?
IronOCR 中的「銳化」濾鏡透過增強邊緣對比度,來突顯文字與背景之間的界線。這點至關重要,因為字元辨識演算法需要清晰、分明的字母輪廓才能正常運作。邊緣模糊的文字會導致 OCR 引擎誤判字元邊界。
何時應在 OCR 中使用「銳化」濾鏡?
對於略微失焦的圖片、文字邊緣模糊的掃描文件,或光線不足下拍攝的照片,請使用 IronOCR 的銳化濾鏡。請避免對清晰文字進行過度銳化,以免產生偽影並降低準確性。
為了獲得最佳 OCR 效能,我應該設定多少 DPI 才好?
IronOCR 在 300 DPI(每英寸點數)的圖像上表現最佳。較低的分辨率會導致字元辨識錯誤,而較高的分辨率則會拖慢處理速度,卻無法提升準確度。請使用「增強分辨率」濾鏡來提高低分辨率圖像的像素密度。
進行修正後,我可以匯出已過濾的圖片嗎?
是的,IronOCR 允許您使用 SaveAsImages 方法匯出經過篩選的影像。這使您能夠檢視影像修正前後的對比,並在執行 OCR 之前驗證改善效果。
套用影像濾鏡的最簡工作流程為何?
using IronOCR 的最簡工作流程包含 5 個步驟:下載程式庫、匯入 PDF 或圖片、套用所需濾鏡(銳化、提升解析度、去噪、膨脹、蝕蝕)、匯出修正後的圖片以供檢視,以及使用 Read 方法進行 OCR 處理。
使用 IronOCR 進行文件管理有哪些好處?
使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。
IronOCR 如何提升資料準確性?
IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。
IronOCR 是否有提供免費試用版?
是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

