與其他組件比較

IronOCR與AWS Textract OCR的比較

發佈 2022年10月12日
分享:

什麼是 OCR?

將文本圖片轉換為機器可讀文本格式的過程稱為光學字符識別 (光學字符識別)例如,如果您掃描一張表單、發票或收據,您的電腦會將掃描保存為影像文件。影像文件中的數據無法使用文本編輯器進行編輯、搜索或計算。然而,您可以使用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

Amazon 的 AWS Textract 是一種機器學習 (機器學習) 服務自動從掃描的文件中提取文字、手寫和數據。它不僅僅是簡單的光學字符識別。 (光學字符識別) 識別、理解並使用深度學習技術從表單和表格中提取數據。

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

功能

  • 檢測各種文件中的打字和手寫文本,包括財務報告、醫療記錄、表格和稅務表格。
  • 使用文件分析API,從結構化數據的文件中提取文本、表單和表格數據。
  • 使用分析文件API中的查詢功能,指定並提取文件中的信息。
  • 使用分析支出API處理發票和收據。
  • 使用分析身份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 專案,然後選擇控制台應用程式。

控制台應用程式

  • 給專案命名。例如: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 官方網站直接下載

請按照以下說明從 NuGet 官方網站直接下載 IronOCR:

  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。您將需要:

  • AccessKeyId
  • SecretAccessKey
  • RegionEndPoint (您的訪問區域)- 在這個例子中: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#

代碼有點棘手,且篇幅較長,在傳遞和檢索對象時需要注意。首先,我們必須創建具有3個參數的AmazonTextractClient對象: 存取金鑰 ID, 秘密訪問密鑰,和 區域. 然後我們必須使用 開始文件文本檢測請求() 方法。 然後請求對象設置 文件位置 使用桶名稱和鍵。然後將此請求傳遞給 開始文檔文本檢測異步() 方法。由於它是一個非同步方法,我們必須在它前面使用 await 關鍵字並使 返回結果 函數異步。成功時,結果將被返回並保存jobid。該jobid會被傳遞到 獲取文件文字檢測異步() 方法並等待 成功 response。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. The request object then sets the document by reading all the bytes. This request is then passed to DetectDocumentTextAsync() 方法。由於這是一個非同步方法,我們必須在它之前使用 await 關鍵字並使 返回結果 ```Chinese (zh_TW) function async。成功時,結果會以區塊方式返回。使用 Foreach 迴圈遍歷每個區塊,並檢查它是否是「WORD」,然後列印出文字識別結果。最後,在 Main 方法中呼叫此方法以進行文件處理。

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


## 6. 條形碼和 QR 碼轉成文字

IronOCR 的一個獨特功能是它在掃描文字時可以讀取文件中的條形碼和 QR 碼。 <code>OcrResult.OcrBarcode</code> class 提供開發者關於每個掃描條形碼的詳細信息。AWS Textract 不提供此功能。

IronOCR 的代碼如下:

```cs
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
    }
}

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

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 一直在從新數據中學習,並且亞馬遜不斷為該服務添加新功能。

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.10 剛剛發布

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