使用 IRONOCR 使用 IronOCR 建立 .NET OCR SDK Kannapat Udonpant 發表日期:2026年1月21日 下載 IronOCR NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 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; } } Imports IronOcr Public Class OcrService Private ReadOnly _ocr As IronTesseract Public Sub New() _ocr = New IronTesseract() End Sub Public Function ExtractText(imagePath As String) As String Using input As New OcrInput() input.LoadImage(imagePath) Dim result = _ocr.Read(input) Return result.Text End Using End Function End Class $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); } } Option Strict On Module Program Sub Main(args As String()) Dim ocrService = New OcrService() Dim imagePath As String = "test.png" ' Replace with your image path Dim extractedText As String = ocrService.ExtractText(imagePath) Console.WriteLine(extractedText) End Sub End Module $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; } } Imports System Imports System.Collections.Generic Imports System.Linq Imports System.Threading.Tasks ' Async document processing with barcodes Public Class DocumentProcessor Public Async Function ProcessDocumentAsync(filePath As String) As Task(Of ProcessedDocument) Using input As New OcrInput() LoadFile(input, filePath) input.DeNoise() input.Deskew() Dim result = Await _ocr.ReadAsync(input) Return New ProcessedDocument With { .Text = result.Text, .Confidence = result.Confidence, .Barcodes = result.Barcodes.Select(Function(b) b.Value).ToList() } End Using End Function ' Helper to load image or PDF Private Sub LoadFile(input As OcrInput, filePath As String) If filePath.EndsWith(".pdf", StringComparison.OrdinalIgnoreCase) Then input.LoadPdf(filePath) Else input.LoadImage(filePath) End If End Sub End Class ' Model for processed documents with barcodes Public Class ProcessedDocument Public Property Text As String Public Property Confidence As Double Public Property Barcodes As List(Of String) End Class $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; } Imports System Public Class OcrProcessor ' OCR optimized for low-quality images Public Function ProcessLowQualityDocument(filePath As String) As String Using input As New OcrInput() LoadFile(input, filePath) ' Preprocessing for low-quality documents input.DeNoise() input.Deskew() input.Scale(150) input.Binarize() input.EnhanceResolution(300) Dim result = _ocr.Read(input) Return result.Text End Using End Function End Class $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(); } Imports System.Text.RegularExpressions Public Class PdfProcessor ' Create a searchable PDF from an image or PDF Public Sub CreateSearchablePdf(inputPath As String, outputPath As String) Using input As New OcrInput() LoadFile(input, inputPath) _ocr.Read(input).SaveAsSearchablePdf(outputPath) End Using End Sub ' Extract structured data (phone numbers, emails, amounts) from text Public Function ExtractStructuredData(filePath As String) As List(Of String) Using input As New OcrInput() LoadFile(input, filePath) Dim result = _ocr.Read(input) Dim text = result.Text Dim phoneNumbers = Regex.Matches(text, "\+?\d[\d\s\-]{7,}\d") _ .Cast(Of Match)() _ .Select(Function(m) m.Value).ToList() Dim emails = Regex.Matches(text, "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,}") _ .Cast(Of Match)() _ .Select(Function(m) m.Value).ToList() Dim amounts = Regex.Matches(text, "\$\d+(?:\.\d{2})?") _ .Cast(Of Match)() _ .Select(Function(m) m.Value).ToList() Return phoneNumbers.Concat(emails).Concat(amounts).ToList() End Using End Function End Class $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); } } Imports System.Collections.Generic Imports System.Threading.Tasks Public Class ProductionOcrService Private ReadOnly _ocr As IronTesseract Private ReadOnly _logger As ILogger Public Sub New(logger As ILogger) _logger = logger _ocr = New IronTesseract() ' Production configuration _ocr.Configuration.RenderSearchablePdfsAndHocr = True _ocr.Configuration.ReadBarCodes = True End Sub Public Async Function ProcessBatchAsync(documents As String()) As Task(Of String) Dim results As New List(Of String)() ' Parallel processing for performance Await Task.WhenAll(documents.Select(Function(doc) ProcessDocumentAsync(doc, results))) Return String.Join(vbLf, results) End Function Private Async Function ProcessDocumentAsync(doc As String, results As List(Of String)) As Task Try Dim text As String = Await ExtractTextAsync(doc) results.Add(text) _logger.LogInformation($"Processed: {doc}") Catch ex As Exception _logger.LogError(ex, $"Failed: {doc}") End Try End Function Private Async Function ExtractTextAsync(doc As String) As Task(Of String) ' Placeholder for the actual text extraction logic Return Await Task.FromResult(String.Empty) End Function End Class $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; } Imports System.Text.RegularExpressions Public Class InvoiceExtractor ' Extract structured invoice data Public Function ExtractInvoiceData(invoicePath As String) As Invoice Using input As New OcrInput() LoadFile(input, invoicePath) ' Preprocessing for documents input.DeNoise() input.Deskew() Dim result = _ocr.Read(input) Dim text = result.Text Return New Invoice With { .InvoiceNumber = ExtractInvoiceNumber(text), .Date = ExtractDate(text), .TotalAmount = ExtractAmount(text), .RawText = text } End Using End Function ' --- Helper methods for invoice parsing --- Private Function ExtractInvoiceNumber(text As String) As String ' Example: Invoice #: 12345 Dim match = Regex.Match(text, "Invoice\s*#?:?\s*(\S+)") Return If(match.Success, match.Groups(1).Value, Nothing) End Function Private Function ExtractDate(text As String) As Date? ' Numeric dates Dim numericMatch = Regex.Match(text, "\b(\d{1,2}/\d{1,2}/\d{2,4})\b") If numericMatch.Success AndAlso DateTime.TryParse(numericMatch.Groups(1).Value, numericDate) Then Return DateOnly.FromDateTime(numericDate) End If ' Written-out dates Dim 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 AndAlso DateTime.TryParse(writtenMatch.Value, writtenDate) Then Return DateOnly.FromDateTime(writtenDate) End If Return Nothing End Function Private Function ExtractAmount(text As String) As Decimal? Dim match = Regex.Match(text, "\$\s*(\d+(?:\.\d{2})?)") If match.Success AndAlso Decimal.TryParse(match.Groups(1).Value, amount) Then Return amount End If Return Nothing End Function End Class Public Class Invoice Public Property InvoiceNumber As String Public Property Date As Date? Public Property TotalAmount As Decimal? Public Property RawText As String End Class Public Class OcrInput Public Sub DeNoise() ' Implementation here End Sub Public Sub Deskew() ' Implementation here End Sub End Class Public Class OcrResult Public Property Text As String End Class Public Class Ocr Public Function Read(input As OcrInput) As OcrResult ' Implementation here Return New OcrResult() End Function End Class Private Sub LoadFile(input As OcrInput, invoicePath As String) ' Implementation here End Sub Private _ocr As New Ocr() $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 玩遊戲或重看《最後的我們》。 相關文章 發表日期 2026年1月21日 OCR C# GitHub 整合:使用 IronOCR 建立文字辨識應用程式 OCR C# GitHub 教學:使用 IronOCR 在您的 GitHub 專案中實作文字辨識。包括程式碼範例和版本控制提示。 閱讀更多 更新2026年1月5日 如何 OCR PDF:使用 C# .NET OCR PDF 從掃描的文件中萃取文字 了解如何使用 IronOcr OCR PDF 並從掃描的文件中提取文字。 閱讀更多 更新2025年12月19日 C# 讀取 PDF 表單欄位:以程式方式抽取表單資料 學習如何使用 IronPDF 在 C# 中讀取 PDF 表單欄位。利用簡單的程式碼範例,從可填寫的 PDF 中萃取文字、核取方塊、下拉選項等。 閱讀更多 OCR C# GitHub 整合:使用 IronOCR 建立文字辨識應用程式如何 OCR PDF:使用 C# .NET OCR...
發表日期 2026年1月21日 OCR C# GitHub 整合:使用 IronOCR 建立文字辨識應用程式 OCR C# GitHub 教學:使用 IronOCR 在您的 GitHub 專案中實作文字辨識。包括程式碼範例和版本控制提示。 閱讀更多
更新2025年12月19日 C# 讀取 PDF 表單欄位:以程式方式抽取表單資料 學習如何使用 IronPDF 在 C# 中讀取 PDF 表單欄位。利用簡單的程式碼範例,從可填寫的 PDF 中萃取文字、核取方塊、下拉選項等。 閱讀更多