跳至页脚内容
与其他组件比较

Google OCR & IronOCR 之间的比较

OCR是光学字符识别的缩写。 它提供了将图像文件转换为机器编码文本的功能。 计算机始终将扫描的文件保存为图像文件。 这些图像文件中的数据无法使用普通文本编辑器或甚至使用文字处理应用程序进行搜索、编辑或以文本格式保存。 OCR 处理有助于将这些图像转换为机器可读文本,以便用户进行进一步的处理。

在这个现代时代,通过互联网共享的扫描文档都是数字格式,主要是 PDF 或图像的形式。 有许多可用的在线资源可以将图像转换为文本。 然而,大多数企业需要在其软件应用程序中具备此功能。 考虑到这一点,有许多库提供 OCR 处理技术,可以嵌入到软件应用程序中。

在本文中,我们将讨论两个最受欢迎的 C# OCR 库。 这些是:

  • IronOCR
  • Google Cloud Vision OCR(Vision API)

IronOCR - C# 库

IronOCR for .NET 是一个用于扫描、搜索和读取图像和 PDF 的 C# 库。 它以图像或 PDF 文件作为输入,使用最新的 Tesseract 5 自定义构建 .NET OCR 引擎输出文本、结构化数据或可搜索 PDF 文档。 Tesseract 提供超过 125 种语言,并支持跨平台的 .NET Core 和 .NET Standard,从 2.0 到 7。

IronOCR 是一种用户友好的 API,允许 C# 开发人员使用 IronTesseract 类和 API 密钥自动将图像转换为文本。 它优先考虑速度、准确性和易用性。 它还帮助计算机视觉 API 使用训练好的模型来找到文本。

IronOCR 的另一个强大功能是,它可以从所有图像文件中扫描条形码和二维码并读取其文本。 IronOCR 的其他重要功能如下所示。

功能

  • 国际语言:支持 125 种及自定义语言,具有高效快速的性能
  • 文本和条形码读取:一次读取多种语言的文本和数字
  • 专业文档:专门读取收据、支票、发票中的文本
  • 从多种格式读取:图像(PNG、JPG、GIF、TIFF、BMP)、System.Drawing 对象、流、PDF 文档(优化的目标 DPI)
  • 过滤器:过滤器向导、图像校正、修正图像方向、修正图像颜色
  • 简单数据输出:.NET 文本字符串、条形码和二维码数据、图像

现在,让我们看看 Google Cloud Vision API。

Google Cloud Vision OCR

Google Cloud Vision API 是一个支持 C# 语言的 Google Cloud OCR 客户端库。 它使 C# 开发人员能够轻松地将计算机视觉检测功能集成到软件应用程序中。 它执行 OCR 并检测图像文件中的文本、图像标签、面部检测和标记检测。

Google Cloud Vision API 使用 REST 和 RPC API 提供了一个强大的预训练机器学习模型。 使用 Cloud Vision API,您可以快速将图像分类为数百万个已预定义的类别。 它还可以检测对象并读取打印文件和手写文本中的文字。

功能

  • 图像文本检测:对图像进行 OCR 以进行文本识别,并将其转换为机器语言代码
  • 文档文本检测:OCR 文件(PDF/TIFF),密集文本
  • 地标检测:返回检测到的对象的坐标
  • 标志检测:返回文本描述
  • 标签检测:返回图像的一般标签

文章的其余部分如下:

  1. 创建一个 Visual Studio 项目
  2. 安装AWS OCR Textract
  3. 安装 Google OCR
  4. 图像到文本
  5. 条形码和二维码到文本
  6. PDF 到文本
  7. 结论
  8. 结论

1. 创建一个 Visual Studio 项目

在本教程中,我们将使用最新版本的 Visual Studio 2022。 所以,我假设您已经下载并为 C# 安装了它。 如果没有,您可以从 Visual Studio 网站下载。

现在,我们需要创建一个控制台项目来开始使用这两个库。 按照以下步骤创建一个项目:

  • 打开您的 Visual Studio 2022。
  • 点击创建新项目。

如何在 C# Windows 应用程序中打印条形码 图 1 - 创建新项目

  • 从给定选项中选择 C# 控制台应用程序。

如何在 C# Windows 应用程序中打印条形码 图 2 - 控制台应用程序

  • 为您的新项目配置一个名称和位置。 例如"OCRProject"。
  • 点击下一步。

如何在 C# Windows 应用程序中打印条形码 图 3 - 配置项目

  • 从附加信息中选择 .NET 6.0 框架,因为它是最稳定的版本。

如何在 C# Windows 应用程序中打印条形码 图 4 - 附加信息

  • 现在,点击创建,项目将在您指定的位置创建。

接下来,我们将在项目中安装库进行比较。

  1. 使用Visual Studio NuGet包管理器。

有多种方法可以安装 IronOCR 库。 让我们逐一查看。

2.1. 使用 Visual Studio NuGet 包管理器

NuGet 是一个用于在您的项目中下载和安装依赖项的包管理器。 其包包含编译的代码(DLL)和清单文件。使用以下方法访问它:

  • 点击工具选项卡
  • 扩展 NuGet 包管理器选项
  • 点击为解决方案管理 NuGet 包

如何在 C# Windows 应用程序中打印条形码 图 5 - NuGet 包管理器

  • 或者,右键单击解决方案资源管理器
  • 点击管理 NuGet 包

如何在 C# Windows 应用程序中打印条形码 图 6 - 解决方案资源管理器

现在,NuGet 包管理器窗口将打开。 浏览 IronOCR 并点击安装。

如何在 C# Windows 应用程序中打印条形码 图 7 - IronOCR

2.2. 从 NuGet 网站下载

它可以直接从 NuGet 官方网站下载。按照以下步骤操作:

  1. 点击链接至 NuGet 网站
  2. 点击页面右侧的下载包选项。
  3. 打开下载的包,它将开始安装。
  4. 最后,重新加载解决方案,就完成了。

2.3. 使用 IronOCR 网页下载

只需访问 Iron Software 网站并导航到 IronOCR for .NET 网页。 滚动到底部,点击下载 DLL 或下载 Windows 安装程序。

如何在 C# Windows 应用程序中打印条形码 图 8 - Iron Software 网站

将会下载一个 Zip 文件。 解压缩它并将其添加到您的项目文件中或运行 Windows 安装程序。 按照以下步骤将其添加到您的项目中。

  1. 在 Visual Studio 中从解决方案资源管理器中右键单击项目的依赖项。
  2. 然后,选择添加项目引用选项。
  3. 浏览到下载的 DLL 文件位置。
  4. 最后,点击确定以添加项目引用。

2.4. 使用 Visual Studio 中的命令提示符

  1. 在 Visual Studio 中导航到工具选项卡。
  2. 扩展 NuGet 包管理器选项。
  3. 选择包管理器控制台并输入以下命令:
Install-Package IronOcr

这将自动下载并安装 IronOCR 到您的项目中。

现在,我们已经准备好在我们的项目中使用 IronOCR。

2.5. 添加必要的 IronOCR 命名空间

只需一个命名空间就能访问其功能,它需要添加到需要访问其功能的源代码文件顶部。

using IronOcr;
using IronOcr;
Imports IronOcr
$vbLabelText   $csharpLabel

现在,让我们安装 Google Vision OCR。

3. 安装 Google OCR

要在 C# 项目中使用 Vision API,您必须满足以下前提条件:

  1. 创建一个 Google 帐号
  2. 从 Google Cloud Console 创建一个新项目
  3. 启用计费
  4. 启用 Vision API
  5. 创建一个服务帐号并设置凭证
  6. 以 JSON 文件格式下载服务帐号密钥凭证

您可以在 此处查看如何使用 Google Cloud Vision 的官方文档。

现在,要在 Visual Studio 中安装用于执行 OCR 处理的 Google Cloud 客户端库,我们需要使用 NuGet 包管理器。

3.1. 使用 NuGet 包管理器

使用以下方法访问它:

  • 点击工具选项卡
  • 扩展 NuGet 包管理器选项
  • 点击为解决方案管理 NuGet 包

如何在 C# Windows 应用程序中打印条形码 图 9 - 工具选项卡

  • 或者,右键单击解决方案资源管理器
  • 点击管理 NuGet 包

如何在 C# Windows 应用程序中打印条形码 图 10 - 管理大包 NuGet

现在,NuGet 包管理器窗口将打开。 浏览 Google Cloud Vision OCR 并点击安装。

如何在 C# Windows 应用程序中打印条形码 图 11 - Google Cloud Vision OCR

3.2. 添加 Google Vision API 命名空间

要使用 Google OCR Vision API,请包含以下命名空间:

using Google.Cloud.Vision.V1;
using Google.Cloud.Vision.V1;
Imports Google.Cloud.Vision.V1
$vbLabelText   $csharpLabel

此外,还需使用下载的 JSON 文件格式的密钥凭证设置环境变量。

Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
$vbLabelText   $csharpLabel

现在,一切设置完毕,准备使用。

4. 图像到文本

从图像中读取数据是一项繁琐的任务。 图像分辨率和质量在提取内容时起着重要作用。 这两个库都提供光学字符识别(OCR)功能来从图像中提取文本。

4.1. 使用IronOCR

IronOCR 使开发人员能够轻松地读取图像文件的内容,拥有强大的 IronTesseract 类。 在这里,我们将使用 PNG 图像来读取图像文件中的文本,代码如下:

var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    // Add the image to be processed
    input.AddImage("test-files/employmentapp.png");

    // Process the image
    var result = ocr.Read(input);

    // Output the extracted text
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    // Add the image to be processed
    input.AddImage("test-files/employmentapp.png");

    // Process the image
    var result = ocr.Read(input);

    // Output the extracted text
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
	' Add the image to be processed
	input.AddImage("test-files/employmentapp.png")

	' Process the image
	Dim result = ocr.Read(input)

	' Output the extracted text
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

输入图像

如何在 C# Windows 应用程序中打印条形码 图 12 - 布局框输入

输出

如何在 C# Windows 应用程序中打印条形码 图 13 - 带有独立文字的图像输出

IronOCR 的输出与给定图像的原始图像匹配。 代码简洁易懂,没有任何技术性。

4.2. 使用 Google OCR

Google Cloud Vision OCR 也可将图像转换为具有不同字体的文本。 首先,我们需要使用凭证文件创建一个客户端。然后,使用此客户端对象,我们可以调用 DetectText 方法以注释形式获取响应。 代码如下:

Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = Google.Cloud.Vision.V1.Image.FromFile("test-files/employmentapp.png");
var response = client.DetectText(image);

foreach (var annotation in response)
{
    if (annotation.Description != null)
    {
        Console.WriteLine(annotation.Description);
    }
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = Google.Cloud.Vision.V1.Image.FromFile("test-files/employmentapp.png");
var response = client.DetectText(image);

foreach (var annotation in response)
{
    if (annotation.Description != null)
    {
        Console.WriteLine(annotation.Description);
    }
}
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
Dim client = ImageAnnotatorClient.Create()
Dim image = Google.Cloud.Vision.V1.Image.FromFile("test-files/employmentapp.png")
Dim response = client.DetectText(image)

For Each annotation In response
	If annotation.Description IsNot Nothing Then
		Console.WriteLine(annotation.Description)
	End If
Next annotation
$vbLabelText   $csharpLabel

相同的图像被用作输入,以便比较两个库的输出。

如何在 C# Windows 应用程序中打印条形码 图 14 - 输出

从上面的输出可以清楚地看到,IronOCR 保留了图像输出格式。 虽然 Google OCR 提供了准确的输出文本,但表格的格式未被保留。 IronOCR 完全保留了给定图像中的表格格式。

5. 条形码和二维码到文本

代码几乎与之前的代码相似。

IronOCR 在读取图像时提供了一个独特且有用的功能,即它可以读取条形码和二维码。 它可以轻松检测条形码并显示它们的值。 首先,将 ReadBarCodes 配置设置为 true,然后在 OCR 结果中遍历每个条形码。 读取条形码的代码如下所示:

var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
    // Add the image to be processed
    input.AddImage("test-files/Barcode.png");

    // Process the image
    var result = ocr.Read(input);

    // Iterate and output barcode values
    foreach (var barcode in result.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
var ocr = new IronTesseract();
ocr.Configuration.ReadBarCodes = true;
using (var input = new OcrInput())
{
    // Add the image to be processed
    input.AddImage("test-files/Barcode.png");

    // Process the image
    var result = ocr.Read(input);

    // Iterate and output barcode values
    foreach (var barcode in result.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
Dim ocr = New IronTesseract()
ocr.Configuration.ReadBarCodes = True
Using input = New OcrInput()
	' Add the image to be processed
	input.AddImage("test-files/Barcode.png")

	' Process the image
	Dim result = ocr.Read(input)

	' Iterate and output barcode values
	For Each barcode In result.Barcodes
		Console.WriteLine(barcode.Value)
	Next barcode
End Using
$vbLabelText   $csharpLabel

输入图像

如何在 C# Windows 应用程序中打印条形码 图 15 - 输入

输出

如何在 C# Windows 应用程序中打印条形码 图 16 - 图像输出

输入中的所有三个条形码均已成功读取,并显示了其隐藏的文字。

5.2. 使用 Google OCR

Google Vision API 尚不允许此功能。 阅读条形码可以在软件应用程序中非常方便。 然而,Google OCR 允许通过扫描的文档作为图像文件获取文本。标签检测的代码如下:

var client = ImageAnnotatorClient.Create();
var image = Google.Cloud.Vision.V1.Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);

Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));

foreach (var label in labels)
{
    Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
var client = ImageAnnotatorClient.Create();
var image = Google.Cloud.Vision.V1.Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg");
var labels = client.DetectLabels(image);

Console.WriteLine("Labels (and confidence score):");
Console.WriteLine(new String('=', 30));

foreach (var label in labels)
{
    Console.WriteLine($"{label.Description} ({(int)(label.Score * 100)}%)");
}
Imports System

Dim client = ImageAnnotatorClient.Create()
Dim image = Google.Cloud.Vision.V1.Image.FromUri("gs://cloud-samples-data/vision/using_curl/shanghai.jpeg")
Dim labels = client.DetectLabels(image)

Console.WriteLine("Labels (and confidence score):")
Console.WriteLine(New String("="c, 30))

For Each label In labels
	Console.WriteLine($"{label.Description} ({CInt(Math.Truncate(label.Score * 100))}%)")
Next label
$vbLabelText   $csharpLabel

输出

如何在 C# Windows 应用程序中打印条形码 图 17 - 标签检测输出

6. PDF 到文本

6.1. 使用 IronOCR

在 IronOCR 中读取 PDF 文件就像读取图像文件一样简单。 您只需在图像读取代码中将 AddImage 方法更改为 AddPdf。 代码如下

var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    // Add the PDF to be processed
    input.AddPdf("test-files/example.PDF");

    // Process the PDF
    var result = ocr.Read(input);

    // Output the extracted text
    Console.WriteLine(result.Text);
}
var ocr = new IronTesseract();
using (var input = new OcrInput())
{
    // Add the PDF to be processed
    input.AddPdf("test-files/example.PDF");

    // Process the PDF
    var result = ocr.Read(input);

    // Output the extracted text
    Console.WriteLine(result.Text);
}
Dim ocr = New IronTesseract()
Using input = New OcrInput()
	' Add the PDF to be processed
	input.AddPdf("test-files/example.PDF")

	' Process the PDF
	Dim result = ocr.Read(input)

	' Output the extracted text
	Console.WriteLine(result.Text)
End Using
$vbLabelText   $csharpLabel

输出

提取的文本与 PDF 文件的格式相同。

如何在 C# Windows 应用程序中打印条形码 图 18 - PDF 到文本输出

6.2. 使用 Google OCR

Google OCR 还提供从 PDF/TIFF 文档中提取文本的功能。 然而,它仅检测文本,如果文件位于 Google Cloud Storage。 为此,您需要创建一个 Google Storage 存储桶。 对于 C# 的代码不是很简单并且在这里实施相当冗长。 没有可用于 C# 的示例来检测文件中的文本。 您可以查看Java 代码作为参考尝试。

IronOCR是一个提供开发者免费许可证的库。

IronOCR用于开发目的是免费的,但商业用途需要授权。 它还提供免费试用以测试其所有潜力,以满足您的需求。 Lite 包从一定金额开始,免费试用。 IronOCR 提供 1 年免费支持与更新,之后每年399美元。所有许可证为永久,无隐藏费用。 您还可以选择免版税的 SaaS 和 OEM 产品的重​​分发覆盖,只需 1999 美元的一次性购买。 有关许可证和定价计划的更多信息,请访问此处

如何在 C# Windows 应用程序中打印条形码 图 19 - IronOCR 许可证

Google Cloud Vision的定价计划基于应用程序对图像执行的操作数量。 对于具有多个页面的文件,如 PDF,每一页被单独视为一张图像。 此外,应用于图像的每个功能都是一个单独的计费单位。 例如,如果您对同一张图片应用文本检测和标签检测,每个功能将单独收费。 定价计划如下所示,更多信息请访问此链接

如何在 C# Windows 应用程序中打印条形码 图 20 - Google Cloud Vision OCR 许可证

8. 结论

IronOCR 为 C# 开发人员提供了我们所知的最先进的 Tesseract API,适用于任何平台。 IronOCR 可部署在 Windows、Linux、Mac、Azure、AWS、Lambda,并支持 .NET Framework 项目以及 .NET Standard 和 .NET Core 项目。 Amazon Textract基于由亚马逊计算机视觉科学家开发的经过验证的高可扩展性深度学习技术,每天分析数十亿张图像和视频。

Google Cloud Vision API 是一个基于先进 AI 构建的 API。 它提供多种图像分析功能,对于构建机器学习应用程序非常有用。 它允许开发人员直接使用 API 密钥与 Google Cloud 通信,这意味着无需本地存储文件。

IronOCR 的许可证是基于用户的,这意味着您应该根据要使用该产品的开发人员人数购买许可证。 Google Cloud Vision 的许可证是基于要从中提取信息并分析数据的图片数量。 许可证是按月计费,并且对于大量图像的价格相比 IronOCR 许可证会非常高。 此外,IronOCR 许可证是一项一次性购买,终身使用,并支持 OEM 和 SaaS 分发。

总体结论是,这两个库都具有机器学习功能。 而对比 Google OCR 而言,IronOCR 具有一定优势,因为它专门为 C# .NET 框架构建,速度快,节省时间。 它通过几行代码提供所有功能,减轻了开发人员编写冗长代码的负担。 它建立在最流行的 Tesseract 5 API 之上,便于集成和分析图像及其他文件格式,输出准确。 另一方面,Google Vision OCR 建立在 AI 上,更专注于 Java、Python 和 REST,而且只能在连接到 Google Cloud 时运行。 这可能会耗费时间,因为响应来自服务器端。您可以根据自己的具体需求选择库。

现在,您可以以 2 款产品的价格获得 5 款 Iron 产品。Iron Suite 包括以下工具:

  • IronBarcode
  • IronWebScraper
  • IronOCR
  • IronPDF
  • IronWebscraper

访问此链接了解更多。

您可以从这里下载 IronOCR。

请注意Google Cloud Vision OCR 是其各自所有者的注册商标。 本网站与 Google Cloud Vision OCR 无关、也未获得其认可或支持。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。

常见问题解答

如何使用 C# 将图像转换为文本?

您可以使用IronOCR,它利用Tesseract 5引擎将图像转换为机器可读文本。它支持超过125种语言,并兼容多个平台,是C#应用程序中文本提取的绝佳选择。

使用IronOCR进行条形码和QR码扫描的好处是什么?

IronOCR不仅将图像和PDF转换为文本,还在条形码和QR码扫描方面表现出色。它提供快速且准确的数据提取,是需要全面OCR功能的应用程序的多功能工具。

IronOCR如何处理不同语言?

IronOCR支持超过125种语言,并提供自定义语言支持。广泛的语言兼容性使其非常适用于国际应用,确保跨语言的文本识别。

在C#项目中安装IronOCR的要求是什么?

要在C#项目中安装IronOCR,您可以在Visual Studio中使用NuGet包管理器。只需在NuGet包管理器中搜索IronOCR并安装它,即可无缝集成OCR功能到您的应用程序中。

IronOCR的许可模式与基于云的OCR服务相比如何?

IronOCR提供一次性购买模式,带有永久许可证,提供长期价值而无需反复成本。相比之下,诸如Google Cloud Vision的基于云的OCR服务通常使用按使用付费的定价模式,使用率高时可能变得昂贵。

IronOCR支持哪些平台?

IronOCR可以部署在包括Windows、Linux、Mac、Azure、AWS和Lambda在内的各种平台上。它支持.NET Framework、.NET Standard和.NET Core项目,为不同的开发环境提供了灵活性。

IronOCR可以离线运行吗?

是的,IronOCR可以离线运行,这是一项显著优于基于云解决方案的优势。此功能确保您的OCR处理不依赖于互联网连接,提供了更大的控制和安全性。

IronOCR如何确保OCR处理的准确性和速度?

IronOCR利用先进的算法和Tesseract 5引擎提供快速且准确的OCR处理。其图像校正过滤器进一步提高了文本识别的准确性,使其成为高质量OCR任务的可靠选择。

Kannaopat Udonpant
软件工程师
在成为软件工程师之前,Kannapat 在日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了车辆机器人实验室的成员,隶属于生物生产工程系。2022 年,他利用自己的 C# 技能加入 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他可以直接从编写大多数 IronPDF 代码的开发者那里学习。除了同行学习外,Kannapat 还喜欢在 Iron Software 工作的社交方面。不撰写代码或文档时,Kannapat 通常可以在他的 PS5 上玩游戏或重温《最后生还者》。