如何使用 C# 在 OCR 中設定 DPI

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

請在 IronOCR 的 OcrInput 中設定 TargetDPI 屬性,以放大低解析度影像,從而提升 OCR 辨識準確度。 此設定可顯著提升模糊或像素化文件的文字辨識效果,即使解析度低至 100 DPI 亦然。

每英寸點數 (DPI) 用於衡量影像品質,並決定掃描文件或數位照片的細節程度。雖然掃描文件快速且高效,但此過程往往會產生低解析度的檔案,特別是在使用預設或快速掃描設定時。 這種細節的缺失會使文字顯得模糊或像素化,進而為資料擷取帶來障礙。

OCR 的效能取決於影像品質。 OCR 引擎透過分析字元形狀與模式,將其轉換為機器可讀的文字。 當圖片的 DPI 過低時,像素數量不足以清晰呈現每個字母,導致細微細節遺失,進而產生不準確的結果。 對於處理掃描文件或舊式數位化系統的開發人員而言,理解 DPI 優化對於可靠的文字擷取至關重要。

IronOCR 能有效應對這些挑戰。 即使在低至 225 DPI 的掃描解析度下,也能達到高準確度。 該函式庫的影像預處理功能能自動偵測並修正各種影像品質問題,使其適合處理來自不同來源的文件。 無論是透過一行程式碼實現簡單的 OCR,還是建構複雜的文件處理流程,DPI 優化始終是關鍵因素。

快速入門:設定目標 DPI 以獲得更清晰的 OCR 結果

只需一行代碼即可設定 IronOCR 來提升低解析度影像的畫質——以最少的努力提升文字清晰度與辨識率。

  1. using NuGet 套件管理員安裝 https://www.nuget.org/packages/IronOcr

    PM > Install-Package IronOcr
  2. 請複製並執行此程式碼片段。

    var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrInput { TargetDPI = 300 }.LoadImage("low-res.png"));
  3. 部署至您的生產環境進行測試

    立即透過免費試用,在您的專案中開始使用 IronOCR

    arrow pointer

如何設定 DPI 以獲得更好的 OCR 結果?

此範例使用一張解析度約為 100 DPI 的低解析度樣本圖片,並添加人為雜訊,以展示 TargetDPI 功能的有效性。 在使用 OcrInput 類別時,了解如何設定 DPI 參數至關重要,該類別可提供對影像預處理的全面控制。

圖片中的實際文字為:"測試 測試 測試 模糊文字 範例 範例 範例"。

低解析度 100 DPI 範例,顯示文字模糊且像素化,呈現 OCR 輸入品質不佳

我需要什麼程式碼來提升圖片的 DPI?

在此範例中,我們將 TargetDPI 設定為 300,以提升影像解析度。 接著我們將載入輸入圖片,並使用 Text PRINT 擷取的文字,以及使用 Confidence 顯示信心水準。 最佳 DPI 設定通常介於 250 至 400 DPI 之間,具體取決於您的使用情境及原始素材的品質。 若涉及多重影像濾鏡的進階情境,請參閱我們關於 OCR 影像優化濾鏡的指南。

:path=/static-assets/ocr/content-code-examples/how-to/dpi-setting.cs
using IronOcr;
using System;

var ocrTesseract = new IronTesseract();

using var ocrInput = new OcrInput();
// Set the target DPI to 300 for better OCR accuracy
ocrInput.TargetDPI = 300;

ocrInput.LoadImage(@"images\image.png");

// Perform OCR on the image with the specified DPI
var ocrResult = ocrTesseract.Read(ocrInput);
// Display the text extracted from the image
Console.WriteLine(ocrResult.Text);
// Display the confidence level of the OCR result
Console.WriteLine(ocrResult.Confidence);
Imports IronOcr
Imports System

Dim ocrTesseract As New IronTesseract()

Using ocrInput As New OcrInput()
    ' Set the target DPI to 300 for better OCR accuracy
    ocrInput.TargetDPI = 300

    ocrInput.LoadImage("images\image.png")

    ' Perform OCR on the image with the specified DPI
    Dim ocrResult = ocrTesseract.Read(ocrInput)
    ' Display the text extracted from the image
    Console.WriteLine(ocrResult.Text)
    ' Display the confidence level of the OCR result
    Console.WriteLine(ocrResult.Confidence)
End Using
$vbLabelText   $csharpLabel

提升 DPI 後能獲得什麼樣的成效?

顯示 OCR 結果的除錯主控台:經過 DPI 優化後,信心分數為 85% 的擷取文字

輸出結果顯示 IronOCR 達到了 85% 的信心分數。 儘管原始圖像存在明顯雜訊且初始 DPI 較低,翻譯結果仍十分精準,充分展現了圖像放大功能的有效性。 此精準度水準超越了傳統 OCR 解決方案,後者在處理低品質輸入資料時往往難以應對。 對於需要更高精準度的應用,建議導入進度追蹤機制,以即時監控信心水準並動態調整設定。

IronOCR 內建自動增強低解析度影像的功能,可透過單一程式庫進行影像放大處理。 此方法可免除對外部影像處理工具的需求,從而簡化工作流程並減少系統依賴性。 對於在 Windows 上初次使用 IronOCR 的開發人員,此功能無需額外設定即可立即運作。

DPI 設定如何影響 OCR 準確度?

為說明差異,以下是未設定 TargetDPI 屬性時,處理同一張低解析度圖片的結果。 此比較說明了為何正確的 DPI 設定對於可靠的文字擷取至關重要。

要找到正確的 DPI 需要權衡取捨。 高 DPI 可提供更高精準度,但處理速度較慢; 低 DPI 速度較快,但可靠性較低。 如有疑問,請讓 IronTesseract 的自動預處理功能決定最佳設定。 您可以將 TargetDPI 屬性設定為 0,以停用自動放大功能。若需進行特殊應用,請參閱我們關於 Tesseract 影像 DPI 優化的指南。

若未進行 DPI 放大處理會發生什麼情況?

顯示 OCR 結果不佳的除錯主控台:文字亂碼且信心度為 79%,顯示 DPI 擷取品質低落

若不進行超解析度處理,信心分數將降至 79%,且提取的文字準確度會大幅降低。 此比較說明了設定 TargetDPI 如何改善低品質影像的 OCR 結果。 當處理包含表格、表單或多欄位佈局的複雜文件時,這種差異會更加明顯。

如何設定 PDF 文件的 DPI?

在處理 PDF 時,IronOCR 會將整份文件(而不僅是其中的圖片)放大至目標 DPI。 這種全面的方法可確保文件整體品質的一致性,這對於商業應用中的 PDF OCR 文字擷取至關重要。 對於進階的 PDF 處理(例如處理可搜尋 PDF),正確的 DPI 設定就顯得更加關鍵。

雖然較高的 DPI 通常能帶來更好的 OCR 結果,但最佳設定會因 PDF 檔案而異。 若不確定應使用哪個數值,請將 DPI 保留為預設設定,並讓 IronOCR 自動決定最佳配置。 該函式庫的演算法會分析文件特徵(例如字型大小、影像品質及內容密度),以選取適當的預處理參數。

// Example: Processing a PDF with custom DPI settings
using IronOcr;

var ocrTesseract = new IronTesseract();

using var ocrInput = new OcrInput();

// Configure DPI specifically for PDF processing
ocrInput.TargetDPI = 250; // Lower DPI often works well for PDFs

// Load a multi-page PDF document
ocrInput.LoadPdf(@"documents\scanned-report.pdf");

// Optional: Process only specific pages
// ocrInput.LoadPdf(@"documents\scanned-report.pdf", PageSelection: new int[] {1, 3, 5});

// Apply additional filters if needed
ocrInput.DeNoise(); // Remove digital noise
ocrInput.Sharpen(); // Enhance text edges

// Perform OCR with confidence tracking
var ocrResult = ocrTesseract.Read(ocrInput);

// Process results page by page
foreach (var page in ocrResult.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Confidence}% confidence");
    Console.WriteLine(page.Text);
}
// Example: Processing a PDF with custom DPI settings
using IronOcr;

var ocrTesseract = new IronTesseract();

using var ocrInput = new OcrInput();

// Configure DPI specifically for PDF processing
ocrInput.TargetDPI = 250; // Lower DPI often works well for PDFs

// Load a multi-page PDF document
ocrInput.LoadPdf(@"documents\scanned-report.pdf");

// Optional: Process only specific pages
// ocrInput.LoadPdf(@"documents\scanned-report.pdf", PageSelection: new int[] {1, 3, 5});

// Apply additional filters if needed
ocrInput.DeNoise(); // Remove digital noise
ocrInput.Sharpen(); // Enhance text edges

// Perform OCR with confidence tracking
var ocrResult = ocrTesseract.Read(ocrInput);

// Process results page by page
foreach (var page in ocrResult.Pages)
{
    Console.WriteLine($"Page {page.PageNumber}: {page.Confidence}% confidence");
    Console.WriteLine(page.Text);
}
Imports IronOcr

' Example: Processing a PDF with custom DPI settings
Dim ocrTesseract As New IronTesseract()

Using ocrInput As New OcrInput()
    ' Configure DPI specifically for PDF processing
    ocrInput.TargetDPI = 250 ' Lower DPI often works well for PDFs

    ' Load a multi-page PDF document
    ocrInput.LoadPdf("documents\scanned-report.pdf")

    ' Optional: Process only specific pages
    ' ocrInput.LoadPdf("documents\scanned-report.pdf", PageSelection:=New Integer() {1, 3, 5})

    ' Apply additional filters if needed
    ocrInput.DeNoise() ' Remove digital noise
    ocrInput.Sharpen() ' Enhance text edges

    ' Perform OCR with confidence tracking
    Dim ocrResult = ocrTesseract.Read(ocrInput)

    ' Process results page by page
    For Each page In ocrResult.Pages
        Console.WriteLine($"Page {page.PageNumber}: {page.Confidence}% confidence")
        Console.WriteLine(page.Text)
    Next
End Using
$vbLabelText   $csharpLabel

警告 TargetDPI 的最大值為 32,766。若將 DPI 設定為高於此限制,將引發例外狀況。 這是因為生成的圖像尺寸將超過 Tesseract 支援的最大尺寸 32,767 x 32,767 像素。 若超過限制,您將收到以下錯誤訊息:"TargetDPI 過高,將導致 Tesseract 處理的影像過大({new_width} x {new_height})。" Tesseract 的最大圖片尺寸為 32767 x 32767 像素。

對於處理大量文件的企业級應用程式,建議考慮實施動態 DPI 調整策略。 請從中等設定(300 DPI)開始,並根據信心分數進行調整。 此方法在處理速度與準確性之間取得平衡,確保在各類文件類型中皆能展現最佳效能。將 DPI 優化與其他預處理技術結合,可針對處理難度較高的文件獲得更佳的結果。

處理特定文件類型時,DPI 要求可能有所不同。 例如,由於字元尺寸較小且拍攝角度可能導致影像變形,讀取車牌通常需要較高的 DPI 設定。 同樣地,處理 MICR 支票時,透過特定的 DPI 設定可精準擷取特殊的 MICR 字體字元。

對於將 OCR 整合至網頁應用程式或雲端服務的開發人員而言,理解 DPI 優化對於管理處理時間與伺服器資源至關重要。 透過微調 DPI 設定,您可根據具體的應用程式需求與基礎架構限制,在精準度與效能之間取得最佳平衡。

常見問題

什麼是 DPI,它為何會影響 OCR 的準確度?

DPI(每英寸點數)用於衡量影像品質,並決定掃描文件中的細節程度。就 OCR 準確度而言,較高的 DPI 意味著更清晰的字元輪廓。憑藉其先進的影像預處理能力,IronOCR 即使處理低至 225 DPI 的影像,仍能維持高準確度。

如何改善低解析度圖片的 OCR 結果?

請在 IronOCR 的 OcrInput 類別中設定 TargetDPI 屬性,以放大低解析度影像。例如,將 TargetDPI 設為 300 可顯著提升模糊或像素化的文件文字辨識效果,即使文件解析度低至 100 DPI 亦然。

在 C# 中設定 OCR 的 DPI 最快速的方法是什麼?

您可透過 IronOCR 僅用一行程式碼設定 DPI:var result = new IronOcr.IronTesseract().Read(new IronOcr.OcrInput { TargetDPI = 300 }.LoadImage("low-res.png"))。此操作會自動將您的圖片放大,以提升文字清晰度與辨識效果。

OCR 能否有效處理低解析度的掃描文件?

是的,IronOCR 專為有效處理低解析度掃描文件而設計。即使在僅 225 DPI 的低解析度掃描中,它也能達到高準確度,並具備自動影像預處理功能,可偵測並修正各種影像品質問題。

實施 OCR 的 DPI 設定有哪些基本步驟?

流程包含五個步驟:1) 下載 IronOCR程式庫,2) 建立新的 OcrInput 物件,3) 將 TargetDPI 屬性設定為所需值,4) 使用 LoadImage 方法載入圖片,以及 5) 使用 Read 方法擷取文字。

為何預設的掃描設定往往會導致 OCR 效能不佳?

預設或快速掃描設定通常會產生低解析度的檔案,以節省時間和儲存空間。這會導致文字模糊或出現像素化,細微細節因此遺失,使得 OCR 引擎難以準確辨識字元形狀。IronOCR 的 TargetDPI 功能有助於克服此限制。

IronOCR 能否整合至現有應用程式中?

IronOCR 設計上可輕鬆透過 C# 整合至現有應用程式中,讓開發人員能以最少的努力,為其軟體增添 OCR 功能。

使用 IronOCR 進行文件管理有哪些好處?

使用 IronOCR 進行文件管理,可將掃描文件轉換為可搜尋且可編輯的文字,從而簡化工作流程,減少人工資料輸入的需求,並提升文件的可存取性。

IronOCR 如何提升資料準確性?

IronOCR 透過其先進的辨識演算法與影像校正功能來提升資料準確性,確保文字擷取過程既可靠又精確。

IronOCR 是否有提供免費試用版?

是的,Iron Software 提供 IronOCR 的免費試用版,讓使用者能在決定購買前測試其功能與效能。

Curtis Chau
技術撰稿人

Curtis Chau 擁有卡爾頓大學(Carleton University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

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

準備開始了嗎?
Nuget 下載 5,896,332 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronOcr
執行範例 觀看您的圖片轉為可搜尋文字。