使用 IRONOCR 如何使用 IronOCR 建立 .NET OCR SDK Kannapat Udonpant 發表日期:9月 29, 2025 下載 IronOCR NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 假設您曾經需要從掃描文件、PDF 或圖像中提取文字。 在這種情況下,您就知道處理不同的文件格式、多種語言和低品質掃描件有多麼棘手了。 這時 OCR(光學字元辨識)就派上了用場,它可以將掃描的圖像和文件檔案轉換為可編輯的文本,以便您可以透過程式設計方式進行處理。 本指南將探討如何使用IronOCR建立高效能的 .NET OCR SDK,向您展示如何執行 OCR 識別、提取結構化資料以及產生可搜尋的 PDF 文件(支援多種文件類型)。您將學習如何快速、可靠地處理掃描的 PDF、圖像和其他文字文件,並將其無縫整合到桌面、Web 或行動裝置上的 .NET 應用程式中。 IronOCR為何是理想的.NET OCR SDK? 從零開始建立 OCR 庫需要數月的開發、影像預處理和大量測試。 IronOCR 透過提供全面的 .NET OCR SDK 來消除這種開銷,該 SDK 支援各種格式並可無縫整合到 .NET 應用程式中。 此SDK負責處理繁重的文字辨識工作,同時也提供通常只有企業級解決方案才具備的功能: 對各種文件格式和掃描影像均具有高效能 支援125 種以上語言和手寫文字識別 支援區域 OCR 的自適應二值化、字體資訊和邊界框訊息 能夠處理掃描的PDF檔案、影像格式和文字區塊 即時建立具有隱藏文字圖層的可搜尋文檔 與原始的 Tesseract 實作不同,IronOCR 可立即在Windows、Linux、macOS和雲端平台上運行,支援 OCR API、AI 輔助識別和無縫集成,無需額外配置。 IronOCR入門指南 透過 NuGet 套件管理器安裝只需幾秒鐘。 跑步: Install-Package IronOcr 有關詳細的安裝說明,請參閱IronOCR 文件。 安裝完成後,從掃描文件中提取文字變得非常簡單: using IronOcr; public class OcrService { private readonly IronTesseract _ocr; public OcrService() { _ocr = new IronTesseract(); } public string ExtractText(string imagePath) { using var input = new OcrInput(); input.LoadImage(imagePath); var result = _ocr.Read(input); return result.Text; } } using IronOcr; public class OcrService { private readonly IronTesseract _ocr; public OcrService() { _ocr = new IronTesseract(); } public string ExtractText(string imagePath) { using var input = new OcrInput(); input.LoadImage(imagePath); var result = _ocr.Read(input); return result.Text; } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這段程式碼創建了一個可重複使用的 OCR 服務,可以自動處理各種影像格式,包括 JPEG、PNG、TIFF 和 BMP,以及 PDF 文件和其他文件格式。 為了測試它,我們將使用以下範例圖像在我們的主類別中運行它: class Program { static void Main(string[] args) { var ocrService = new OcrService(); string imagePath = "test.png"; // Replace with your image path string extractedText = ocrService.ExtractText(imagePath); Console.WriteLine(extractedText); } } class Program { static void Main(string[] args) { var ocrService = new OcrService(); string imagePath = "test.png"; // Replace with your image path string extractedText = ocrService.ExtractText(imagePath); Console.WriteLine(extractedText); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 輸出 如何使用 IronOCR 建立 .NET OCR SDK:圖 2 - 控制台輸出範例 建構核心OCR功能 實際應用需要的不只是基本的文字擷取功能。 IronOCR 提供全面的文件處理功能: // Async document processing with barcodes public async Task<ProcessedDocument> ProcessDocumentAsync(string filePath) { using var input = new OcrInput(); LoadFile(input, filePath); input.DeNoise(); input.Deskew(); var result = await _ocr.ReadAsync(input); return new ProcessedDocument { Text = result.Text, Confidence = result.Confidence, Barcodes = result.Barcodes.Select(b => b.Value).ToList() }; } // Helper to load image or PDF private void LoadFile(OcrInput input, string filePath) { if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase)) input.LoadPdf(filePath); else input.LoadImage(filePath); } // Model for processed documents with barcodes public class ProcessedDocument { public string Text { get; set; } public double Confidence { get; set; } public List<string> Barcodes { get; set; } } // Async document processing with barcodes public async Task<ProcessedDocument> ProcessDocumentAsync(string filePath) { using var input = new OcrInput(); LoadFile(input, filePath); input.DeNoise(); input.Deskew(); var result = await _ocr.ReadAsync(input); return new ProcessedDocument { Text = result.Text, Confidence = result.Confidence, Barcodes = result.Barcodes.Select(b => b.Value).ToList() }; } // Helper to load image or PDF private void LoadFile(OcrInput input, string filePath) { if (filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase)) input.LoadPdf(filePath); else input.LoadImage(filePath); } // Model for processed documents with barcodes public class ProcessedDocument { public string Text { get; set; } public double Confidence { get; set; } public List<string> Barcodes { get; set; } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此實作方案可處理多個文檔,套用影像預處理,並從同一文件中提取條碼和文字。 非同步模式可確保 .NET 應用程式的高效能。 輸出 如何使用 IronOCR 建立 .NET OCR SDK:圖 3 - OCR 輸入影像與輸出文字 利用內建功能提高準確性 IronOCR的預處理功能顯著提高了對真實文件的識別準確率: // OCR optimized for low-quality images public string ProcessLowQualityDocument(string filePath) { using var input = new OcrInput(); LoadFile(input, filePath); // Preprocessing for low-quality documents input.DeNoise(); input.Deskew(); input.Scale(150); input.Binarize(); input.EnhanceResolution(300); var result = _ocr.Read(input); return result.Text; } // OCR optimized for low-quality images public string ProcessLowQualityDocument(string filePath) { using var input = new OcrInput(); LoadFile(input, filePath); // Preprocessing for low-quality documents input.DeNoise(); input.Deskew(); input.Scale(150); input.Binarize(); input.EnhanceResolution(300); var result = _ocr.Read(input); return result.Text; } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 每個過濾器都針對文件品質方面的特定問題。 DeNoise()可移除掃描中的雜訊, Deskew()可校正傾斜的頁面,EnhanceResolution() 可銳利化模糊的文字。 這些過濾器協同工作,即使從品質較差的來源文件中也能實現準確的文字提取。 根據Stack Overflow上的討論,適當的預處理可以將 OCR 準確率提高 40%。 進階資料擷取 SDK 功能 IronOCR 除了基本的文字擷取功能外,還具備現代 .NET OCR SDK 應用程式必不可少的功能: // Create a searchable PDF from an image or PDF public void CreateSearchablePdf(string inputPath, string outputPath) { using var input = new OcrInput(); LoadFile(input, inputPath); _ocr.Read(input).SaveAsSearchablePdf(outputPath); } // Extract structured data (phone numbers, emails, amounts) from text public List<string> ExtractStructuredData(string filePath) { using var input = new OcrInput(); LoadFile(input, filePath); var result = _ocr.Read(input); var text = result.Text; var phoneNumbers = Regex.Matches(text, @"\+?\d[\d\s\-]{7,}\d") .Select(m => m.Value).ToList(); var emails = Regex.Matches(text, @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}") .Select(m => m.Value).ToList(); var amounts = Regex.Matches(text, @"\$\d+(?:\.\d{2})?") .Select(m => m.Value).ToList(); return phoneNumbers.Concat(emails).Concat(amounts).ToList(); } // Create a searchable PDF from an image or PDF public void CreateSearchablePdf(string inputPath, string outputPath) { using var input = new OcrInput(); LoadFile(input, inputPath); _ocr.Read(input).SaveAsSearchablePdf(outputPath); } // Extract structured data (phone numbers, emails, amounts) from text public List<string> ExtractStructuredData(string filePath) { using var input = new OcrInput(); LoadFile(input, filePath); var result = _ocr.Read(input); var text = result.Text; var phoneNumbers = Regex.Matches(text, @"\+?\d[\d\s\-]{7,}\d") .Select(m => m.Value).ToList(); var emails = Regex.Matches(text, @"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}") .Select(m => m.Value).ToList(); var amounts = Regex.Matches(text, @"\$\d+(?:\.\d{2})?") .Select(m => m.Value).ToList(); return phoneNumbers.Concat(emails).Concat(amounts).ToList(); } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 我們在這裡編寫的程式碼展示了兩個關鍵的 OCR 操作。 CreateSearchablePdf 將輸入的掃描 PDF 或圖像轉換為可搜尋文檔,其中包含可編輯文本,以便輕鬆識別多種文檔格式中的文本。 ExtractStructuredData 處理相同掃描文檔,從各種文檔類型中提取電話號碼、電子郵件和金額等數據,使 .NET 應用程式能夠高效地處理掃描圖像、文字檔案和 PDF 文件。 生產就緒實施 借助內建的生產功能,您可以自信地部署 IronOCR: public class ProductionOcrService { private readonly IronTesseract _ocr; private readonly ILogger _logger; public ProductionOcrService(ILogger logger) { _logger = logger; _ocr = new IronTesseract(); // Production configuration _ocr.Configuration.RenderSearchablePdfsAndHocr = true; _ocr.Configuration.ReadBarCodes = true; } public async Task<string> ProcessBatchAsync(string[] documents) { var results = new List<string>(); // Parallel processing for performance await Parallel.ForEachAsync(documents, async (doc, ct) => { try { var text = await ExtractTextAsync(doc); results.Add(text); _logger.LogInformation($"Processed: {doc}"); } catch (Exception ex) { _logger.LogError(ex, $"Failed: {doc}"); } }); return string.Join("\n", results); } } public class ProductionOcrService { private readonly IronTesseract _ocr; private readonly ILogger _logger; public ProductionOcrService(ILogger logger) { _logger = logger; _ocr = new IronTesseract(); // Production configuration _ocr.Configuration.RenderSearchablePdfsAndHocr = true; _ocr.Configuration.ReadBarCodes = true; } public async Task<string> ProcessBatchAsync(string[] documents) { var results = new List<string>(); // Parallel processing for performance await Parallel.ForEachAsync(documents, async (doc, ct) => { try { var text = await ExtractTextAsync(doc); results.Add(text); _logger.LogInformation($"Processed: {doc}"); } catch (Exception ex) { _logger.LogError(ex, $"Failed: {doc}"); } }); return string.Join("\n", results); } } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 此模式展示了批量操作的並行處理、用於監控的結構化日誌記錄以及優雅的錯誤處理,從而防止單個文件故障導致整個批次停止運行。 實際應用:發票處理 以下是企業如何使用 IronOCR 作為其 .NET OCR SDK 來自動化發票處理: // Extract structured invoice data public Invoice ExtractInvoiceData(string invoicePath) { using var input = new OcrInput(); LoadFile(input, invoicePath); // Preprocessing for documents input.DeNoise(); input.Deskew(); var result = _ocr.Read(input); var text = result.Text; return new Invoice { InvoiceNumber = ExtractInvoiceNumber(text), Date = ExtractDate(text), TotalAmount = ExtractAmount(text), RawText = text }; } // --- Helper methods for invoice parsing --- private string ExtractInvoiceNumber(string text) { // Example: Invoice #: 12345 var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)"); return match.Success ? match.Groups[1].Value : null; } private DateOnly? ExtractDate(string text) { // Numeric dates var numericMatch = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b"); if (numericMatch.Success && DateTime.TryParse(numericMatch.Groups[1].Value, out var numericDate)) return DateOnly.FromDateTime(numericDate); // Written-out dates var writtenMatch = Regex.Match(text, @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b", RegexOptions.IgnoreCase); if (writtenMatch.Success && DateTime.TryParse(writtenMatch.Value, out var writtenDate)) return DateOnly.FromDateTime(writtenDate); return null; } private decimal? ExtractAmount(string text) { var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)"); if (match.Success && decimal.TryParse(match.Groups[1].Value, out var amount)) return amount; return null; } // Extract structured invoice data public Invoice ExtractInvoiceData(string invoicePath) { using var input = new OcrInput(); LoadFile(input, invoicePath); // Preprocessing for documents input.DeNoise(); input.Deskew(); var result = _ocr.Read(input); var text = result.Text; return new Invoice { InvoiceNumber = ExtractInvoiceNumber(text), Date = ExtractDate(text), TotalAmount = ExtractAmount(text), RawText = text }; } // --- Helper methods for invoice parsing --- private string ExtractInvoiceNumber(string text) { // Example: Invoice #: 12345 var match = Regex.Match(text, @"Invoice\s*#?:?\s*(\S+)"); return match.Success ? match.Groups[1].Value : null; } private DateOnly? ExtractDate(string text) { // Numeric dates var numericMatch = Regex.Match(text, @"\b(\d{1,2}/\d{1,2}/\d{2,4})\b"); if (numericMatch.Success && DateTime.TryParse(numericMatch.Groups[1].Value, out var numericDate)) return DateOnly.FromDateTime(numericDate); // Written-out dates var writtenMatch = Regex.Match(text, @"\b(January|February|March|April|May|June|July|August|September|October|November|December)\s+(\d{1,2}),?\s+(\d{4})\b", RegexOptions.IgnoreCase); if (writtenMatch.Success && DateTime.TryParse(writtenMatch.Value, out var writtenDate)) return DateOnly.FromDateTime(writtenDate); return null; } private decimal? ExtractAmount(string text) { var match = Regex.Match(text, @"\$\s*(\d+(?:\.\d{2})?)"); if (match.Success && decimal.TryParse(match.Groups[1].Value, out var amount)) return amount; return null; } IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 這種方法每天處理數千張發票,提取關鍵欄位以自動輸入到會計系統中。 輸出 如何使用 IronOCR 建立 .NET OCR SDK:圖 4 - 發票 OCR 輸出 結論 IronOCR 將 .NET 應用程式轉換為複雜的文件處理解決方案,而無需從頭開始建立 OCR,從而避免了複雜性。 憑藉廣泛的語言支援、卓越的準確性和可用於生產環境的功能,它是開發人員信賴的、用於企業應用程式的完整 .NET OCR SDK。 IronOCR 提供靈活的授權選項,單開發者使用價格為 $liteLicense,並可擴展至企業部署。 免版稅模式意味著在向客戶分發 OCR SDK 應用程式時無需支付額外費用。 準備好建置您的 .NET OCR SDK 了嗎? 立即開始免費試用,開始建立生產應用程式。 !{--010011000100100101000010010100100100000101010010010110010101111101001110010101010101010101010101010101010101010 0100010111110100100101001101010100010000010100110001001100010111110100001001001100010011110010101010 常見問題解答 什麼是 .NET OCR SDK? IronOCR 的 .NET OCR SDK 是一個函式庫,設計用來將光學字元識別功能整合到 C# 應用程式中,讓開發人員可以從影像、PDF 和掃描文件中擷取文字。 IronOCR for .NET SDK 的主要功能是什麼? IronOCR 的 .NET SDK 提供簡單的 API、多語言支援、跨平台相容性,以及處理各種檔案格式和低品質掃描的進階功能。 IronOCR 如何處理不同語言? IronOCR 的 .NET SDK 支援多種語言,可從各種語言的文件中抽取文字並進行識別,而無需額外設定。 IronOCR 可以處理低品質的掃描嗎? 是的,IronOCR 旨在有效處理低品質掃描,採用先進的演算法,即使在具挑戰性的情況下,也能提升文字辨識的準確度。 IronOCR for .NET SDK 是否跨平台? IronOCR 的 .NET SDK 是跨平台的,這意味著它可以在不同的作業系統上使用,使其適用於各種開發環境。 IronOCR 支援哪些檔案格式? IronOCR 支援多種檔案格式,包括影像、PDF 和掃描文件,可彈性處理不同媒體的文字辨識任務。 開發人員如何將 IronOCR 整合到他們的專案中? 開發人員可以使用 IronOCR 簡單直接的 API,輕鬆地將 IronOCR 整合到他們的 C# 專案中,簡化在應用程式中加入 OCR 功能的程序。 IronOCR 有哪些使用案例? IronOCR 可用於文件管理系統、自動資料輸入、內容數位化,以及任何需要從影像或 PDF 中抽取文字的應用程式。 Kannapat Udonpant 立即與工程團隊聊天 軟體工程師 在成為软件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人实验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因为他直接向编写大部分 IronPDF 使用的代码的开发者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代码或文档时,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。 相關文章 發表日期 12月 18, 2025 C# 讀取 PDF 表單欄位:以程式設計方式擷取表單數據 學習如何在C#中使用IronPDF讀取PDF表單字段。從可填寫PDF中提取文本、複選框、下拉列表等的簡單代碼示例。 閱讀更多 發表日期 12月 18, 2025 C# 從 PDF 擷取影像:完整開發者指南 學習如何使用IronPDF強大的方法從C#中的PDF文檔中提取圖像。完整指南中包含了.NET開發人員的代碼示例。 閱讀更多 發表日期 12月 18, 2025 C# 將 PDF 轉換為圖像:完整開發者指南 學習如何使用IronPDF將PDF文檔轉換為C#中的圖像。詳盡指南中提供了JPG、PNG和TIFF轉換的代碼示例。 閱讀更多 C# 中的 OCR CodeProject Tutorial:使用 IronOCR 從影像中萃取文字如何在 C# GitHub 專案中整合 OCR
發表日期 12月 18, 2025 C# 讀取 PDF 表單欄位:以程式設計方式擷取表單數據 學習如何在C#中使用IronPDF讀取PDF表單字段。從可填寫PDF中提取文本、複選框、下拉列表等的簡單代碼示例。 閱讀更多
發表日期 12月 18, 2025 C# 從 PDF 擷取影像:完整開發者指南 學習如何使用IronPDF強大的方法從C#中的PDF文檔中提取圖像。完整指南中包含了.NET開發人員的代碼示例。 閱讀更多
發表日期 12月 18, 2025 C# 將 PDF 轉換為圖像:完整開發者指南 學習如何使用IronPDF將PDF文檔轉換為C#中的圖像。詳盡指南中提供了JPG、PNG和TIFF轉換的代碼示例。 閱讀更多