使用 IRONOCR C# 中的 OCR CodeProject Tutorial:使用 IronOCR 從影像中萃取文字 Kannapat Udonpant 更新:2026年2月27日 下載 IronOCR NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 C# 中的光學字元辨識 (OCR) 功能可讓您從.NET應用程式中的掃描文件、影像檔案和 TIFF 檔案中提取機器可讀文字。 IronOCR是一個 .NET 原生 OCR 庫,您只需安裝一個NuGet包,幾行程式碼即可開始從圖像中讀取文字——無需外部服務,無需運行時依賴,也無需按次 API 呼叫付費。 立即開始IronOCR的免費試用,並跟隨以下程式碼範例進行操作。 如何在.NET專案中安裝IronOCR ? 將 OCR 新增至.NET 10 專案的最快方法是透過NuGet套件管理器。 在專案目錄中開啟終端機並執行 dotnet CLI 命令,或使用 Visual Studio 中的套件管理器控制台: # .NET CLI dotnet add package IronOcr # Package Manager Console Install-Package IronOcr # .NET CLI dotnet add package IronOcr # Package Manager Console Install-Package IronOcr SHELL 安裝完成後, NuGet套件管理員會自動下載所有必要的組件並連接參考。 IronOCR 的目標框架為.NET Framework 4.6.2+、. .NET Core 3.1+ 以及.NET 5 至.NET 10,因此它可以在控制台應用程式、 ASP.NET Core服務、WPF 應用程式和 Azure Functions 中運行。 您無需註冊許可證金鑰即可在本機上進行測試-在套用許可證之前,輸出結果會顯示試用浮水印。 新增 using 指令,並在準備投入生產環境時,在啟動時傳遞一次金鑰: using IronOcr; // Apply license key before any OCR calls (production only) IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"; using IronOcr; // Apply license key before any OCR calls (production only) IronOcr.License.LicenseKey = "YOUR-LICENSE-KEY"; $vbLabelText $csharpLabel 有關定價和啟用詳情,請參閱IronOCR授權頁面。 如何從圖像文件中提取文字? 核心 OCR 工作流程涉及三個物件:OcrInput(輸入容器)和 OcrResult(輸出)。 下面的範例讀取一個 PNG 文件,並將識別出的文字列印到控制台。 using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); input.LoadImage("sample-document.png"); OcrResult result = ocr.Read(input); Console.WriteLine(result.Text); using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); input.LoadImage("sample-document.png"); OcrResult result = ocr.Read(input); Console.WriteLine(result.Text); $vbLabelText $csharpLabel 光纖字元辨識輸出 IronTesseract 為 Tesseract 5 引擎提供了 .NET 友善的預設設定和自動模型管理。 OcrInput.LoadImage 接受 PNG、JPEG、BMP、GIF、TIFF 和 WebP 文件,因此您很少需要在將圖像傳遞給引擎之前轉換格式。 OcrResult.Text 屬性傳回一個由所有可識別字元和換行符連接的純字串。 如需更豐富的存取資訊(例如單字邊界框、置信度分數、每段文字),請瀏覽 result.Words 和 result.Characters 集合。 值得了解的關鍵特性: result.Pages[0].Text -- 單頁文本 result.Words[n].Text 和 result.Words[n].Confidence -- 逐字準確率 (0.0 -- 1.0) result.Pages[0].Paragraphs -- 用於結構化擷取的段落分割 您也可以呼叫 ocr.ReadAsync(input) 來保持桌面或 Web 應用程式中的 UI 執行緒空閒。 如何處理掃描文件和 TIFF 文件? 在文件掃描工作流程中,多頁 TIFF 檔案很常見。 IronOCR使用 LoadImageFrames 處理它們,這樣您就可以精確地選擇要處理的幀(頁面)——當您只需要大型存檔的子集時非常有用。 using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); int[] pageIndices = { 0, 1, 2 }; input.LoadImageFrames("scanned-documents.tiff", pageIndices); // Correct skew and remove noise before reading input.Deskew(); input.DeNoise(); OcrResult result = ocr.Read(input); foreach (var page in result.Pages) { Console.WriteLine($"Page {page.PageNumber}:"); Console.WriteLine(page.Text); } using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); int[] pageIndices = { 0, 1, 2 }; input.LoadImageFrames("scanned-documents.tiff", pageIndices); // Correct skew and remove noise before reading input.Deskew(); input.DeNoise(); OcrResult result = ocr.Read(input); foreach (var page in result.Pages) { Console.WriteLine($"Page {page.PageNumber}:"); Console.WriteLine(page.Text); } $vbLabelText $csharpLabel 從多頁 TIFF 檔案中提取 OCR 輸出 Deskew 旋轉影像以校正平板掃描器引入的任何傾斜。 DeNoise 可去除乾擾 Tesseract 引擎的斑點和 JPEG 偽影。這兩個預處理濾波器結合使用,可顯著提高低品質掃描影像的辨識準確率。 針對難以辨認的來源資料,可使用其他 OcrInput 過濾器: input.Sharpen() -- 提高模糊影像的邊緣對比度 input.Binarize() -- 轉換為黑白,以獲得傳真品質的文檔 input.Scale(200) -- 放大小圖像以獲得更好的字元分離效果 input.Rotate(90) -- 修正旋轉的文件方向 有關預處理選項及其應用時機的完整列表,請參閱IronOCR影像濾鏡指南。 如何設定 OCR 的語言支援? IronOCR預設讀取英文文字。 若要處理其他語言的文檔,請安裝相符的語言NuGet包,並在 IronTesseract 實例上設定 Language 屬性。 dotnet add package IronOcr.Languages.German dotnet add package IronOcr.Languages.French dotnet add package IronOcr.Languages.Japanese dotnet add package IronOcr.Languages.German dotnet add package IronOcr.Languages.French dotnet add package IronOcr.Languages.Japanese SHELL 然後配置引擎,對於雙語文檔,添加第二種語言: using IronOcr; using IronOcr.Languages; var ocr = new IronTesseract(); ocr.Language = OcrLanguage.German; // For bilingual documents (e.g. Canadian forms, EU directives) ocr.AddSecondaryLanguage(OcrLanguage.French); using var input = new OcrInput(); input.LoadImage("german-invoice.png"); OcrResult result = ocr.Read(input); Console.WriteLine(result.Text); using IronOcr; using IronOcr.Languages; var ocr = new IronTesseract(); ocr.Language = OcrLanguage.German; // For bilingual documents (e.g. Canadian forms, EU directives) ocr.AddSecondaryLanguage(OcrLanguage.French); using var input = new OcrInput(); input.LoadImage("german-invoice.png"); OcrResult result = ocr.Read(input); Console.WriteLine(result.Text); $vbLabelText $csharpLabel IronOCR支援超過 125 種語言,每種語言都以單獨的輕量級NuGet包的形式分發。 這樣可以保持生產二進位檔案的大小—只包含應用程式實際需要的語言資料。 當您呼叫 AddSecondaryLanguage 時,引擎會在辨識過程中融合主要語言模型和次要語言模型。 如何處理 OCR 錯誤並提高識別結果? 生產應用需要針對OCR流程進行錯誤處理。影像品質問題、檔案缺失或格式不支援都可能導致異常。 將呼叫包裹在 try/catch 區塊中,可以得到一個清晰的恢復路徑。 using IronOcr; var ocr = new IronTesseract(); ocr.Language = OcrLanguage.English; try { using var input = new OcrInput(); input.LoadImage("document.png"); input.DeNoise(); input.Deskew(); OcrResult result = ocr.Read(input); if (result.Text.Length > 0) { Console.WriteLine("Recognised text:"); Console.WriteLine(result.Text); } else { Console.WriteLine("No text was detected in the image."); } } catch (Exception ex) { Console.WriteLine($"OCR error: {ex.Message}"); } using IronOcr; var ocr = new IronTesseract(); ocr.Language = OcrLanguage.English; try { using var input = new OcrInput(); input.LoadImage("document.png"); input.DeNoise(); input.Deskew(); OcrResult result = ocr.Read(input); if (result.Text.Length > 0) { Console.WriteLine("Recognised text:"); Console.WriteLine(result.Text); } else { Console.WriteLine("No text was detected in the image."); } } catch (Exception ex) { Console.WriteLine($"OCR error: {ex.Message}"); } $vbLabelText $csharpLabel 以下幾個附加設定有助於降低準確率: ocr.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto -- 讓 Tesseract 自動選擇單列、多列和單字佈局 ocr.Configuration.ReadBarCodes = false -- 如果您正在處理純文字文件並希望提高吞吐量,請停用條碼檢測。 ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5 -- 確保您使用最快的可用引擎 對於欄位位置可預測的結構化表單,請使用基於區域的 OCR僅讀取重要區域: using IronOcr; using IronSoftware.Drawing; var ocr = new IronTesseract(); using var input = new OcrInput(); var region = new CropRectangle(x: 50, y: 200, width: 600, height: 100); input.LoadImage("form.png", region); OcrResult result = ocr.Read(input); Console.WriteLine(result.Text); using IronOcr; using IronSoftware.Drawing; var ocr = new IronTesseract(); using var input = new OcrInput(); var region = new CropRectangle(x: 50, y: 200, width: 600, height: 100); input.LoadImage("form.png", region); OcrResult result = ocr.Read(input); Console.WriteLine(result.Text); $vbLabelText $csharpLabel 將辨識範圍限制在裁切矩形區域內,可減少大影像處理時間高達 90%。 此技術非常適合用於提取發票號碼、讀取表單欄位和掃描身分證件。 更多詳情請參閱區域 OCR 使用指南。 如何從識別的文本創建可搜尋的 PDF? 將掃描影像存檔轉換為可搜尋的 PDF 檔案是 OCR 最有價值的應用案例之一。 生成的檔案保留了原始的視覺外觀,同時嵌入了一個不可見的文字層,PDF 檢視器、搜尋引擎和螢幕閱讀器可以對其進行索引。 using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); input.Title = "Quarterly Report Q1 2026"; input.LoadImage("page1.png"); input.LoadImage("page2.png"); input.LoadImage("page3.png"); OcrResult result = ocr.Read(input); result.SaveAsSearchablePdf("searchable-output.pdf"); Console.WriteLine("Searchable PDF created."); Console.WriteLine($"Pages processed: {result.Pages.Count}"); using IronOcr; var ocr = new IronTesseract(); using var input = new OcrInput(); input.Title = "Quarterly Report Q1 2026"; input.LoadImage("page1.png"); input.LoadImage("page2.png"); input.LoadImage("page3.png"); OcrResult result = ocr.Read(input); result.SaveAsSearchablePdf("searchable-output.pdf"); Console.WriteLine("Searchable PDF created."); Console.WriteLine($"Pages processed: {result.Pages.Count}"); $vbLabelText $csharpLabel 輸出可搜尋的 PDF 文檔 SaveAsSearchablePdf 會產生一個 PDF/A 相容的文件,其中每個辨識出的單字都放置在原始影像的精確像素座標處。 Adobe Acrobat、macOS 上的預覽程式和 Foxit Reader 都支援在產生這些檔案後立即進行全文搜尋。 對於基於 Web 的文件檢視器或下游 NLP 管道,請改用 result.SaveAsHocrFile("output.hocr")。 hOCR 格式是一種開放的 XML 標準,它將每個單字的邊界框與文字一起編碼,從而實現用戶端搜尋高亮顯示和單字級輔助功能註釋。 OcrResult 也提供其他輸出格式: result.SaveAsHocrFile("output.hocr") -- 帶有位置資料的 hOCR XML result.ToXDocument() -- 程式化處理的 LINQ 可查詢 XDocument result.Pages[0].Text -- 流式管道的每頁純文本 對於已經與IronPDF配合使用的應用程序,您可以將 OcrResult 直接匯入 PDF 生成工作流程,在單一.NET進程中將 OCR 提取與 PDF 編輯結合。 如何解讀條碼和文字? IronOCR可以讀取嵌入在與印刷文字相同影像中的條碼和二維碼,無需執行單獨的條碼庫。 透過一個配置屬性啟用該功能: using IronOcr; var ocr = new IronTesseract(); ocr.Configuration.ReadBarCodes = true; using var input = new OcrInput(); input.LoadImage("shipping-label.png"); OcrResult result = ocr.Read(input); Console.WriteLine("Text:"); Console.WriteLine(result.Text); Console.WriteLine("Barcodes:"); foreach (var barcode in result.Barcodes) { Console.WriteLine($" {barcode.Format}: {barcode.Value}"); } using IronOcr; var ocr = new IronTesseract(); ocr.Configuration.ReadBarCodes = true; using var input = new OcrInput(); input.LoadImage("shipping-label.png"); OcrResult result = ocr.Read(input); Console.WriteLine("Text:"); Console.WriteLine(result.Text); Console.WriteLine("Barcodes:"); foreach (var barcode in result.Barcodes) { Console.WriteLine($" {barcode.Format}: {barcode.Value}"); } $vbLabelText $csharpLabel 支援的條碼格式包括 Code 128、Code 39、EAN-13、EAN-8、UPC-A、UPC-E、PDF417、Data Matrix 和 QR 碼。 詳細資訊請參閱IronOCR條碼讀取指南。 這項功能在物流、醫療保健和零售應用中尤其有用,因為運輸標籤、病人腕帶和產品標籤都包含人可讀文字和機器可讀條碼。 如何將IronOCR與其他.NET OCR 選項進行比較? 開發人員在評估.NET的 OCR 程式庫時通常會考慮IronOCR、Tesseract .NET以及 Google Cloud Vision 或 Azure電腦視覺 等雲端服務。 下表總結了主要區別: 基於關鍵開發人員標準的.NET OCR 選項比較 標準 IronOCR Tesseract.NET Azure電腦視覺 部署 本機部署或雲端部署,無需外部呼叫 本地部署 僅限雲端,需上網連接 安裝 單一NuGet包 多個軟體包 + 原生二進位文件 SDK + Azure 訂閱 語言包 透過NuGet包提供 125 多個包 手動 tessdata 下載 由 Azure 管理 可搜尋的 PDF 輸出 內建一個方法調用 不包含 不包含 影像預處理 12+ 內建過濾器 需要手動預處理 自動(伺服器端) 定價模式 一次永久許可 開源(Apache 2.0) 按通話次數計費 Tesseract是由 Google 維護的開源項目,它為IronOCR和 Tesseract .NET提供底層技術支援。 IronOCR增加了 .NET 慣用的打包方式、自動模型管理以及原始 Tesseract 綁定所缺乏的生產輸出功能(可搜尋的 PDF、hOCR 匯出)。 Azure 電腦視覺提供最先進的雲端精確度,但引入了網路延遲和每次呼叫成本,不適合高容量或離線工作流程。 對於資料隱私法規禁止將文件傳送到外部服務的情況(例如醫療記錄、法律文件、財務報表),像IronOCR這樣的本地庫是合適的選擇。 下一步計劃是什麼? 現在,您已具備為任何.NET 10 應用程式新增 OCR 的基本建置模組:透過NuGet安裝、基本影像到文字擷取、多頁 TIFF 處理、語言配置、錯誤處理、基於區域的讀取、條碼檢測和可搜尋的 PDF 產生。 如需深入了解,請瀏覽以下IronOCR資源: IronOCR文件首頁-完整的 API 參考和功能指南。 影像濾鏡教學-所有預處理濾鏡的詳細指南 條碼讀取指南-二維碼和線性條碼及文本 -區域 OCR 使用指南-基於作物的表單和 ID 識別 -語言參考-- 超過 125 種支援語言的完整列表 API 參考——所有類別、方法和屬性 有關許可問題或在生產環境中部署IronOCR ,請造訪IronOCR許可頁面。 免費試用授權可在評估期間移除輸出浮水印, Iron Software 的支援團隊可解答任何程度的技術問題。 立即開始在您的項目中使用 IronOCR 並免費試用。 第一步: 免費啟動 常見問題解答 什麼是OCR?它如何使C#開發人員受益? OCR,即光學字符識別,將掃描文檔、PDF或圖像轉換為可編輯和可搜索的數據。對於C#開發者,OCR簡化了文件處理,使應用程序能夠從圖像和掃描文檔中提取文字,提高數據的可訪問性和可用性。 如何在C#項目中實現OCR? 在C#項目中實現OCR的方法是安裝IronOCR NuGet包,創建一個IronTesseract實例,將圖像加載到OcrInput中,並調用Read方法。返回的OcrResult包含提取出的文字和每個詞的位置數據。 IronOCR支持哪些图像格式? IronOCR支持PNG、JPEG、BMP、GIF、TIFF和WebP圖像格式。這樣您可以處理大多數常見圖像類型,而無需在處理前轉換文件。 IronOCR 可以處理多頁 TIFF 檔案嗎? 是的,IronOCR可以處理多頁TIFF文件。使用LoadImageFrames及頁索引數組處理特定的框架,並迭代result.Pages以訪問每頁文字。 是否可以使用 IronOCR 從圖像的特定區域提取文字? 是的,通過將CropRectangle傳遞給LoadImage來限制OCR到定義的區域。這大大縮短了處理時間,對於提取表單、發票和身份證件中的特定字段非常有用。 IronOCR是否支援不同語言的文字擷取? IronOCR支持超過125種語言,每種語言均可作為單獨的NuGet包使用。設置IronTesseract上的Language屬性,並調用AddSecondaryLanguage用於雙語文件。 與原始的Tesseract.NET相比,IronOCR有哪些優勢? IronOCR在Tesseract引擎之上增加了.NET慣用的打包、語言模型自動管理、內置圖像預處理過濾器、可搜尋的PDF輸出和hOCR導出,這些功能都可以通過單個NuGet包訪問,無需手動管理原生二進制文件。 IronOCR是如何提高文字辨識準確率的? IronOCR提供去斜、去噪、銳化、二值化、縮放和旋轉等預處理過濾器,在Tesseract引擎處理圖像之前糾正常見的掃描缺陷,提高低質量源材料的識別精確度。 IronOCR 能讀取條形碼和 QR 碼嗎? 是的,設置ocr.Configuration.ReadBarCodes = true以檢測條形碼和QR碼,同時在同一圖像中獲取文字。結果在OcrResult.Barcodes中提供,包含格式類型和解碼值。 IronOCR在C#應用程序中的常見使用案例有哪些? IronOCR用於文件管理系統、發票和收據數據提取、從掃描存檔生成可搜尋的PDF、表單字段讀取、運單標籤處理、醫療記錄數位化,以及無障礙工具。 Kannapat Udonpant 立即與工程團隊聊天 軟體工程師 在成為軟件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人實验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因為他直接向编写大部分 IronPDF 使用的代碼的開發者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代碼或文檔時,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。 相關文章 發表日期 2026年3月8日 使用 C# 建立一個能真正提取有用資料的收據 OCR API 使用 IronOCR 在 C# 中建置收據 OCR API。透過附帶程式碼範例的逐步教學,學習如何從收據影像中精準且在地端提取結構化資料。 閱讀更多 更新2026年3月1日 OCR C# GitHub:使用 IronOCR 進行文字辨識 OCR C# GitHub 教學:使用 IronOCR 在您的 GitHub 專案中實現文本識別。包括程式碼範例和版本控制技巧。 閱讀更多 更新2026年3月1日 .NET OCR SDK:適用於 C# 的文字辨識函式庫 使用 IronOCR 的 .NET SDK 創建強大的 OCR 解決方案。簡單的 API,企業功能,跨平台支援的文檔處理應用。 閱讀更多 如何在 C# GitHub 專案中使用 IronOCR 實作 OCR如何使用 IronOCR 建立 .NET OCR SDK
發表日期 2026年3月8日 使用 C# 建立一個能真正提取有用資料的收據 OCR API 使用 IronOCR 在 C# 中建置收據 OCR API。透過附帶程式碼範例的逐步教學,學習如何從收據影像中精準且在地端提取結構化資料。 閱讀更多
更新2026年3月1日 OCR C# GitHub:使用 IronOCR 進行文字辨識 OCR C# GitHub 教學:使用 IronOCR 在您的 GitHub 專案中實現文本識別。包括程式碼範例和版本控制技巧。 閱讀更多
更新2026年3月1日 .NET OCR SDK:適用於 C# 的文字辨識函式庫 使用 IronOCR 的 .NET SDK 創建強大的 OCR 解決方案。簡單的 API,企業功能,跨平台支援的文檔處理應用。 閱讀更多