如何使用 C# | IronOcr 提升影像品質以獲得更好的 OCR 結果

C# 改善 OCR 讀取的影像修正篩選器。

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

IronOCR 提供五種基本的影像修正濾鏡 (銳化、增強解析度、去噪、擴張和侵蝕),可在文字擷取之前預先處理影像,藉由增強文字清晰度和降低雜訊,大幅提升 OCR 準確度。

快速入門:套用銳利化濾鏡以獲得清晰文字

使用 IronOCR 的 OcrImageInput 只需一行代碼即可銳化模糊的影像。 本範例展示影像增強以達到精確的 OCR。

Nuget Icon立即開始使用 NuGet 建立 PDF 檔案:

  1. 使用 NuGet 套件管理器安裝 IronOCR

    PM > Install-Package IronOcr

  2. 複製並運行這段程式碼。

    new IronOcr.OcrImageInput("sample.png").Sharpen().SaveAsImages("output.png");
  3. 部署到您的生產環境進行測試

    立即開始在您的專案中使用 IronOCR,免費試用!
    arrow pointer


如何套用銳化濾鏡? 此濾鏡可增加影像邊緣的對比度,創造出更明確的文字邊界。 它能改善文字的清晰度,使字元辨識更準確。

為什麼銳化可以提高 OCR 精確度? 銳化濾鏡透過增強邊緣對比,強調文字與背景之間的邊界。字元識別演算法需要清晰、鮮明的字母形狀才能正常運作。 掃描文件或低品質照片中常見的邊緣模糊文字會導致 OCR 引擎誤判字元邊界。 若要瞭解更多關於 OCR 最佳影像處理的資訊,請參閱我們關於 [OCR 影像最佳化篩選器](https://ironsoftware.com/csharp/ocr/examples/ocr-image-filters-for-net-tesseract/)的綜合指南。 若要套用銳化濾鏡,請呼叫 `OcrImageInput` 物件的 `Sharpen` 方法: ```csharp :path=/static-assets/ocr/content-code-examples/how-to/image-quality-correction-sharpen-filter.cs ```

何時應該使用銳化篩選器? 對於稍微失焦的影像、文字邊緣較軟的掃描文件,或在光線不足的情況下拍攝的照片,請使用銳化處理。 避免將清晰的文字過度銳化,因為這樣會產生假象並降低精確度。 對於極度模糊的掃描,請結合銳化與其他濾鏡,或參閱我們的[修復低品質掃描與影像](https://ironsoftware.com/csharp/ocr/examples/ocr-low-quality-scans-tesseract/)指南。 使用 `SaveAsImages` 方法匯出篩選過的影像。 以下是翻譯前後的比較。
Blurred text sample showing business article content before applying sharpen filter
Text sample after sharpen filter application showing improved edge definition and character clarity

如何增強解析度以獲得更好的 OCR? 此濾鏡可增加像素密度,提高銳利度和清晰度。 它可以幫助 OCR 引擎更準確地讀取低解析度影像中的文字。

OCR 應以何種 DPI 為目標? OCR 引擎在 300 DPI(每英吋點數)下效能最佳。 較低的解析度會造成字元辨識錯誤; 較高的解析度會減慢處理速度,卻不會提高精確度。 IronOCR 的增強濾鏡可將影像智慧地提升至最佳 DPI 水準。 如需詳細指引,請參閱我們的 [DPI 設定指南](https://ironsoftware.com/csharp/ocr/how-to/dpi-setting/)。 調用 `EnhanceResolution` 方法來套用此過濾器。 預設目標為 225 DPI: ```csharp 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}"); ```

何時增強解析度最重要? 解析度的提升對於以下方面至關重要: - 以螢幕解析度 (72-96 DPI) 擷取的螢幕截圖 - 從網際網路下載的網頁影像 - 以低解析度掃描的歷史文件 - 傳真傳輸本身解析度低 [OCR Tesseract Image DPI 實例](https://ironsoftware.com/csharp/ocr/examples/ocr-image-dpi-for-tesseract/)讓您深入瞭解 DPI 如何影響各種文件類型的精確度。
Low-resolution text sample showing blurry, pixelated business article requiring OCR enhancement
Resolution-enhanced text showing clearer characters after DPI improvement for better OCR accuracy

如何去除影像雜訊? 去噪濾鏡可減少影像中不想要的人工影像。 降低雜訊可將文字與背景干擾隔離,產生更乾淨、更精準的 OCR 結果。

2x2 和 3x3 語法有何差異? 形態大小決定去噪強度。 2x2 形態學應用溫和的降噪技術,在保留精細文字的同時,將人工雜訊降到最低。 3x3 形態可為嚴重退化的文件提供積極的雜訊去除,但可能會影響非常小的文字。 若要套用去噪濾波器,請使用`DeNoise`方法。 預設 morphology 為 2x2。若要使用 3x3 形態,請傳入 'true': ```csharp 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.Confidence}%"); } ```

我如何知道我的影像是否需要去噪化? 尋找這些噪音指標: - 背景上有隨機的斑點或小點 - 因掃描不良而產生的鹽粒雜訊 - 高 ISO 攝影所產生的紋理 - 背景紋理來自回收紙 如需自動偵測雜訊,請探索我們的 [Filter Wizard](https://ironsoftware.com/csharp/ocr/examples/filter-wizard/)。
Noisy scanned document with speckles and artifacts degrading text about Japanese tech executives
Clean document after denoise filter removes background speckles and improves text clarity

如何使用 Dilate 過濾器? 縮放可擴大影像中的明亮區域。 它可以加厚文字,使其更加突出,並讓 OCR 軟體更容易詮釋。

何時應該對文字進行縮放? 縮放對於在下列情況中發現的細小或斷裂的文字字元效果最佳: - 墨水不一致的舊打字機文件 - 褪色的收據和熱感紙列印輸出 - 使用髮線字型的文件 - 影像格式的過度壓縮文字 縮放可填補字元間的小空隙,並強化薄弱的筆劃連接。 這可防止 OCR 引擎將斷字誤解為多個符號。 若要套用膨脹濾波器,請使用`Dilate`方法。 預設語態為 2x2; 為 3x3 傳 'true': ```csharp 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.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.SingleBlock; ocrTesseract.Configuration.ReadBarCodes = true; // Perform OCR var result = ocrTesseract.Read(receiptInput); ```

過度擴張的常見問題有哪些? 過度擴張可能會導致: - 相鄰字母合併時的字符出血 - 內部細節的遺失('e"或"8'的孔洞) - 降低粗體文字的精確度 監控結果並作相應調整。 對於混合文字重量的文件,請選擇性使用我們的影像品質修正篩選器。
Document with thin text strokes that would benefit from dilation filtering for OCR
Text after dilation filter showing thickened character strokes and improved legibility

如何套用 Erode 過濾器? 侵蝕可以縮小圖像中明亮區域的大小,精細粗大或扭曲的字元並改善字元分離。

為什麼侵蝕有助於處理厚文本? 侵蝕會使文字筆劃變細,並分開觸碰的字元。 此過濾器的優點在於 - 過墨印刷文件 - 字體出血的影印本 - 出現合併的粗體文字 - 低品質傳真傳輸 仔細的侵蝕可恢復字元間的分隔,並提高個別字母的辨識度,避免整個字詞被誤讀。 使用 `Erode` 方法套用此過濾器。 預設語態為 2x2; 為 3x3 傳 'true': ```csharp 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.Configuration.BlackListCharacters = "~`@#$%^&*()_+-={}[]|\\:\";<>?,./"; ocrTesseract.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 "; var ocrResult = ocrTesseract.Read(photocopyInput); // Extract with confidence check var highConfidenceText = ocrResult.Blocks .Where(b => b.Confidence > 90) .Select(b => b.Text); ```

如何平衡侵蝕與文字可讀性? 找到正確的侵蝕程度需要仔細的測試: - 從預設的 2x2 形態開始 - 在代表性的文件樣本上進行測試 - 檢查標點符號是否可見 - 確保細字型不會破損 對於混合文字重量的文件,請參閱我們的 [進階組態選項](https://ironsoftware.com/csharp/ocr/examples/csharp-configure-setup-tesseract/)。
Document with merged/thick characters that would benefit from erosion filter processing
Text after erosion filter showing separated characters and refined stroke thickness

如何將篩選的影像儲存為可搜尋的 PDF? IronOCR 可讓您儲存已套用過濾器修改過的 PDF 檔案或其原始狀態。 `SaveAsSearchablePdf` 方法的第二個參數會決定是否以過濾器儲存。

保留篩選器變更有什麼好處? 保留過濾器變更提供了幾個優點: - 建立更簡潔、更易閱讀的文件 - 保持不同文件批次的一致性 - 提供文字品質改善的視覺確認 - 可進行品質控制比較 建立可搜尋的 PDF,嵌入 OCR 文字層,同時保持視覺外觀。 請參閱我們的 [ 建立可搜尋的 PDF](https://ironsoftware.com/csharp/ocr/how-to/searchable-pdf/) 指南,瞭解更多資訊。 ```csharp 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"); ```

如何在篩選過的 PDF 和原始 PDF 之間進行選擇? **當:**使用篩選條件儲存 (true) 時 - 原始文件品質不佳 - 各文件的外觀必須一致 - 篩選版本大幅提升可讀性 - 長期儲存的文件歸檔 **不使用篩選條件儲存 (false) 時:** - 法律上要求保持原貌 - 顏色資訊很重要 - 必須保持文件的真實性 - 僅需使用篩選器來達到 OCR 精確度 如需進階的 PDF 處理選項,請參閱我們的 [ PDF OCR 文字擷取指南](https://ironsoftware.com/csharp/ocr/examples/csharp-pdf-ocr/)。 有關最佳篩選器組合,請參閱 [ 篩選器精靈教學](https://ironsoftware.com/csharp/ocr/how-to/filter-wizard/)。

常見問題解答

哪些影像濾鏡可以提高 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 之前,檢視影像修正的前後比較,並驗證改善的效果。

應用影像濾鏡的最基本工作流程是什麼?

IronOCR 的最小工作流程包括 5 個步驟:下載程式庫、匯入您的 PDF 或影像、套用所需的濾鏡(銳化、提升解析度、去噪、擴展、侵蝕)、匯出修正後的影像以供檢視,並使用讀取方法進行 OCR 處理。

柯蒂斯·週
技術撰稿人

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

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

準備好開始了嗎?
Nuget 下載 5,299,091 | 版本: 2025.12 剛剛發布