如何使用 IronOCR 建置 Azure OCR 服務

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。

  1. 使用 C# 建立一個新的控制台應用程式。
  2. 透過 NuGet 安裝 IronOCR,可透過輸入: Install-Package IronOcr或選擇"管理 NuGet 套件"並搜尋 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 的光學字元辨識功能提取的文本

圖 2 - 使用 IronOCR 的光學字元辨識功能擷取的文本

  1. 從上述輸入影像文字中提取出上述文字後的輸出。

提取的文本

圖 3 - 擷取的文本

  1. 讓我們對 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 檔案過大,可能會拋出異常。

  1. 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

定價和授權選項

基本上有三個付費許可證級別,都是一次性購買,終身使用。

是的,這些資源可以免費用於開發目的。

更多資訊

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 功能?

您可以在 Azure 上的 C# 應用程式中整合 OCR 功能,方法是建立新的 Console 應用程式,並透過 NuGet 安裝 IronOCR。使用指令 Install-Package IronOcr 或在 NuGet 套件管理員中搜尋 IronOCR。

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

IronOCR 相較於 Azure 的原生 OCR 服務有多項優勢,包括更高的精確度、更快的處理速度,以及可在本機執行而不需要 SaaS 的能力。它也支援多種語言,並提供影像篩選器以強化 OCR 效能。

如何設定 Microsoft Azure 功能以進行 OCR 文字擷取?

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

IronOCR 可以在 OCR 處理中處理多種語言嗎?

是的,IronOCR 支援 125 種國際語言,每種語言都有快速、標準和最佳品質可供選擇,使其成為全球應用程式的多面手。

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

IronOCR 提供多種影像處理選項,例如 Rotate、Binarize、ToGrayScale、Contrast、DeNoise、Invert、Dilate、Erode、Deskew、DeepCleanBackgroundNoise 和 EnhanceResolution,以提高 OCR 結果的準確性和可靠性。

IronOCR 是否與 Azure 部署的各種 .NET Framework 相容?

是的,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 更佳的精確度和速度,而無需安裝 Tesseract。

IronOCR 有哪些授權選項?

IronOCR 根據一次性購買、終身使用的授權模式,提供三種付費授權層級。這些授權可免費用於開發目的,提供專案擴充的彈性。

如何使用 IronOCR 將圖像和 PDF 轉換成可搜尋的文件?

IronOCR 可讓您利用其 OCR 功能將圖像和 PDF 轉換為可搜尋的文件,以擷取和辨識文字,使其容易搜尋和編入索引。

使用 IronOCR 讀取 BarCode 和 QR 碼的過程是怎樣的?

IronOCR 可利用其內建功能讀取條碼和 QR 代碼,掃描這些代碼並從中擷取資料,方便將這些代碼整合至 Azure 上的 C# 應用程式。

Curtis Chau
技術作家

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

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

準備好開始了嗎?
Nuget 下載 5,167,857 | Version: 2025.11 剛發表