与其他组件比较

IronOCR与AWS Textract OCR的比较

发布 2022年十月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**"类拥有最简单的应用程序接口。它可在任何平台上提供已知的最先进的 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 是一款机器学习软件。 (ML) 该服务可从扫描文件中自动提取文本、手写体和数据。它超越了简单的光学字符识别 (光学字符识别) 利用深度学习技术从表单和表格中识别、理解和提取数据。

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

功能

  • 检测各种文档中的打字和手写文本,包括财务报告、医疗记录、表格和税表。
  • 使用文档分析应用程序接口(Document Analysis API)从具有结构化数据的文档中提取文本、表格和表格数据。
  • 使用文档分析 API 中的查询功能指定和提取文档中的信息。
  • 使用 Analyze Expense 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 项目,然后选择控制台应用程序。

控制台应用程序

  • 为项目命名。例如: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。您将需要

  • 访问密钥标识
  • 秘密访问密钥

  • 区域端点 (您的访问区域)- 在本例中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 对象: 访问键标识, 秘密访问密钥, 和 地区.然后,我们必须使用 开始文档文本检测请求() 方法。然后,请求对象会设置 文件位置 使用水桶名称和密钥。然后将该请求传递给 StartDocumentTextDetectionAsync() 方法。由于这是一个异步方法,我们必须在它前面使用 await 关键字,并使 返回结果 函数异步执行。成功后,将返回结果并保存 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. The request object then sets the document by reading all the bytes. This request is then passed to DetectDocumentTextAsync() 方法。由于这是一个异步方法,我们必须在它前面使用 await 关键字,并使 返回结果 异步函数。成功后,结果以块为单位返回。Foreach 循环用于循环查看每个块,并检查其是否为 "WORD",然后打印出识别的文本。最后,在 Main 方法中调用该方法进行文档处理。

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

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 bundle 起价为 $749,没有任何隐藏费用。SaaS 和 OEM 产品也可以再分发。所有许可证均附带 30 天退款保证、一年的软件支持和升级、开发/分期/生产有效性以及永久许可证。 (一次性购买).要查看 IronOCR 的整个价格结构和许可详情,请访问 这里.

IronOCR 定价计划

IronOCR 定价计划

您只需一次性购买 1599 美元,即可获得 SaaS 和 OEM 产品的免版税再分发服务。

SAAS 服务

SAAS 服务

AWS Textract API 为开发人员提供 AWS 免费层服务。您可以免费开始使用 Amazon Textract。免费层持续三个月,价格如下所示。

定价清单

定价清单

定价清单

您可以通过以下链接查看定价详情 链接.此外,您还可以使用定价计算器根据自己的需要调整价格。

8.结论

IronOCR 为 C# 开发人员提供了最先进的 魔方应用程序接口 据我们所知,IronOCR 适用于任何平台。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

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

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

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

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