与其他组件比较

IronOCR与AWS Textract OCR的比较

发布 2022年十月12日
分享:

什么是 OCR?

将文本图像转换为机器可读文本格式的程序称为光学字符识别。(光学字符识别). 例如,如果您扫描表格、发票或收据,您的计算机会将扫描结果保存为图像文件。图像文件中的数据无法使用文本编辑器进行编辑、搜索或统计。 不过,您可以使用 OCR 解决方案将图像文件转换为文本文档,并将其内容存储为文本数据。

在当今时代,大多数业务工作流程都涉及从印刷媒体接收信息。 纸质表格、发票、法律文件扫描件、表格提取、手写文本和印刷文本或合同等不同文件都是业务流程的一部分。 此外,对此类文档内容进行数字化处理可创建隐藏文本的图像。 图像中的文本无法像文本文档一样通过文字处理工具进行处理。 OCR 技术通过将文本图像转换为可由其他商业软件分析的文本数据来解决问题。

OCR 如何工作?

OCR 引擎通过以下步骤工作:

图像采集

在此过程中,扫描仪会读取文档并将其转换为二进制数据。 OCR 软件可以识别扫描图像,并将浅色区域划分为背景,将深色区域划分为文本。

预处理

OCR 软件首先要清理图像并消除错误,为读取数据做好准备。

文本识别

用于文本识别的两种主要 OCR 算法是模式匹配和特征提取。

模式匹配

在整个模式匹配过程中,字符图片或字形会被分离出来,并与之前记录的字形进行比较。

特征提取

通过特征提取过程,字形被划分为线条、闭合回路、线条方向和线条交点等特征。

后期处理

该技术可在分析后将检索到的文本数据转化为数字文件。 有些 OCR 系统可以创建带注释的 PDF 文档,其中包括扫描文档的前后版本。

本文将讨论两种最流行的 OCR 应用程序和文档库之间的比较。 它们是

  • IronOCR
  • AWS OCR Textract

介绍

IronOCR 库

IronOCR for .NET 是一个 C# .NET 库,提供扫描、搜索、读取图像和 PDF 的服务。 它配有 127+ 种全球语言包。 译文可以文本、结构化数据或可搜索的 PDF 格式输出。 支持 .NET 6、5、Core、Standard 和 Framework 等版本。

IronOCR 的独特之处在于它能够自动检测并从不完全扫描的图像和文档中提取数据。 IronTesseract"类拥有最简单明了的应用程序接口。 它在任何平台上都提供了已知的最先进的 Tesseract 构建,速度更快、精度更高,还提供了本地 DLL 和 API。

IronOCR 还能扫描所有图像格式的条形码和 QR 码,它还能读取文本,并使用最新的 Tesseract 5 引擎执行 PDF 扫描。

特点

  • 它纯粹是为 .NET 应用程序编写的。
  • 它可以支持 127 种不同的语言。 IronOCR 支持阿拉伯语、中文、英语、芬兰语、法语、德语、日语和许多其他语言。
  • 它可以纠正倾斜图像的位置,去除图像中的噪点,从而实现精确输出。
  • 它在低分辨率、低 DPI 的图像中表现尤为出色。
  • 它可以读取多种类型的 QR 码和 BarCode。
  • 它还支持 Gif 和 Tiff 格式。
  • 它允许同时使用多个线程。 这是其他 OCR 库所不具备的杰出功能。 使流程更加顺畅。
  • 它可以轻松地对 PDF 文件执行 OCR,并使用 OCR 导出可搜索的 PDF 文档。

    现在,让我们来看看 AWS OCR。

AWS OCR Textract

亚马逊的 AWS Textract 是一款机器学习工具。(ML)从扫描文件中自动提取文本、手写体和数据的服务。 它不仅仅是简单的光学字符识别(光学字符识别)使用深度学习技术从表单和表格中识别、理解和提取数据。

AWS OCR Textract 使用机器学习来阅读和处理任何类型的文档,无需人工即可准确提取文本、手写、表格数据和其他数据。 Textract 可以快速提取数据,而不是花费数小时或数天的时间。 此外,您还可以使用亚马逊增强人工智能添加人工评论(人工智能)以监督您的模型并检查敏感数据。

特点

  • 检测各种文档中的打字和手写文本,包括财务报告、医疗记录、表格和税表。
  • 使用文档分析 API 从包含结构化数据的文档中提取文本、表单和表格数据。
  • 使用分析文档 API 中的查询功能指定和提取文档中的信息。
  • 使用 Analyze Expense API 处理发票和收据。
  • 处理身份证件,如美国颁发的驾照和护照。 政府,使用 Analyze ID API。
  • 可加速决策制定的可扩展文档分析。

    文章的其余部分如下:

  1. 创建 Visual Studio 项目

  2. 安装 IronOCR

  3. 安装 AWS OCR Textract

  4. 将 PDF 转换为文本

  5. 图像到文本

  6. 将 BarCode 和 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 Framework 版本是 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. 单击 "Manage NuGet Packages for Solutions(管理解决方案的 NuGet 包)"或单击解决方案资源管理器中的 "Manage NuGet Packages(管理 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。 您需要

    • 访问键标识
    • 秘密访问密钥
    • 区域端点(您的访问区域)- 在本例中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 对象: 访问键标识, 秘密访问密钥, 和 地区. 然后,我们必须使用 开始文档文本检测请求() method. 然后,请求对象设置 文件位置 使用水桶名称和密钥。 然后将此请求传递给 StartDocumentTextDetectionAsync() method. 由于这是一个异步方法,我们必须在它前面使用 await 关键字,并使 返回结果 函数 async. 成功后,将返回结果并保存 jobid。 将 jobid 传递给 GetDocumentTextDetectionAsync() 方法,并等待 成功 响应。 Foreach 循环用于循环浏览每个区块,并检查其是否为 "WORD"、"PAGE "或 "LINE",然后打印出文本识别结果。 最后,在 Main 方法中调用此方法进行文档处理。

输出

输出结果与 IronOCR 相当类似。

AWS Textract 输出

AWS Textract 输出

5.图像到文本

从图像中读取数据非常棘手,因为图像质量在提取信息时起着至关重要的作用。 这两个库都提供提取文本的功能。 这里我们将使用 png 文件。

5.1.使用 IronOCR

代码与之前的几乎相似。 这里、 添加 PDF 方法替换为 添加图像 方法。

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 关键字,并使 返回结果 函数 async. 翻译成功后,结果将以块形式返回。 Foreach 循环用于循环浏览每个区块并检查其是否为 "WORD",然后打印出文本识别结果。 最后,在 Main 方法中调用此方法进行文档处理。

输出结果与 IronOCR 类似,但这需要首先将文件上传到 AWS bucket。

6.将 BarCode 和 QR 码转换为文本

IronOCR的一个独特功能是它在扫描文本的同时可以识别文档中的条形码和二维码。 的实例 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#开发者提供最先进的魔方应用程序接口我们所知道的任何平台上的开发工具。 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 文件。 亚马逊 Textract 一直在从新数据中学习,亚马逊也在不断为该服务添加新功能。

IronOCR 许可证是基于开发人员的,这意味着您应始终根据将使用该产品的开发人员数量来购买许可证。 AWS Textract 许可证根据文档的页数来提取信息和分析数据。 许可证是按月发放的,与 IronOCR 许可证相比,大量页面的价格变得非常高。 此外,IronOCR 许可证为一次性购买,可终身使用,并支持 OME 和 SaaS 分发。

从整体上比较,IronOCR 和 AWS OCR 都具有机器学习功能,可以检测文档或图像中的文本。 与 AWS OCR 相比,IronOCR 略胜一筹,因为它快速省时。 代码很简单,从文件中检测文本时也很直接。 这项任务可通过以下几种方法完成。 另一方面,AWS Textract 使用多种方法来完成相同的任务。 这增加了服务器的响应速度,有时还很耗时。 我们可以看到,如果我们向 IronOCR 输入哪怕是不完美的文档,它也能准确读取其内容,统计准确率约为 99%,即使该文档格式不佳、歪斜且存在数字噪声。IronOCR 开箱即用,无需进行性能调整或大量修改输入图像。 速度惊人:与以前的版本相比,IronOCR.2020 + 的速度提高了 10 倍,错误减少了 250% 以上。

此外,Iron Software 目前仅以两件套的价格提供五件工具包。Iron Suite 中包括的工具有:

  • IronBarcode
  • IronXL
  • IronOCR
  • IronPDF
  • IronWebScraper

    请访问此链接以探索铁匠套房.

< 前一页
IronOCR与Syncfusion OCR的比较
下一步 >
Tesseract替代方案(2022更新)

准备开始了吗? 版本: 2024.11 刚刚发布

免费NuGet下载 总下载量: 2,614,315 查看许可证 >