與其他組件比較

IronOCR與AWS Textract OCR的比較

發佈 2022年10月12日
分享:

什麼是光學字符識別 (光學字符識別)?

將文本圖像轉換成機器可讀文本格式的過程稱為光學字符識別。(光學字符識別). 例如,如果您掃描表單、發票或收據,您的電腦會將掃描保存為圖像文件。圖像文件中的數據無法使用文字編輯器進行編輯、搜尋或計數。 不過,您可以使用OCR解決方案將影像檔轉換為文字文件,將其內容儲存為文字資料。

在這個現代時代,大多數商業工作流程都涉及從印刷媒體接收信息。 不同文件如紙質表格、發票、掃描的法律文件、表格提取、手寫文本和印刷文本或合約都是業務流程的一部分。 此外,將此類文檔內容數位化會產生包含隱藏文本的圖像。 圖像中的文字無法像文字文件一樣被文字處理工具處理。 OCR 技術通過將文字圖像轉換為可以由其他業務軟體分析的文字數據來解決該問題。

OCR是如何運作的?

OCR 引擎通過以下步驟工作:

圖像獲取

在此過程中,掃描器會讀取文件並將其轉換為二進位資料。 OCR 軟體識別掃描的圖像,將亮的區域分類為背景,將暗的區域分類為文字。

預處理

OCR 軟體首先會清理圖像並消除錯誤,以準備其數據進行讀取。

文字识别

用於文字識別的兩種主要 OCR 演算法是模式匹配和特徵提取。

模式匹配

在模式匹配過程中,字符圖片或字形被單獨隔離,並與先前記錄的字形進行比較。

特徵提取

通過特徵提取過程,字形被分割成特徵,例如線條、封閉迴圈、線條方向和線條交叉點。

後處理

該技術在分析後將檢索到的文本數據轉換為數位檔案。 某些 OCR 系統可以創建帶有批註的 PDF 文件,這些文件包括掃描文件的前後版本。

本文將討論兩個最常用的應用程式和文件庫之間的OCR比較。 這些是:

  • IronOCR
  • AWS OCR Textract

介紹

IronOCR 庫

IronOCR 是一個 C# .NET 程式庫,提供掃描、搜尋、閱讀圖像和 PDF 的服務。 它內含超過127種全球語言包。 輸出可以是文字、結構化數據或可搜索的 PDF 文件。 支持 .NET 版本,如 6、5、Core、Standard 和 Framework。

IronOCR 在自動檢測和提取不完美掃描的圖像和文件數據方面具有獨特的能力。 「IronTesseract」類別擁有最簡單明瞭的 API。 它提供了最先進的 Tesseract 構建,無論在哪個平台上都具有更快的速度、更高的準確性以及原生的 DLL 和 API。

IronOCR 也可以從所有圖像格式中掃描條碼和 QR 碼,並使用最新的 Tesseract 5 引擎讀取文本和執行 PDF 掃描。

功能

  • 它是專為 .NET 應用程式製作的。
  • 它可以支持127種不同的語言。 IronOCR 支援阿拉伯語、中文、英文、芬蘭語、法語、德語、日語及其他許多語言。
  • 它可以校正傾斜圖像的位置並去除圖像中的噪點,以達到精確的輸出。
  • 它在低解析度及低 DPI 圖像中表現非常優異。
  • 它可以讀取多種類型的QR碼和條碼。
  • 它還支持 Gif 和 Tiff 格式。
  • 它允許多個執行緒同時運行。 這是一項其他OCR庫所沒有的傑出功能。 使流程更順暢。
  • 它可以輕鬆對 PDF 檔案執行 OCR 並使用 OCR 導出可搜索的 PDF 文件。

    現在,讓我們來看看 AWS OCR。

AWS OCR Textract

亞馬遜的 AWS Textract 是一種機器學習(機器學習)自動從掃描文件中提取文字、手寫內容和數據的服務。 它超越了單純的光學字符識別(光學字符識別)使用深度學習技術識別、理解並從表單和表格中提取數據。

AWS OCR Textract 使用機器學習來閱讀和處理任何類型的文檔,準確提取文字、手寫、表格數據和其他數據,無需人工操作。 與其花費數小時或數天來提取數據,Textract 可以快速完成。 此外,您可以使用 Amazon 擴增人工智慧添加人工審核。(人工智慧)提供對模型的監督並檢查敏感數據。

功能

  • 檢測各類文件中的打字和手寫文本,包括財務報告、醫療記錄、表格和報稅表。
  • 使用文件分析 API,從具有結構化數據的文檔中提取文本、表單和表格數據。
  • 使用 Analyze Document API 中的 Queries 功能,指定並提取文件中的信息。
  • 使用分析費用 API 處理發票和收據。
  • 處理由美國簽發的身份證件,例如駕照和護照。 政府,使用 Analyze ID API。
  • 可擴展的文件分析,可以加速決策制定。

    其餘的文章如下:

  1. 建立 Visual Studio 專案

  2. 安裝 IronOCR

  3. 安裝 AWS OCR Textract

  4. PDF 轉換為文字

  5. 影像轉文字

  6. 條碼和 QR 至文本

  7. 授權

  8. 結論

1. 建立 Visual Studio 專案

本教程將使用 Visual Studio 2022 版本,因此我假設您已安裝它。

  • 打開 Visual Studio 2022。
  • 生成一個新的 .NET Core 專案,然後選擇控制台應用程式。
    Aws Ocr Alternatives 1 related to 1. 建立 Visual Studio 專案

    控制台應用程式

  • 給專案取一個名字。 例如 TextReader。
  • 最新且最穩定的 .NET 框架版本是 6.0。我們將使用這個版本。

    .NET框架

  • 按下建立按鈕,專案將被建立。

    接下來,我們將一一安裝庫以供使用。

2. 安裝 IronOCR

IronOCR 程式庫可以透過四種方式下載和安裝。 如下:

  1. 使用 Visual Studio NuGet 套件管理器。

  2. 通過 NuGet 網站直接下載。

  3. 透過IronOCR網頁直接下載。

  4. 在 Visual Studio 中使用命令行。

2.1. 使用 Visual Studio NuGet 管理器

可以使用 Visual Studio NuGet 套件管理器將 IronOCR 併入 C# 專案。

  1. 展開工具或在方案總管上右鍵單擊。

  2. 擴展NuGet套件管理器。

  3. 點擊「管理解決方案的 NuGet 套件」或在解決方案資源管理器中點擊「管理 NuGet 套件」。
    管理NuGet套件

    管理 NuGet 套件

    接著,新的視窗將會出現在搜尋欄中:輸入IronOCR。 勾選右側的專案框,然後點擊安裝。

    瀏覽 IronOCR

    瀏覽 IronOCR

    通過使用此方法,開發人員可以安裝IronOCR庫和任何開發人員選擇的語言包。

2.2. 透過 NuGet 網站直接下載

IronOCR 可以按照以下指示直接從 NuGet 網站下載:

  1. 導航到連結「https://www.nuget.org/packages/IronOCR/"."

  2. 從右側菜單中選擇下載套件選項。

  3. 雙擊下載包。 將自動安裝。

  4. 接下來,重新載入解決方案並開始在專案中使用它。

2.3. 通過 IronOCR 網頁直接下載

開發人員可以通過使用此功能直接從網站下載IronOCR庫鏈接.

  1. 在解決方案窗口中右鍵點擊專案。

  2. 然後,選擇參考選項並瀏覽下載參考的位置。

  3. 接下來,點擊確定以添加參考。

2.4. 在 Visual Studio 中使用命令行

  1. 在 Visual Studio 中,前往 工具 -> NuGet 套件管理員 -> 套件管理員主控台

  2. 在套件管理器主控台標籤頁中輸入以下行:
Install-Package IronOcr

此軟體包現在將在當前專案中下載/安裝,並可以使用。

套件管理控制台

控制台應用程式

安裝 IronOCR

控制台應用程式

輸入指令後,按下回車鍵,它就會被安裝。

2.5. 添加 IronOCR 命名空间

在程式中包含此行代碼以使用IronOCR:

using IronOcr;
using IronOcr;
Imports IronOcr
VB   C#

現在讓我們安裝AWS Textract。

3. 安裝 AWS Textract OCR

在首次使用 Amazon Textract 之前,請完成以下任務:

  1. 註冊 AWS 服務。

  2. 建立 IAM 使用者。

    一旦您成功註冊帳戶並創建了IAM使用者,即可在AWS控制台中設置存取金鑰,以使用C#以程式化方式訪問API。 您將需要:

    • 存取金鑰 ID
    • 秘密訪問密鑰

    區域端點(您的訪問區域)- 在這個例子中:AFSouth1

3.1. 使用 NuGet 套件管理員

  • 您可以從 NuGet 套件管理器下載並安裝 AWS Textract SDK。

    NuGet 套件管理器

    NuGet 套件管理器

  • 點擊「瀏覽」並搜尋 AWS Textract:
    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
VB   C#

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
VB   C#

代碼簡單、乾淨,非常容易理解和使用。

輸入 PDF 文件

範例 PDF

範例 PDF

輸出

IronOCR 輸出

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")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (block.BlockType == "PAGE")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (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")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (block.BlockType == "PAGE")
                    {
                        Console.WriteLine(block.Text);
                    }
                    else if (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" Then
						Console.WriteLine(block.Text)
					ElseIf block.BlockType = "PAGE" Then
						Console.WriteLine(block.Text)
					ElseIf 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
VB   C#

這段代碼有點棘手,較為冗長,並且在傳遞和檢索對象時需要注意。 首先,我們必須使用三個參數創建 AmazonTextractClient 對象: 存取金鑰 ID, 秘密訪問密鑰,和 區域. 然後我們需要使用發起請求 開始文件文本檢測請求() method. 請求對象然後設置 文件位置 使用儲存桶名稱和鍵。 此請求接著轉交至 開始文檔文本檢測異步() method. 由於它是非同步方法,我們必須在它之前使用 await 關鍵字並使 返回結果 function async. 成功後,結果會返回並且工作ID會被保存。 將 jobid 傳遞給 獲取文件文字檢測異步() 方法並等待 成功 回應。 Foreach 迴圈用於遍歷每個區塊並檢查是否為「WORD」、「PAGE」或「LINE」,然後輸出文字識別結果。 最後,在 Main 方法中呼叫此方法進行文件處理。

輸出

輸出與IronOCR非常相似。

AWS Textract 輸出

AWS Textract 輸出

5. 圖像轉文字

從圖像中讀取數據是很棘手的,因為圖像的質量在提取信息時起著至關重要的作用。 這兩個庫都提供提取文本的功能。 在這裡我們將使用 png 文件。

5.1. 使用IronOCR

程式碼幾乎與之前的相似。 這裡, AddPDF 方法被替換為 新增圖片 方法。

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") var Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
End Using
VB   C#

輸入圖片

員工資料 (已編修)

員工資料 (已編修)

輸出

輸出結果乾淨,與原始圖像相符,只需幾行代碼即可實現完美輸出,無需任何技術性處理。

圖像輸出

圖像輸出

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
VB   C#

再次,這段代碼與之前的幾乎相似。 在這裡,我們必須使用來發起請求 偵測文件文本請求() method. 請求物件然後透過讀取所有位元組來設定文件。 此請求隨後被傳遞給 DetectDocumentTextAsync() 方法。 由於它是非同步方法,我們必須在它之前使用 await 關鍵字並使 返回結果 function async. 成功後,結果將以塊狀返回。 Foreach 迴圈用來遍歷每個區塊並檢查它是否是 "WORD",然後輸出文字識別結果。 最後,在 Main 方法中呼叫此方法進行文件處理。

輸出類似於 IronOCR,但這需要首先將文件上傳到 AWS 存儲桶。

6. 條碼和 QR 碼轉文字

IronOCR 的一個獨特功能是在掃描文本時,它可以從文件中讀取條形碼和 QR 碼。 該實例的 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
VB   C#

這段程式碼清楚明瞭且易於理解。

7. 授權

IronOCR 是一個提供開發者免費許可的函式庫。 它也有一個獨特的定價結構; Lite 套裝價格從 $749 起,沒有隱藏費用。 SaaS 和 OEM 產品的重新分發也是可能的。 所有授權皆附有30天退款保證、一年軟體支援與升級、開發/測試/生產有效性,以及永久授權。(一次性購買). 要查看 IronOCR 的完整價格結構和許可證詳情,請前往這裡.

IronOCR 價格方案

IronOCR 價格方案

只需一次性支付 $1599,即可獲得全民授權的 SaaS 和 OEM 產品再分發服務。

SAAS 服務

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 授權是一種一次性購買,可以終身使用,並支持 OME 和 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.

< 上一頁
IronOCR 與 Syncfusion OCR 之間的比較
下一個 >
Tesseract 替代方案(2022 更新)

準備開始了嗎? 版本: 2024.11 剛剛發布

免費 NuGet 下載 總下載次數: 2,698,613 查看許可證 >