IronOCR與AWS Textract OCR的比較
什麼是OCR?
將文字圖像轉換為機器可讀的文字格式的過程稱為光學字元識別 (OCR)。 例如,如果您掃描一份表格、發票或收據,您的電腦會將掃描保存為圖像檔案。圖像檔案中的資料無法使用文字編輯器進行編輯、搜尋或計算。 但是,您可以使用OCR解決方案將圖片檔案轉換為文字文件,其內容將以文字資料的形式儲存。
在這個現代時代,大多數商業工作流程涉及從印刷媒體接收資訊。 不同的文件,如紙質表格、發票、掃描的法律文件、表格提取和列印的文字或合約,都是業務流程的一部分。 此外,將這類文件內容數位化會生成帶有隱藏文字的圖像。 圖像中的文字無法像文字文件一樣被文字處理工具處理。 OCR技術通過將文字圖像轉換為可以由其他業務軟體分析的文字資料來解決這個問題。
OCR 如何運作?
OCR引擎透過以下步驟運作:
影像獲取
在此過程中,掃描儀讀取文件並將其轉換為二進位資料。 OCR軟體識別掃描的影像,並將亮色區域分類為背景,將暗色區域分類為文字。
預處理
OCR軟體首先清理圖像並移除錯誤,以準備其資料進行讀取。
文字識別
用於文字識別的兩種主要OCR演算法型別是模式匹配和特徵提取。
模式匹配
字元圖片或字形在模式匹配過程中被單獨隔離並與先前記錄的字形進行比較。
特徵提取
透過特徵提取的過程,字形被分解成線條、封閉環、線條方向和線條連接等特徵。
後期處理
該技術在分析後將檢索到的文字資料轉換為數位文件。 某些OCR系統可以建立包含掃描文件的前後版本的註釋PDF文件。
本文將討論兩個最流行的OCR應用程式和文件庫之間的比較:
IronOCR AWS OCR Textract
IronOCR程式庫
IronOCR是一個C# .NET程式庫,提供掃描、搜尋、讀取圖片和PDF的服務。 它附帶超過125個全球語言包。 輸出是以文字、結構化資料或可搜尋的PDF形式實現的。 支援 .NET 版本如 6、5、Core、Standard 和 Framework。
IronOCR 的獨特在於能夠自動檢測並提取從非完美掃描的影像和文件中的資料。 'IronTesseract' 類別擁有最簡單易用的API。 它提供了在任何平台上已知的最先進版本的Tesseract,具有更高的速度、準確性,以及一個本地DLL和API。
IronOCR還可以從所有圖像格式中掃描條碼和QR碼,並使用最新的Tesseract 5引擎讀取文字和執行PDF掃描。
功能
- 它專門為.NET應用程式製作。 它可以支援125種不同的語言。 IronOCR支持阿拉伯語、中文、英語、芬蘭語、法語、德語、日語以及許多其他語言。 它可以校正傾斜圖像的位置並去除圖像中的噪點以獲得精確的輸出。 它在低解析度和低DPI的圖像中表現非常出色。 它可以讀取多種型別的QR Code和條碼。 它也支援GIF和TIFF格式。 它允許多個執行緒同時運行。 這是一個在其他OCR程式庫中不存在的卓越功能。 這使流程更加順暢。
- 它可以輕鬆地對PDF文件執行OCR,並使用OCR導出可搜尋的PDF文件。
現在,讓我們來看看AWS OCR。
AWS OCR Textract
Amazon 的 AWS Textract 是一種機器學習 (ML) 服務,可自動從掃描的文件中提取文字和資料。 它不僅僅是簡單的光學字元識別 (OCR),還利用深度學習技術來識別、理解和萃取表單和表格中的資料。
AWS OCR Textract使用機器學習來讀取和處理任何型別的文件,精確提取文字、表格資料和其他資料,無需人工努力。 Textract可以快速完成資料提取工作,而不需要花費幾小時或幾天的時間。 此外,您可以使用 Amazon 增強人工智慧 (AI) 新增人工審查,以監督您的模型並檢查敏感資料。
功能
檢測各類文件中的文字,包括財務報告、醫療記錄、表格和稅單。using Document Analysis API 從結構化資料的文件中提取文字、表單和表格資料。 使用Analyze Document API中的查詢功能,指定並提取文件中的資訊。
- 使用Analyze Expense API處理發票和收據。
- 處理美國簽發的身份證件,例如駕駛執照和護照。 政府,使用Analyze ID API。 可擴展的文件分析可以加速決策制定。
文章的其餘部分如下:
- 建立Visual Studio專案
- 安裝IronOCR
- 安裝 AWS OCR Textract
- PDF轉換為文字
- 圖片轉文字
- 條碼及QR碼轉換為文字
- 授權
- 結論
1. 建立 Visual Studio 專案
本教程將使用Visual Studio 2022版本,假設您已安裝它。
- 開啟 Visual Studio 2022。
- 產生一個新的.NET Core專案,然後選擇主控台應用程式。
控制台應用程式
給專案命名。 例如,TextReader。
- 最新且最穩定的.NET框架版本是6.0。我們將使用這個版本。
單擊建立按鈕,專案將被建立。
接下來,我們將逐一安裝所需的程式庫。
2. 安裝IronOCR
可以通過四種方式下載和安裝IronOCR程式庫。 如下:
- 使用 Visual Studio 的 NuGet 套件管理器。
- 通過NuGet網站直接下載。
- 通過IronOCR網頁直接下載。
- 在Visual Studio中使用命令列。
2.1. 使用 Visual Studio NuGet 管理器
Visual Studio NuGet封裝管理器可用於將IronOCR整合到C#專案中。
- 展開工具,或右鍵點擊方案總管。
- 擴展NuGet套件管理器。
- 點擊"管理方案的 NuGet 套件"或在方案總管中點擊"管理 NuGet 套件"。
管理NuGet套件
之後,將在搜尋欄中出現一個新窗口:輸入 IronOCR。 勾選右側的專案框並點擊安裝。
瀏覽IronOCR
透過使用此方法,開發者可以安裝IronOCR程式庫以及開發者選擇的任何語言包。
2.2. 通過NuGet網站直接下載
您可以按照以下說明,從NuGet網站直接下載IronOCR:
- 瀏覽連結 "https://www.nuget.org/packages/IronOcr/"。
- 從右側選單中選擇下載套件選項。
- 雙擊下載包。 它將自動安裝。
- 接下來,重新載入解決方案並開始在專案中使用它。
2.3. 通過IronOCR網頁直接下載
開發者可以使用此連結,直接從網站下載IronOCR程式庫。
- 從方案視窗中右鍵點擊專案。
- 然後,選擇選項參考,並瀏覽下載的參考位置。
- 接下來,按一下確定來新增參考。
2.4. 在Visual Studio中使用命令列
在 Visual Studio 中,請前往 工具-> NuGet 套件管理員 -> 套件管理員主控台。
- 在套件管理員主控台標籤中輸入以下行:
Install-Package IronOcr
現在套件將下載/安裝在當前專案中,並可準備使用。
控制台應用程式
控制台應用程式
輸入命令後,按下 Enter,即可安裝。
2.5. 新增 IronOCR 命名空間
在程式中包含這行程式碼以使用IronOCR:
using IronOcr;
using IronOcr;
Imports IronOcr
現在讓我們安裝AWS Textract。
3. 安裝AWS Textract OCR
在您首次使用Amazon Textract之前,請完成以下任務:
- 註冊AWS服務。
- 建立IAM使用者。
當您成功註冊帳戶並建立IAM使用者後,您現在可以在AWS控制台中設置存取金鑰,以便使用C#以程式化方式存取API。 您將需要:
- AccessKeyId SecretAccessKey
- RegionEndPoint(您的存取區域)- 在此範例中:AFSouth1
3.1. 使用 NuGet 套件管理器
您可以從NuGet套件管理員下載和安裝AWS Textract SDK。
NuGet套件管理器
- 單擊瀏覽並搜尋AWS Textract:
AWS Textract
3.2. 新增AWS OCR命名空間
要使用AWS Textract,請包含以下命名空間:
using Amazon.Textract;
using Amazon.Textract.Model;
using Amazon.Textract;
using Amazon.Textract.Model;
Imports Amazon.Textract
Imports Amazon.Textract.Model
4. PDF 文件轉換為文字
這兩個程式庫都可以從PDF文件中提取文字。 讓我們一一查看程式碼。
4.1. 使用 IronOCR
IronOCR允許使用先進的Tesseract從PDF文件格式中識別和讀取文字。 以下簡單的程式碼用於提取資訊:
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf", "password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
var Ocr = new IronTesseract();
using (var input = new OcrInput())
{
input.AddPdf("example.pdf", "password");
// We can also select specific PDF page numbers to OCR
var Result = Ocr.Read(input);
Console.WriteLine(Result.Text);
Console.WriteLine($"{Result.Pages.Count()} Pages");
// Read every page of the PDF
}
Dim Ocr = New IronTesseract()
Using input = New OcrInput()
input.AddPdf("example.pdf", "password")
' We can also select specific PDF page numbers to OCR
Dim Result = Ocr.Read(input)
Console.WriteLine(Result.Text)
Console.WriteLine($"{Result.Pages.Count()} Pages")
' Read every page of the PDF
End Using
該程式碼簡單、乾淨且非常易於理解和使用。
輸入PDF文件
範例PDF
輸出
IronOCR輸出
4.2. AWS Textract
Amazon Textract 使您可以輕鬆將文件文字偵測和分析功能新增到您的應用程式中。 以下程式碼用於讀取PDF,並傳遞同一個PDF:
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD" || block.BlockType == "PAGE" || block.BlockType == "LINE")
{
Console.WriteLine(block.Text);
}
}
}
}
static void Main(String[] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new StartDocumentTextDetectionRequest();
request.DocumentLocation = new DocumentLocation
{
S3Object = new S3Object
{
Bucket = "your_bucket_name",
Name = "your_bucket_key"
}
};
var id = await client.StartDocumentTextDetectionAsync(request);
var jobId = id.JobId;
var response = client.GetDocumentTextDetectionAsync(new GetDocumentTextDetectionRequest{
JobId = jobId
});
response.Wait();
if (response.Result.JobStatus.Equals("SUCCEEDED"))
{
foreach (var block in response.Result.Blocks)
{
if (block.BlockType == "WORD" || block.BlockType == "PAGE" || block.BlockType == "LINE")
{
Console.WriteLine(block.Text);
}
}
}
}
static void Main(String[] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New StartDocumentTextDetectionRequest()
request.DocumentLocation = New DocumentLocation With {
.S3Object = New S3Object With {
.Bucket = "your_bucket_name",
.Name = "your_bucket_key"
}
}
Dim id = Await client.StartDocumentTextDetectionAsync(request)
Dim jobId = id.JobId
Dim response = client.GetDocumentTextDetectionAsync(New GetDocumentTextDetectionRequest With {.JobId = jobId})
response.Wait()
If response.Result.JobStatus.Equals("SUCCEEDED") Then
For Each block In response.Result.Blocks
If block.BlockType = "WORD" OrElse block.BlockType = "PAGE" OrElse block.BlockType = "LINE" Then
Console.WriteLine(block.Text)
End If
Next block
End If
End Sub
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
這段程式碼有些棘手,較為冗長,在傳遞和檢索物件時需要注意。 首先,我們必須建立一個Region。 然後我們必須使用StartDocumentTextDetectionRequest()方法發起請求。 請求物件然後使用桶名稱和金鑰設置DocumentLocation。 然後將此請求傳遞給 StartDocumentTextDetectionAsync() 方法。 由於這是一個非同步方法,我們必須使用ReturnResult函式設為非同步。 成功後,結果將返回且jobId會被保存。 將jobId傳遞給SUCCEEDED響應。 foreach 迴圈用來遍歷每個區塊並檢查其是否為"WORD"、"PAGE"或"LINE",然後輸出文字識別結果。 最後,在Main方法中調用此方法以進行文件處理。
輸出
輸出與IronOCR非常相似。
AWS Textract輸出
5. 圖片轉文字
從圖像中讀取資料是具有挑戰性的,因為圖像的品質在提取資訊時扮演著關鍵角色。 這兩個程式庫都提供提取文字的功能。 在這裡我們將使用png檔案。
5.1. 使用 IronOCR
這段程式碼與之前的幾乎相似。 此處,AddPDF 方法被更換為 AddImage 方法。
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
Input.AddImage("test-files/redacted-employmentapp.png");
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
Input.AddImage("test-files/redacted-employmentapp.png");
//... you can add any number of images
var Result = Ocr.Read(Input);
Console.WriteLine(Result.Text);
}
Dim Ocr = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/redacted-employmentapp.png")
'... you can add any number of images
Dim Result = Ocr.Read(Input)
Console.WriteLine(Result.Text)
End Using
輸入圖片
已編輯的員工資料
輸出
輸出的結果乾淨且符合原始圖像,只需幾行簡單程式碼即可實現完美的輸出。
圖片輸出
5.2. 使用 AWS Textract
以下程式碼有助於檢測圖像中的文字:
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document
{
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))
};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String[] args)
{
ReturnResult();
}
public static async void ReturnResult()
{
AmazonTextractClient client = new AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1);
var request = new DetectDocumentTextRequest();
request.Document = new Document
{
Bytes = new MemoryStream(File.ReadAllBytes(@"test-files/redacted-employmentapp.png"))
};
var result = await client.DetectDocumentTextAsync(request);
foreach (var block in result.Blocks)
{
if (block.BlockType == "WORD")
{
Console.WriteLine(block.Text);
}
}
}
static void Main(String[] args)
{
ReturnResult();
}
Public Shared Async Sub ReturnResult()
Dim client As New AmazonTextractClient("your_access_key_id", "your_secret_access_key", Amazon.RegionEndpoint.AFSouth1)
Dim request = New DetectDocumentTextRequest()
request.Document = New Document With {.Bytes = New MemoryStream(File.ReadAllBytes("test-files/redacted-employmentapp.png"))}
Dim result = Await client.DetectDocumentTextAsync(request)
For Each block In result.Blocks
If block.BlockType = "WORD" Then
Console.WriteLine(block.Text)
End If
Next block
End Sub
Shared Sub Main(ByVal args() As String)
ReturnResult()
End Sub
再次,這段程式碼與之前的幾乎相似。 在此,我們必須使用DetectDocumentTextRequest()方法啟動請求。 請求物件然後通過讀取所有的位元組來設置文件。 此請求然後傳遞給DetectDocumentTextAsync()方法。 由於這是一個非同步方法,我們必須使用ReturnResult函式設為非同步。 成功後,結果將以區塊形式返回。 foreach 迴圈用於遍歷每個區塊並檢查其是否為 "WORD",然後列印出文字識別結果。 最後,在Main方法中調用此方法以進行文件處理。
輸出與IronOCR相似,但首先需要將檔案上傳至AWS桶。
6. 條碼和QR碼轉換為文字
IronOCR的一個獨特功能是能在掃描文字時,從文件中讀取條碼和QR Code。 OcrResult.OcrBarcode 類別的實例為開發人員提供有關每個掃描的條碼的詳細資訊。 AWS Textract不提供此功能。
IronOCR的程式碼如下所示:
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
var Ocr = new IronTesseract();
Ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
input.AddImage("test-files/Barcode.png");
var Result = Ocr.Read(input);
foreach (var Barcode in Result.Barcodes)
{
Console.WriteLine(Barcode.Value);
// type and location properties also exposed
}
}
Dim Ocr = New IronTesseract()
Ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
input.AddImage("test-files/Barcode.png")
Dim Result = Ocr.Read(input)
For Each Barcode In Result.Barcodes
Console.WriteLine(Barcode.Value)
' type and location properties also exposed
Next Barcode
End Using
程式碼是自我解釋且易於理解的。
7. 授權
IronOCR 是一個提供開發者免費授權的程式庫。 它也有一個獨特的定價結構。 Lite套裝方案起價為$999,沒有隱藏費用。 SaaS和OEM產品的再分發也是可能的。 所有授權均附有 30 天退款保證、一年的軟體支援與升級、開發/測試/生產有效性,並提供永久授權(一次性購買)。 要查看IronOCR的完整價格結構和授權詳情,請點擊這裡。
IronOCR 定價方案
您可以僅需一次性購買,即可獲得SaaS和OEM產品的免版稅再分發服務$1,599。
SAAS服務
AWS Textract API 為開發者提供 AWS 免費層服務。您可以免費開始使用 Amazon Textract。 免費方案持續三個月,價格如下所示。

價格清單
您可以從這個連結查看價格詳情。 此外,您還可以使用價格計算器按需調整價格。
8. 結論
IronOCR為C#開發者提供了我們所知在任何平台上最先進的Tesseract API。 IronOCR可以部署在Windows、Linux、Mac、Azure、AWS、Lambda上,並支援.NET Framework專案以及.NET Standard和.NET Core。 我們也可以在OCR掃描中讀取條碼,甚至將我們的OCR匯出為HTML和可搜尋的PDF。
Amazon Textract 使您可以輕鬆將文件文字偵測和分析功能新增到您的應用程式中。 Amazon Textract基於經過驗證的高度可擴展的深度學習技術,該技術由亞馬遜的計算機視覺科學家開發,每天用來分析數十億的圖像和影片。 您不需要任何機器學習專業知識即可使用它。 Amazon Textract 包含簡單易用的API,可以分析圖像檔案和PDF檔案。 Amazon Textract不斷從新資料中學習,且Amazon持續為此服務增加新功能。
IronOCR授權是基於開發者的,這意味著您應該根據將使用此產品的開發者數量來購買授權。 AWS Textract 授權是根據文件頁數來提取資訊和分析資料。 這些授權是以月度為基礎,與IronOCR授權相比,當頁數較多時,價格會變得非常高。 此外,IronOCR授權是一次性購買,並且可以終身使用,它支援OEM和SaaS分發。
在整體比較中,IronOCR和AWS OCR都具有機器學習功能,可從文件或圖片中檢測文字。 IronOCR比AWS OCR有稍微的優勢,因為速度快且節省時間。 程式碼很簡單,從文件中檢測文字時也很直接。 有幾種方法可以完成這個任務。 另一方面,AWS Textract使用多種方法來完成相同的任務。 這會增加伺服器響應時間,有時這很耗時。 我們可以看到,即使我們將一份不完美的文件輸入到IronOCR中,它也能夠準確地讀取其內容,統計準確率約為99%,即便該文件格式很糟糕、傾斜且有數位噪音。IronOCR開箱即用,無需調整性能或大幅修改輸入影像。 速度快如閃電:IronOCR.2020+ 的速度提升至10倍,錯誤率比以前的版本降低超過250%。
此外,Iron Software目前以兩件的價格提供五件工具包。 Iron Suite中包含的工具有:
IronBarcode IronXL IronOCR IronPDF IronWebScraper
請造訪此連結以探索 Iron Suite。
常見問題
什麼是光學字元識別 (OCR)?
光學字元識別 (OCR) 是一種將不同型別文件(如掃描的紙質文件、PDF文件或數位相機拍攝的影像)轉換為可編輯和搜尋的資料的技術。IronOCR 是一個強大的 C# .NET 程式庫,利用先進算法強化此過程。
如何使用 C# 將文字圖片轉換為機器可讀的文字?
您可以使用 IronOCR,一個 C# .NET 程式庫,把文字圖片轉換為機器可讀的文字。它利用先進的 OCR 算法處理圖像,並輸出可以輕鬆進行程式操作的識別文字格式。
IronOCR 如何處理掃描不完全的影像?
IronOCR 被設計為能有效地管理和處理掃描不完全的影像。它具備預處理功能,可校正偏斜、增強文字對比,並改善圖像質量以提高 OCR 的準確性。
我可以使用 IronOCR 進行多執行緒處理嗎?
可以,IronOCR 支援多執行緒,允許同時處理多個文件,顯著提升文件密集型應用的性能和吞吐量。
IronOCR 支援哪些語言進行 OCR 任務?
IronOCR 支援超過 125 種語言,這使其成為全球性應用的多功能工具,能處理多語言文件並將其轉換為文字。
如何在 Visual Studio 專案中安裝 IronOCR?
IronOCR 可以通過 NuGet Package Manager 安裝於 Visual Studio 專案中。您可以在 NuGet 控制台中搜尋 'IronOCR' 並安裝,讓您將 OCR 功能整合到 .NET 應用程式中。
IronOCR 的定價模式是什麼?
IronOCR 提供一次性的授權模式。這包括永久授權並附有 30 天退款保證,為開發者提供靈活性和安心。
在技術上 AWS Textract 與 IronOCR 有何不同?
AWS Textract 使用機器學習和深度學習技術提取文字和資料,提供文件內容的詳細分析。而 IronOCR 專注於易用性和在 .NET 專案內的整合,提供一個具有全面語言支持的強大 OCR 解決方案。
IronOCR 可以讀取和處理條碼和 QR 碼嗎?
可以,IronOCR 可以讀取和處理條碼和 QR 碼。它能提取每個程式碼的詳細資訊,同時掃描文字,使其成為文件處理的全面工具。
哪些平台和環境支持 IronOCR?
IronOCR 相容於 Windows、Linux、Mac、Azure、AWS 和 Lambda 等多種環境。它支持 .NET Framework、.NET Standard 和 .NET Core 專案,確保在不同開發生態系統中的靈活性。

