IronOCR 開始使用 C# PDF OCR 如何使用 IronOCR 建置 Azure OCR 服務 Curtis Chau 更新:2025年7月2日 下載 IronOCR NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 This article was translated from English: Does it need improvement? Translated View the article in English Iron Software 創建了一個 OCR(光學字元辨識)庫,解決了 Azure OCR 整合中的互通性問題。 對於開發人員來說,在 Azure 上使用 OCR 程式庫一直有點麻煩。 IronOCR 可以解決這個問題以及許多其他 OCR 難題。 IronOCR 為 Microsoft Azure 提供的功能 IronOCR 包含以下功能,可用於在 Microsoft Azure 上建置 OCR 服務: 將 PDF 文件轉換為可搜尋文檔,以便輕鬆提取文字。 透過從圖像中提取文本,將圖像轉換為可搜尋的文檔 可讀取條碼和二維碼 極高的準確性 可在本地運行,無需 SaaS(軟體即服務),SaaS 是一種軟體分發模式,其中雲端提供者(例如 Microsoft Azure)託管各種應用程序,並將這些應用程式提供給最終用戶。 閃電般的速度 讓我們來看看最好的 OCR 引擎——Iron Software 的 IronOCR——是如何讓開發人員更容易從任何輸入文件中提取文字的。 讓我們開始使用 Azure OCR 服務。 要開始使用該範例,我們需要先安裝 IronOCR。 使用 C# 建立一個新的控制台應用程式。 透過 NuGet 安裝 IronOCR,可透過輸入: Install-Package IronOcr或選擇"管理 NuGet 套件"並搜尋 IronOCR。 如下圖所示。 編輯Program.cs文件,使其內容如下: 我們匯入 IronOcr 命名空間,利用其 OCR 功能讀取和提取 PDF 檔案的內容。 我們建立一個新的 IronTesseract 對象,以便從圖像中提取文字。 using IronOcr; using System; namespace IronOCR_Ex { class Program { static void Main(string[] args) { var ocr = new IronTesseract(); using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var result = ocr.Read(Input); // Read PNG image File Console.WriteLine(result.Text); // Output extracted text to console Console.ReadLine(); } } } } using IronOcr; using System; namespace IronOCR_Ex { class Program { static void Main(string[] args) { var ocr = new IronTesseract(); using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var result = ocr.Read(Input); // Read PNG image File Console.WriteLine(result.Text); // Output extracted text to console Console.ReadLine(); } } } } Imports IronOcr Imports System Namespace IronOCR_Ex Friend Class Program Shared Sub Main(ByVal args() As String) Dim ocr = New IronTesseract() Using Input = New OcrInput("..\Images\Purgatory.PNG") Dim result = ocr.Read(Input) ' Read PNG image File Console.WriteLine(result.Text) ' Output extracted text to console Console.ReadLine() End Using End Sub End Class End Namespace $vbLabelText $csharpLabel 接下來,我們開啟名為 Purgatory.PNG 的圖片。 這張圖出自但丁的《神曲》——我最喜歡的書之一。 這張圖片看起來像下一張圖片。 圖 2 - 使用 IronOCR 的光學字元辨識功能擷取的文本 從上述輸入影像文字中提取出上述文字後的輸出。 提取的文本 圖 3 - 擷取的文本 讓我們對 PDF 文件執行相同的操作。 PDF 文件包含與圖 2 相同的待提取文字。 唯一的區別是我們將使用PDF文件而不是圖像。 請輸入以下驗證碼: var OCR = new IronTesseract(); using (var input = new OcrInput()) { input.Title = "Divine Comedy - Purgatory"; // Give title to input document // Supply optional password and name of document input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante"); var result = OCR.Read(input); // Read the input file result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); } var OCR = new IronTesseract(); using (var input = new OcrInput()) { input.Title = "Divine Comedy - Purgatory"; // Give title to input document // Supply optional password and name of document input.AddPdf("..\\Documents\\Purgatorio.pdf", "dante"); var result = OCR.Read(input); // Read the input file result.SaveAsSearchablePdf("SearchablePDFDocument.pdf"); } Dim OCR = New IronTesseract() Using input = New OcrInput() input.Title = "Divine Comedy - Purgatory" ' Give title to input document ' Supply optional password and name of document input.AddPdf("..\Documents\Purgatorio.pdf", "dante") Dim result = OCR.Read(input) ' Read the input file result.SaveAsSearchablePdf("SearchablePDFDocument.pdf") End Using $vbLabelText $csharpLabel 這段程式碼與先前從圖像中提取文字的程式碼幾乎相同。 這裡我們使用OcrInput方法來讀取目前的 PDF 文檔,在本例中為:Purgatorio.pdf。 如果 PDF 文件中包含元數據,例如標題或密碼,我們也可以將其輸入。 結果會儲存為可搜尋的 PDF 文檔,我們可以在其中搜尋文字。 注意:如果 PDF 檔案過大,可能會拋出異常。 Windows 應用程式就介紹到這裡吧; 讓我們來看看如何將 OCR 與 Microsoft Azure 結合使用。 IronOCR 的優點在於它可以作為微服務架構中的 Azure 函數與 Microsoft Azure 完美配合。 以下是一個與 IronOCR 配合使用的 Microsoft Azure 函數的簡要範例。此 Microsoft Azure 函數用於從圖像中提取文字。 public static class OCRFunction { public static HttpClient hcClient = new HttpClient(); [FunctionName("IronOCRFunction_EX")] public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext) { var URI = hrRequest.Query["image"]; var saStream = await hcClient.GetStreamAsync(URI); var ocr = new IronTesseract(); using (var inputOCR = new OcrInput(saStream)) { var outputOCR = ocr.Read(inputOCR); return new OkObjectResult(outputOCR.Text); } } } public static class OCRFunction { public static HttpClient hcClient = new HttpClient(); [FunctionName("IronOCRFunction_EX")] public static async Task<IActionResult> Run([HttpTrigger] HttpRequest hrRequest, ExecutionContext ecContext) { var URI = hrRequest.Query["image"]; var saStream = await hcClient.GetStreamAsync(URI); var ocr = new IronTesseract(); using (var inputOCR = new OcrInput(saStream)) { var outputOCR = ocr.Read(inputOCR); return new OkObjectResult(outputOCR.Text); } } } Public Module OCRFunction Public hcClient As New HttpClient() <FunctionName("IronOCRFunction_EX")> Public Async Function Run(<HttpTrigger> ByVal hrRequest As HttpRequest, ByVal ecContext As ExecutionContext) As Task(Of IActionResult) Dim URI = hrRequest.Query("image") Dim saStream = Await hcClient.GetStreamAsync(URI) Dim ocr = New IronTesseract() Using inputOCR = New OcrInput(saStream) Dim outputOCR = ocr.Read(inputOCR) Return New OkObjectResult(outputOCR.Text) End Using End Function End Module $vbLabelText $csharpLabel 這會將函數接收到的圖像直接提供給 OCR 引擎,以輸出提取的文字。 以下是微軟對 Microsoft Azure 的簡要概述: Microsoft Azure 微服務是一種建置應用程式的架構方法,其中每個核心功能或服務都是獨立建置和部署的。 微服務架構是分散式且鬆散耦合的,因此一個元件的故障不會導致整個應用程式崩潰。獨立的元件協同工作,並透過定義完善的 API 契約進行通訊。 建立微服務應用程序,以滿足快速變化的業務需求,並更快地將新功能推向市場。 IronOCR 與 .NET 或 Microsoft Azure 結合使用時也具有以下一些特性: 能夠對幾乎任何文件、影像或 PDF 執行 OCR 操作。 處理 OCR 輸入的速度極快 極高的準確性 讀取條碼與二維碼 本地運行,無需 SaaS 服務 可以將 PDF 和圖像轉換為可搜尋的文檔 微軟認知服務提供的 Azure OCR 的絕佳替代方案 用於提高OCR性能的影像過濾器 OcrInput.Rotate - 將影像順時針旋轉若干度。逆時針旋轉請使用負數。 OcrInput.Binarize() - 此影像濾鏡將每個像素變為黑色或白色,沒有中間色。 這提高了OCR識別性能。 OcrInput.ToGrayScale() - 此影像濾鏡將每個像素轉換為灰階陰影。 這樣可以提高OCR辨識速度。 OcrInput.Contrast() - 自動增加對比。 此濾鏡可提高低對比度掃描影像的 OCR 速度和準確性。 OcrInput.DeNoise() - 去除數位雜訊。此濾鏡僅套用於預期輸入文件中存在雜訊的情況。 OcrInput.Invert() - 反轉所有顏色。 OcrInput.Dilate() - 膨脹操作會在影像中任何物件的邊界上新增像素。 OcrInput.Erode() - 腐蝕操作會移除物件邊界上的像素。 OcrInput.Deskew() - 將影像旋轉,使其方向正確且正交。 這對於 OCR 非常有用,因為 Tesseract 對傾斜掃描的容差可以低至 5 度。 OcrInput.DeepCleanBackgroundNoise() - 去除嚴重的背景噪音。 OcrInput.EnhanceResolution - 提高低品質影像的解析度。 速度性能 以下是一個例子: var OCR = new IronTesseract(); OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\"; OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto; OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5; OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly; OCR.Language = OcrLanguage.EnglishFast; using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var Result = OCR.Read(Input); Console.WriteLine(Result.Text); } var OCR = new IronTesseract(); OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\\"; OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto; OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5; OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly; OCR.Language = OcrLanguage.EnglishFast; using (var Input = new OcrInput("..\\Images\\Purgatory.PNG")) { var Result = OCR.Read(Input); Console.WriteLine(Result.Text); } Dim OCR = New IronTesseract() OCR.Configuration.BlackListCharacters = "~`$#^*_}{][|\" OCR.Configuration.PageSegmentationMode = TesseractPageSegmentationMode.Auto OCR.Configuration.TesseractVersion = TesseractVersion.Tesseract5 OCR.Configuration.EngineMode = TesseractEngineMode.LstmOnly OCR.Language = OcrLanguage.EnglishFast Using Input = New OcrInput("..\Images\Purgatory.PNG") Dim Result = OCR.Read(Input) Console.WriteLine(Result.Text) End Using $vbLabelText $csharpLabel 定價和授權選項 基本上有三個付費許可證級別,都是一次性購買,終身使用。 是的,這些資源可以免費用於開發目的。 更多資訊 更多資源請點選以下連結: 資源 API 參考文件請見此處: API 參考文檔 IronOCR 產品支援資訊請造訪:支援 聯絡 Iron Software:聯絡資訊 IronOCR 為在 Azure 和其他系統上執行 OCR 的 .NET 應用程式提供功能 IronOCR 支援 125 種國際語言。 每種語言均提供快速、標準和最佳三種品質版本。 部分可用的語言包包括: 保加利亞語 亞美尼亞語 克羅埃西亞語 南非荷蘭語 丹麥語 捷克語 菲律賓人 芬蘭語 法語 德語 還有更多語言包可供選擇,要查看它們,請點擊以下連結。 IronOCR 語言包 它在 .NET 中開箱即用。 支援 Xamarin 支持 Mono 支援 Microsoft Azure 支援 Microsoft Azure 上的 Docker 支援 PDF 文件 支援多幀 TIFF 格式 支援所有主流圖像格式 支援以下 .NET Framework: .NET Framework 4.5 及更高版本 .NET Standard 2 .NET Core 2 .NET Core 3 .NET Core 5 即使沒有安裝 Tesseract(一個支援 Unicode 和 100 多種語言的開源 OCR 引擎),IronOCR 也能正常運作。 與 Tesseract 相比,精度有所提升。 速度比 Tesseract 更快。 修正低品質的文件或文件掃描件。 校正低品質、傾斜的文件或文件掃描件。 什麼是光學字元辨識(OCR)? 根據維基百科的定義:光學字元辨識是將列印文字的影像(無論是掃描文件、文件照片、場景照片或疊加在影像上的字幕文字)電子或機械地轉換為機器編碼文字的過程。 OCR是光學字元辨識的縮寫。 光學字元辨識主要有四種類型: OCR - 光學字元識別,目標是從輸入文件中識別打字文本,一次識別一個字元或字形(一組約定的符號中的基本符號,例如不同字體中的"a")。 OWR - 光學單字識別,目標是從輸入文件中逐一識別列印文字。 ICR - 智慧字元識別,目標是印刷文本,例如印刷體(不與其他字母連接的字元)和草書文本,一次識別一個字元或字形。 IWR - 智慧單字識別,針對草書文字。 常見問題解答 如何在 Azure 上的 C# 應用程序中集成 OCR 功能? 您可以通過創建一個新的控制台應用程式並通過 NuGet 安裝 IronOCR 來在 Azure 上的 C# 應用程式中集成 OCR 功能。使用指令 Install-Package IronOcr 或在 NuGet 套件管理器中搜尋 IronOCR。 使用 IronOCR 比 Azure 的本機 OCR 服務有何優勢? IronOCR 比 Azure 的本地 OCR 服務提供了多項優勢,包括提高精確度、更快的處理速度以及無需依賴 SaaS 的本地運行能力。它還支持多種語言,並提供圖像濾波器來提升 OCR 性能。 如何設置一個 Microsoft Azure 功能以進行 OCR 文本提取? 若要設置一個 Microsoft Azure 功能以進行 OCR 文本提取,您可以使用 IronOCR 創建一個從圖像中提取文本的功能。這是微服務架構的一部分,允許您將 OCR 功能無縫集成到您的 Azure 應用程序中。 IronOCR 能否處理多語言 OCR 處理? 是的,IronOCR 支持 125 種國際語言,每種語言均提供快速、標準和最佳質量,為全球應用提供了靈活性。 IronOCR 提供哪些圖像處理選項來提高 OCR 的正確性? IronOCR 提供多種圖像處理選項,例如旋轉、二值化、灰度化、對比度、去噪、反相、膨脹、腐蝕、自動校正、背景雜訊深層清理和提升分辨率,以提高 OCR 結果的準確性和可靠性。 IronOCR 是否與各種 .NET 框架兼容以在 Azure 上部署? 是的,IronOCR 與 .NET Framework 4.5 及更高版本、.NET Standard 2、.NET Core 2、.NET Core 3 和 .NET Core 5 兼容。它還支持 Xamarin 和 Mono,並可通過 Docker 在 Microsoft Azure 上部署。 在 Azure 上運行 IronOCR 是否需要任何額外的軟體? 在 Azure 上運行 IronOCR 不需要任何額外的軟體。它可以獨立運作,並提供比 Tesseract 無需其安裝更高的精確度與速度。 IronOCR 提供哪些授權選項? IronOCR 提供三種基於一次性購買、終身許可模式的付費許可層級。這些許可證在開發用途上是免費的,提供靈活的專案擴展。 如何使用 IronOCR 將圖像和 PDF 轉換為可搜索的文檔? IronOCR 允許您利用其 OCR 能力將圖像和 PDF 轉換為可搜索的文檔,提取並識別文本,使其易於搜索和編目。 使用 IronOCR 閱讀條形碼和 QR 代碼的過程是什麼? IronOCR 能夠使用其內建功能來掃描和提取這些代碼中的數據,從而促進它們與 Azure 上的 C# 應用的集成。 Curtis Chau 立即與工程團隊聊天 技術撰稿人 Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。 準備好開始了嗎? Nuget 下載 5,384,824 | 版本: 2026.2 剛剛發布 免費 NuGet 下載 總下載量:5,384,824 查看許可證