在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
OCR 表示光学字符识别。 它提供了将图像文件转换为机器编码文本的功能。 扫描文件始终由计算机保存为图像文件。 这些图像文件中的数据无法使用普通文本编辑器或文字处理程序进行搜索、编辑或保存为文本格式。 OCR 处理可帮助将这些图像转换为机器可读文本,供用户进一步处理。
在当今时代,通过 int.NET 共享的扫描文件都是数字格式,而且大多是 PDF 或图片形式。 有很多在线资源可以将图片转换为文本。 然而,大多数企业的软件应用程序都需要这种功能。 考虑到这一点,有许多库提供 OCR 处理技术,可以嵌入到软件应用程序中。
在本文中,我们将讨论两个最流行的 C# OCR 库。 它们是
IronOCRfor .NET 是用于扫描、搜索和阅读图像及 PDF 的 C# 库。 它将图像或 PDF 文件作为输入,并使用最新的 Tesseract 5 定制 .NET OCR 引擎输出文本、结构化数据或可搜索的 PDF 文档。 其 Tesseract 支持 125 种以上语言,同时支持从 2.0 到 7 的 .NET Core、Standard 跨平台。
IronOCR 是一个用户友好型 API,C# 开发人员只需使用 "IronTesseract "类和 API 密钥,即可将图像自动转换为文本。 翻译必须优先考虑速度、准确性和易用性。 它还有助于计算机视觉 API 使用训练有素的模型集查找文本。
IronOCR 的另一个强大功能是可以扫描所有图像文件中的条形码和 QR 码,并读取其文本。 IronOCR 的其他重要功能如下。
简单数据输出: .NET 文本字符串、Barcode 和 QR 数据、图像
现在,让我们来看看 Google Cloud Vision API。
谷歌云视觉应用程序接口是一个谷歌云 OCR 客户端库,支持 C# 语言。 它可以让 C# 开发人员在软件应用程序中轻松集成计算机视觉检测功能。 它可以执行 OCR 并检测图像文件中的文本、图像标签、人脸检测和地标检测。
Google Cloud Vision API 使用 REST 和 RPC API 提供强大的预训练 ML(机器学习)模式。 通过云导入视觉 API,您可以将图像快速分类到数百万个已预定义的类别中。 它还可以检测对象、读取印刷文件中的文本和手写文本。
标签检测:返回图像的通用标签
文章的其余部分如下:
创建 Visual Studio 项目
安装 IronOCR
安装 Google OCR
图像到文本
将 BarCode 和 QR 转换为文本
将 PDF 转换为文本
许可
在本教程中,我们将使用 Visual Studio 2022 的最新版本。 因此,我假定您已经下载并安装了 C#. 如果没有,您可以从以下网址下载Visual Studio 网站.
现在,我们需要创建一个 Console 项目,以便开始使用这两个库。 请按照以下步骤创建项目:
单击创建新项目。
从给定选项中选择 C# 控制台应用程序。
单击下一步。
从其他信息中选择 .NET 6.0 Framework,因为它是最稳定的版本。
现在,单击 "创建",项目将在您指定的位置创建。
接下来,我们将在项目中安装这些库进行对比。
安装 IronOCR 库有多种方法。 让我们一个一个地来看。
NuGet 是在项目中下载和安装依赖项的软件包管理器。 其软件包包含编译后的代码(DLL)和清单文件。使用以下方法访问:
单击管理 NuGet 软件包以获取解决方案
点击管理 NuGet 包
现在,NuGet 包管理器窗口将打开。 浏览 IronOCR 并点击安装。
可直接从 NuGet 官方网站下载。按照给出的步骤操作:
点击链接:"".
单击页面右侧的下载软件包选项。
打开下载的软件包,即可开始安装。
只需访问 Iron Software 网站并导航至 IronOCR for .NET 网页即可。 滚动到底部并单击下载 DLL 或下载 Windows 安装程序。
将下载一个 Zip 文件。 将其解压缩并添加到您的项目文件中,或运行 Windows 安装程序。 请按照以下步骤将其添加到您的项目中。
在 Visual Studio 的解决方案资源管理器中右键单击项目的依赖项。
然后,选择 "添加项目参考 "选项。
浏览下载的 DLL 文件位置。
导航至 Visual Studio 中的 "工具 "选项卡。
扩展 NuGet 包管理器选项。
Install-Package IronOCR
这将自动下载 IronOCR 并安装到项目中。
现在,我们可以在项目中使用 IronOCR 了。
只需要一个命名空间,并且需要添加到我们需要访问其功能的源代码文件的顶部。
using IronOCR;
using IronOCR;
Imports IronOCR
现在,让我们安装 Google Vision OCR。
要在 C# 项目中使用 vision API,必须满足以下前提条件
创建谷歌账户
从 Google 云控制台创建新项目
启用计费
启用视觉 API
创建服务账户并设置证书
下载 JSON 文件格式的服务帐户密钥凭证
您可以从官方文档中详细了解使用 Google Cloud Vision 的设置和要求这里.
现在,要在 Visual Studio 中安装用于执行 OCR 处理的 Google Cloud 客户端库,我们需要使用 NuGet 包管理器。
使用以下方法访问:
单击管理解决方案的 NuGet 软件包
点击管理 NuGet 包
现在,NuGet 包管理器窗口将打开。 浏览 Google Cloud Vision OCR 并单击安装。
要使用 Google OCR Vision API,请包含以下命名空间:
using Google.Cloud.Vision.V1;
using Google.Cloud.Vision.V1;
Imports Google.Cloud.Vision.V1
还可使用 JSON 文件中下载的密钥凭证设置环境变量。
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json")
现在,一切准备就绪,随时可以使用。
从图像中读取数据是一项相当繁琐的工作。 在提取内容时,图片的分辨率和质量起着重要作用。 两个库都提供光学字符识别功能(光学字符识别)从图像中提取文本的功能。
IronOCR 凭借其强大的 "IronTesseract "类,让开发人员可以非常轻松地读取图像文件的内容。 在这里,我们将使用 PNG 图像来从图像文件中读取文本代码如下
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/employmentapp.png");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddImage("test-files/employmentapp.png");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
Using Input = New OcrInput()
Input.AddImage("test-files/employmentapp.png")
Dim Result = OCR.Read(Input)
Console.WriteLine(Result.Text)
End Using
IronOCR 的输出结果与给定的原始图像相匹配。 代码简洁易懂,不含任何技术性内容。
Google Cloud Vision OCR 还可以将图像转换为带有不同字体的文本。 首先,我们需要使用凭据文件创建一个客户端。然后,我们可以使用该客户端对象调用 DetectText
方法来获取注释形式的响应。 代码如下:
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "key.json");
var client = ImageAnnotatorClient.Create();
var image = 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 = 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 As System.Drawing.Image = System.Drawing.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
为了比较两个库的输出结果,输入时使用了相同的图片。
从上面的输出中,您可以清楚地看到,IronOCR 保留了图像输出格式。 虽然 Google OCR 能够提供准确的输出文本,但无法保留表格的格式。 IronOCR 完全保留了给定图片中表格的格式。
IronOCR 在读取图像时提供了一个独特而实用的功能,即可以读取条形码和 QR 码。 它可以检测 BarCode 并轻松显示其值。 首先,将 ReadBarCodes
配置设为 true,然后遍历 OCR 结果中的每个条形码。 读取 BarCode 的代码如下:
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);
}
}
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);
}
}
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)
Next Barcode
End Using
输入中的三个 BarCode 都能成功读取,并显示其隐藏文本。
Google Vision API 尚不支持此功能。 在软件应用中,读取 BarCode 十分方便。 不过,谷歌 OCR 可以提取手写文本,并将扫描文档中的文本提取为图像文件。标签检测代码如下:
var client = ImageAnnotatorClient.Create();
var image = 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 = 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 = System.Drawing.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
在 IronOCR 中阅读 PDF 文件就像阅读图像文件一样简单。 您只需将图像阅读代码中的 "AddImage "方法更改为 "AddPdf "即可。 代码如下
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddPdf("test-files/example.PDF");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
var OCR = new IronTesseract();
using (var Input = new OcrInput()){
Input.AddPdf("test-files/example.PDF");
var Result = OCR.Read(Input);
Console.WriteLine(Result.Text);
}
Dim OCR = New IronTesseract()
Using Input = New OcrInput()
Input.AddPdf("test-files/example.PDF")
Dim Result = OCR.Read(Input)
Console.WriteLine(Result.Text)
End Using
提取的文本格式与 PDF 文件相同。
Google OCR 还提供从 PDF/TIFF 文档中提取文本的功能。 但是,只有当文件在 Google 云存储中时,它才能检测到文本。 为此,您需要创建一个 Google 存储桶。 C# 的代码并不简单,在这里实现相当冗长。 目前还没有 C# 检测文件中文本的样本。 您可以查看Java 代码作为尝试的参考。
IronOCR 用于开发目的是免费的,但用于商业用途需要获得许可。 它还提供免费试用,以测试其满足您需求的所有潜力。 Lite 软件包从 $749 开始,带有免费试用. IronOCR 免费提供 1 年的产品支持和更新,之后每年的费用为 399 美元。 所有许可证都是永久性的,这意味着只需一次性购买,没有隐藏费用。 您还可以为 SaaS 和 OEM 产品选择免版税的再分发服务,单次购买只需 1999 美元。 有关许可证套餐和定价计划的更多信息,请访问这里.
Google Cloud Vision 的定价计划基于应用程序对图像执行的操作次数。 对于像 PDF 这样有多个页面的文件,每个页面都被视为一个图像。 此外,应用于图像的每个功能都是一个单独的计费单位。 例如,如果您在同一张图片上应用文本检测和标签检测,则每项功能将单独收费。 定价方案如下,如需了解更多信息,请访问此处链接.
IronOCR 为 C# 开发人员提供了我们所知的任何平台上最先进的 Tesseract API。 IronOCR 可部署在 Windows、Linux、Mac、Azure、AWS、Lambda 上,支持 .NET Framework 项目以及 .NET Standard 和 .NET Core_。 我们还可以在OCR扫描中读取条形码,并且还可以将我们的OCR导出为HTML和可搜索的PDF。
Google Cloud Vision API 是一款先进的人工智能内置 API。 它提供了各种图像分析功能,对构建 ML 应用程序非常有帮助。 它允许开发人员使用 API 密钥直接与 Google Cloud 通信,这意味着无需在本地存储文件。
IronOCR 许可证是基于用户的,这意味着您应始终根据将使用该产品的开发人员数量来购买许可证。 Google Cloud Vision 许可证根据从中提取信息和分析数据的图片数量而定。 许可证是按月发放的,与 IronOCR 许可证相比,大量图片的价格变得非常高。 此外,IronOCR 许可证为一次性购买,可终身使用,支持 OEM 和 SaaS 分发。
总之,这两个库都具有机器学习功能。 IronOCR 与 Google OCR 相比略胜一筹,因为它是专门为 C# .NET Framework 打造的,速度快、省时。 它以极少的代码行提供所有功能,减轻了开发人员编写冗长代码的负担。 它基于最流行的 Tesseract 5 API 构建,可以轻松集成和分析图像以及其他文件格式,并提供准确的输出。 另一方面,Google Vision OCR 建立在人工智能的基础上,更侧重于 Java、Python 和 REST,并且只能在连接到 Google Cloud 时运行。 这可能会很耗时,因为响应来自服务器端。您可以根据自己的具体需求选择库。
现在,您可以用 2 个产品的价格获得 5 个 Iron 产品。Iron Suite 包含以下工具: