How to Build an Azure OCR Service using IronOCR

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 轉換為可搜索的文檔,以便輕鬆提取文本
  • 通過從圖像中提取文本,將圖像轉換為可搜索的文檔
  • 讀取條形碼以及 QR 碼
  • 卓越的準確性
  • 本地運行,不需要 SaaS(軟件即服務),這是一種軟件分發模式,例如 Microsoft Azure 等雲提供商托管各種應用程序並將這些應用程序提供給最終用戶。
  • 閃電般的速度

讓我們來看看如何讓開發者更輕鬆地從任何輸入文檔中提取文本的最佳 OCR 引擎 Iron Software 的 IronOCR。

讓我們開始使用我們的 Azure OCR 服務

為了開始使用示例,我們需要先安裝 IronOCR。

  1. 使用 C# 創建一個新的控制台應用程序。
  2. 通過輸入:Install-Package IronOcr 或選擇管理 NuGet 包並搜索 IronOCR 安裝 IronOCR。 如下所示。
  3. 編輯您的 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
  1. 接下來,我們打開一個名為 Purgatory.PNG 的圖像。 這張圖像是但丁的《神曲》的組成部分——我最喜歡的書之一。 這張圖像看起來像下一張圖像。

使用 IronOCR 的光學字符讀取能力提取的文本

圖二 - 使用 IronOCR 的光學字符讀取能力提取的文本

  1. 在從上述輸入圖像文本中提取上述文本後的輸出。

提取的文本

圖三 - 提取的文本

  1. 讓我們對 PDF 文檔做同樣的事情。 PDF 文檔包含與圖二相同的提取文本。

唯一不同的是我們將使用 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 文件過大,可能會引發異常。

  1. 足夠的 Windows 應用程序; 讓我們看看如何在 Microsoft Azure 中使用 OCR。

IronOCR 的妙處在於它在 Microsoft Azure 中作為 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 關於 Microsoft Azure 的快速回顧:

Microsoft Azure 微服務是一種構建應用程序的架構方法,其中每個核心功能或服務都是獨立構建和部署的。 微服務架構是分佈式和鬆散耦合的,因此一個組件的故障不會破壞整個應用程序。獨立組件共同運作,並與具體定義的 API 合同進行通信。 構建微服務應用程序以滿足迅速變化的業務需求,並更快地將新功能推向市場。

IronOCR 與 .NET 或 Microsoft Azure 的其他幾個功能包括:

  • 幾乎可以對任何文件、圖像或 PDF 執行 OCR。
  • 閃電般的速度 in processing OCR input
  • 卓越的準確性
  • 讀取條形碼和 QR 碼
  • 本地運行,不需要 SaaS
  • 可將 PDF 和圖像轉換為可搜索的文檔
  • 是 Microsoft 認知服務的 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 文檔
    • 支持多幀 Tiffs
    • 支持所有主要圖像格式
  • 以下 .NET 框架受到支持:
    • .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 功能?

您可以透過在 Azure 上建立新的控制台應用程序,並透過 NuGet 安裝 IronOCR,將 OCR 功能整合到 C# 應用程式中。可以使用指令Install-Package IronOcr ,也可以在 NuGet 套件管理器中搜尋 IronOCR。

與 Azure 原生 OCR 服務相比,使用 IronOCR 有哪些優點?

IronOCR 相較於 Azure 原生 OCR 服務具有多項優勢,包括更高的準確率、更快的處理速度以及無需 SaaS 即可在本地運行。此外,它還支援多種語言,並提供影像濾鏡以增強 OCR 性能。

如何設定用於 OCR 文字擷取的 Microsoft Azure 函數?

若要設定用於 OCR 文字擷取的 Microsoft Azure 函數,您可以使用 IronOCR 建立一個從映像中擷取文字的函數。這是微服務架構的一部分,可讓您將 OCR 功能無縫整合到 Azure 應用程式中。

IronOCR能否處理多種語言的OCR辨識?

是的,IronOCR 支援 125 種國際語言,每種語言均提供快速、標準和最佳質量,使其適用於全球應用。

IronOCR 提供哪些影像處理選項來提高 OCR 準確率?

IronOCR 提供各種影像處理選項,例如旋轉、二值化、灰度化、對比度、去雜訊、反轉、膨脹、腐蝕、傾斜校正、深度清除背景雜訊和增強分辨率,以提高 OCR 結果的準確性和可靠性。

IronOCR 是否相容於各種用於 Azure 部署的 .NET 框架?

是的,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 讀取條碼和二維碼的流程是什麼?

IronOCR 可以利用其內建功能讀取條碼和二維碼,掃描並提取這些程式碼中的數據,從而方便將其整合到 Azure 上的 C# 應用程式中。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

準備好開始了嗎?
Nuget 下載 5,044,537 | 版本: 2025.11 剛剛發布