如何使用 IronOCR 建立 Azure OCR 服務
Iron Software 開發了一套 OCR(光學字元辨識)函式庫,能解決 Azure OCR 整合過程中的互通性問題。 對於開發人員而言,在 Azure 上使用 OCR 函式庫向來是一項令人頭疼的任務。 IronOCR 正是解決此問題以及其他許多 OCR 痛點的方案。
Microsoft Azure 的 IronOCR 功能
IronOCR 提供以下功能,用於在 Microsoft Azure 上建置 OCR 服務:
- 將 PDF 轉為可搜尋的文件,以便輕鬆擷取文字
- 透過從圖片中擷取文字,將圖片轉為可搜尋的文件
- 可讀取 BarCode 及 QR 碼
- 卓越的準確性
- 本地運行且無需 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
- 接著,我們開啟名為 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
這段程式碼與先前用於從圖片中擷取文字的程式碼幾乎相同。
在此我們使用 OcrInput 方法讀取當前的 PDF 文件,本例中為:Purgatorio.pdf。 若 PDF 檔案中含有元資料(例如標題或密碼),我們亦可一併納入。
結果將儲存為可搜尋的 PDF 文件,我們可以在其中搜尋文字內容。
請注意,若 PDF 檔案過大,可能會引發例外狀況。
- 關於 Windows 應用程式的內容已足夠; 讓我們來看看如何在 Microsoft Azure 上使用 OCR。
IronOCR 的優點在於,它能與 Microsoft Azure 完美配合,作為微服務架構中的 Azure Function 運作。 以下是一個非常簡短的範例,展示如何使用 IronOCR 來建置 Microsoft Azure Function。此 Microsoft Azure Function 用於從圖片中擷取文字。
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
此功能會將函式接收到的影像直接傳送至 OCR 引擎,以輸出擷取的文字。
根據微軟的說明,以下是關於 Microsoft Azure 的簡要概述:
Microsoft Azure 微服務是一種應用程式建構架構,其中每個核心功能(或服務)皆獨立建置與部署。 微服務架構具有分散式與鬆耦合的特性,因此單一元件的故障不會導致整個應用程式癱瘓。獨立的元件透過明確定義的 API 合約進行協作與通訊。 建置微服務應用程式,以因應快速變化的業務需求,並更快將新功能推向市場。
IronOCR 搭配 .NET 或 Microsoft Azure 的其他功能還包括以下幾項:
- 能夠對幾乎任何檔案、圖片或 PDF 執行 OCR 處理。
- 處理 OCR 輸入時具備閃電般的速度
- 卓越的準確性
- 讀取 BarCode 與 QR 碼
- 可在本地執行,無需 SaaS 服務
- 可將 PDF 和圖片轉為可搜尋的文件
- Microsoft Cognitive Services 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
定價與授權選項
基本上共有三種付費授權方案,均採用"一次購買、終身使用"的授權原則。
是的,這些工具在開發用途下皆可免費使用。
更多資訊
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
- IronOCR 運作時無需安裝 Tesseract(一款支援 Unicode 及 100 多種語言的開源 OCR 引擎)。
- 相較於 Tesseract,準確度有所提升。
- 速度較 Tesseract 有所提升。
- 修正文件或檔案的低品質掃描結果。
- 修正文件或檔案中品質低劣且傾斜的掃描影像。
什麼是光學字元辨識(OCR)?
根據維基百科:光學字元辨識(OCR)是指將打字或印刷文字的影像,透過電子或機械方式轉換為機器可讀文字的過程,無論來源是掃描文件、文件照片、場景照片,或是疊加在影像上的字幕文字。 OCR 代表光學字元辨識。 光學字元辨識(OCR)主要分為四種類型:
- OCR - 光學字元辨識,針對輸入文件中的打字文字,一次處理一個字元或字形(指特定符號集中的基本符號,例如不同字型中的"a")。
- OWR - 光學文字辨識(Optical Word Recognition),針對輸入文件中的打字文字,一次處理一個單字。
- ICR - 智慧型字元辨識,針對印刷體文字(如不與其他字母相連的印刷字體)及連筆文字,一次處理一個字元或字形。
- IWR - 智能文字識別,專用於識別連筆文字。
常見問題
如何在 Azure 上的 C# 應用程式中整合 OCR 功能?
您可以在 Azure 上透過建立新的 Console 應用程式,並透過 NuGet 安裝 IronOCR,將 OCR 功能整合至 C# 應用程式中。請使用命令 Install-Package IronOcr,或在 NuGet 套件管理員中搜尋 IronOCR。
相較於 Azure 的原生 OCR 服務,使用 IronOCR 有哪些優勢?
相較於 Azure 的原生 OCR 服務,IronOCR 具備多項優勢,包括更高的準確度、更快的處理速度,以及無需 SaaS 即可在本地端執行的能力。它還支援多種語言,並提供影像濾鏡以提升 OCR 效能。
如何設定 Microsoft Azure Function 來進行 OCR 文字擷取?
若要設定 Microsoft Azure Function 進行 OCR 文字擷取,您可以使用 IronOCR 建立一個從圖像中擷取文字的功能。這屬於微服務架構的一部分,讓您能將 OCR 功能無縫整合至您的 Azure 應用程式中。
IronOCR 能否在 OCR 處理中支援多種語言?
是的,IronOCR 支援 125 種國際語言,每種語言皆提供「快速」、「標準」及「最佳」三種品質等級,使其能靈活應用於全球各類情境。
IronOCR 提供了哪些影像處理選項來提升 OCR 準確度?
IronOCR 提供多種影像處理選項,例如旋轉、二值化、轉為灰階、對比度調整、去噪、反轉、膨脹、蝕蝕、校正傾斜、深度清除背景噪點以及提升解析度,以提高 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,不僅無需安裝,還具備更高的準確度與處理速度。
IronOCR 提供哪些授權選項?
IronOCR 提供三種付費授權方案,均採用一次性購買、終身授權的模式。這些授權在開發用途下可免費使用,為專案擴展提供靈活性。
如何使用 IronOcr 將圖片和 PDF 轉換為可搜尋的文件?
IronOCR 透過其 OCR 功能來擷取並辨識文字,讓您能將圖片和 PDF 轉換為可搜尋的文件,使其易於搜尋和建立索引。
使用 IronOCR 讀取 BarCode 和 QR 碼的流程為何?
IronOCR 可透過其內建功能讀取 BarCode 與 QR 碼,並從中掃描及擷取資料,便於將其整合至 Azure 上的 C# 應用程式中。

