与其他组件比较

Tesseract 与 Microsoft OCR:正面比较

发布 2024年三月26日
分享:

介绍

在光学字符识别方面,开发人员经常需要在 Tesseract OCR 工具和 Microsoft OCR 引擎之间做出选择。(光学字符识别)在C#中。 尽管两者的功能、效率、集成度和易用性不同,但它们都是从照片或扫描文档中提取文本的有效 OCR 工具。 在 C# 开发的框架内,我们将在本文中彻底研究不同 OCR 工具(如 Tesseract 与 Microsoft OCR)的优点、缺点和适用性。

什么是 OCR?

光学字符识别简称 OCR。 这是一种可以将各种文件格式(如扫描图像文件、PDF 文件或数码相机照片)转化为可编辑和可搜索数据的技术。 要将图像的形式和图案转换为机器可读文本,需要使用不同的 OCR 工具(如 Google Cloud Vision 或 Google Vision OCR)对图像进行分析。 通过使用这种技术,用户可以从照片中获取文本,并像使用数字文档一样编辑、搜索和更改内容。

魔方 OCR

魔方 OCR是一个开放源码的光学字符识别(光学字符识别)Tesseract 是 Tesseract 引擎的简称,有时也简称为 Tesseract。 Tesseract 最初由惠普实验室于 20 世纪 80 年代创建,目前由谷歌负责维护,是当今最流行的 OCR 引擎之一。

Tesseract 的主要功能是识别图片中的文本或处理扫描文档,并将其翻译为机器可读文本。 该工具允许用户从各种来源(包括扫描文件分析、照片和 PDF 文件)中提取文本,从而使文本可编辑、可搜索和可操作。

Tesseract OCR 的主要功能

  • 开源:根据 Apache License 2.0 条款,任何人都可以免费使用、修改和分发 Tesseract。得益于社区的贡献,其开源设计极大地促进了它的广泛采用和持续改进。
  • 语言支持:除这些语言外,Tesseract 还能识别 100 多种不同的脚本和字符集。 由于具有多语言功能,它适用于各种语言和地理区域的各种 OCR 应用程序。
  • 准确性:Tesseract 以其出色的文本识别准确性而闻名,尤其是在正确设置并使用相关数据进行训练的情况下。 它可以从存在各种问题的照片中可靠地提取文字,包括扭曲的角度、低质量和光照不足。
  • 选项:Tesseract 提供了大量的配置和自定义选项。 针对特定的使用情况,用户可以调整多个参数,以最大限度地提高 OCR 性能。 此外,Tesseract 可以与 Java、C++、Python 和 C# 等多种平台和计算机语言相结合,使开发人员能够在广泛的应用中利用其功能。
  • Tesseract 经过不断的开发和维护,定期添加新功能,以提高其准确性、性能和语言支持。 Tesseract 的开源社区支持其持续开发,确保其始终是最先进的 OCR 工具。

安装 Tesseract OCR For .NET

第一步是在电脑上安装 Tesseract OCR。您可以从 Tesseract 官方 GitHub 仓库获取 Tesseract 安装程序:https://github.com/tesseract-ocr/tesseract

要在计算机上安装 Tesseract OCR,请按照操作系统的具体设置说明进行操作(Windows、macOS 或 Linux). 安装 Tesseract OCR 后,使用 Visual Studio 的 NuGet 包管理器将 Tesseract.NET 封装程序添加到 C# 项目中。

在 Visual Studio 中打开 C# 项目后,导航至工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet 包。 通过在 NuGet 软件包管理器中搜索 "Tesseract",您应该可以找到名为 "Tesseract "或 "Tesseract.NET "的软件包。 要将软件包包含在您的项目中,请选择该软件包并单击 "安装"。

Tesseract 与 Microsoft OCR(OCR 功能比较):图 1 - Tesseract

使用C#的Tesseract OCR

在安装 Tesseract.NET 包装之后,您必须在 C# 项目中设置 Tesseract,以指定 Tesseract OCR 可执行文件和语言数据文件的位置。 这里有一个例子:

using Tesseract;
class Program
{
    static void Main(string [] args)
    {
        using (var engine = new TesseractEngine(@"path_to_tesseract_folder", "eng", EngineMode.Default))
        {
            using (var img = Pix.LoadFromFile("image.png"))
            {
                using (var page = engine.Process(img))
                {
                    var text = page.GetText();
                    Console.WriteLine(text);
                }
            }
        }
    }
}
using Tesseract;
class Program
{
    static void Main(string [] args)
    {
        using (var engine = new TesseractEngine(@"path_to_tesseract_folder", "eng", EngineMode.Default))
        {
            using (var img = Pix.LoadFromFile("image.png"))
            {
                using (var page = engine.Process(img))
                {
                    var text = page.GetText();
                    Console.WriteLine(text);
                }
            }
        }
    }
}
Imports Tesseract
Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Using engine = New TesseractEngine("path_to_tesseract_folder", "eng", EngineMode.Default)
			Using img = Pix.LoadFromFile("image.png")
				Using page = engine.Process(img)
					Dim text = page.GetText()
					Console.WriteLine(text)
				End Using
			End Using
		End Using
	End Sub
End Class
VB   C#

为此,请在 TesseractEngine 构造函数选项中提供 Tesseract 安装目录的位置和您希望使用的一种或多种语言。 将 "eng "替换为您希望使用的一种或多种语言的语言代码(例如,"eng "表示英语)和 "path_to_tesseract_folder "与您的 Tesseract 安装目录的实际路径。

在 C# 项目中设置 Tesseract 后,您现在就可以利用其 OCR 功能从图片中提取文本。 TesseractEngine 实例加载图片后,可使用 Pix 类提取文本或在图像文件上运行 OCR,将 "image.png "替换为图像文件的路径。

什么是 Microsoft OCR?

微软认知服务包包括微软 OCR微软光学字符识别(Microsoft Optical Character Recognition),有时也被称为 "微软光学字符识别"。 Microsoft Azure 提供基于云的光学字符识别功能(光学字符识别)可从文档和照片中提取文本的解决方案,具有增强的文本识别能力。 Microsoft OCR 使用深度神经网络和机器学习技术来识别各种来源的文本,准确性极高。

主要功能

  • 与 Azure 认知服务集成:Microsoft OCR 与 Azure Cognitive Services(AI 驱动的 Microsoft Azure API 和服务的集合)协同工作。 通过这种连接,开发人员可以使用 REST API、SDK 和客户端库,轻松地将 Microsoft OCR 功能集成到应用程序和工作流中。
  • 高准确性和高性能:由于 Microsoft OCR 采用了在大量数据集上训练过的复杂机器学习模型,因此可提供高准确度和高性能的文本识别。 它能够从布局复杂的照片、各种字体和手写文本中精确提取文本,适用于各种 OCR 应用。
  • 可扩展性和可靠性:Microsoft OCR 是 Azure 认知服务的一个组件,具有可扩展性和可靠性,适用于具有不同处理要求的应用程序。 它可以有效管理大量文件和同时处理多个请求,保证正常运行时间和稳定的性能。
  • 多语言支持:Microsoft OCR 与其他 OCR 程序一样,可以进行多语言识别,允许用户从照片中提取各种语言和字符集的文本。 由于支持多种语言,它适用于具有各种语言需求的全球应用程序。

    您必须将 Microsoft OCR 与 Azure 认知服务(尤其是计算机视觉 API)相结合,才能在 C# 项目中使用它。 您可以从这里开始:

创建 Azure 帐户

如果您还没有 Azure 帐户,则必须创建一个。 您可以创建一个免费的 Azure 账户,并在试用期间访问多项服务。

配置 Azure 认知服务

必须在拥有 Azure 帐户时配置 Azure 认知服务中的计算机视觉服务。

  • 打开Azure 门户。
  • 点击 "创建资源 "查找 "计算机视觉"。
  • 选择计算机视觉服务后点击 "创建"。
  • 要配置服务,请根据提示选择订阅和价格层级。
  • 服务构建完成后,转到资源并保存订阅密钥和端点 URL; 您将需要它们来验证您查询的真实性。

安装 Azure 认知服务 SDK

可以使用 Microsoft Azure。 要在您的 C# 项目中与计算机视觉 API 通信,请使用 CognitiveServices.Vision.ComputerVision NuGet 软件包。

在 Visual Studio 中打开 C# 项目后,导航至工具 -> NuGet 包管理器,然后管理解决方案的 NuGet 包。

通过搜索 "Microsoft.Azure.CognitiveServices.Vision.ComputerVision "安装软件包。

Tesseract 与 Microsoft OCR(OCR 功能比较):图 2 - Microsoft.Azure.CognitiveServices.Vision.ComputerVision

Microsoft OCR Using C#

安装 SDK 后,您可以使用计算机视觉 API 进行 OCR 识别。 下面是一个使用计算机视觉 API 对图像进行 OCR 识别的介绍性示例:

using System;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
class Program
{
    static async System.Threading.Tasks.Task Main(string [] args)
    {
        var endpoint = "YOUR_ENDPOINT";
        var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";
        var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
        {
            Endpoint = endpoint
        };
        var result = await client.RecognizeTextAsync("image.png", TextRecognitionMode.Printed);
        foreach (var region in result.Regions)
        {
            foreach (var line in region.Lines)
            {
                foreach (var word in line.Words)
                {
                    Console.WriteLine(word.Text);
                }
            }
        }
    }
}
using System;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
class Program
{
    static async System.Threading.Tasks.Task Main(string [] args)
    {
        var endpoint = "YOUR_ENDPOINT";
        var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";
        var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
        {
            Endpoint = endpoint
        };
        var result = await client.RecognizeTextAsync("image.png", TextRecognitionMode.Printed);
        foreach (var region in result.Regions)
        {
            foreach (var line in region.Lines)
            {
                foreach (var word in line.Words)
                {
                    Console.WriteLine(word.Text);
                }
            }
        }
    }
}
Imports System
Imports Microsoft.Azure.CognitiveServices.Vision.ComputerVision
Imports Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models
Friend Class Program
	Shared Async Function Main(ByVal args() As String) As System.Threading.Tasks.Task
		Dim endpoint = "YOUR_ENDPOINT"
		Dim subscriptionKey = "YOUR_SUBSCRIPTION_KEY"
		Dim client = New ComputerVisionClient(New ApiKeyServiceClientCredentials(subscriptionKey)) With {.Endpoint = endpoint}
		Dim result = Await client.RecognizeTextAsync("image.png", TextRecognitionMode.Printed)
		For Each region In result.Regions
			For Each line In region.Lines
				For Each word In line.Words
					Console.WriteLine(word.Text)
				Next word
			Next line
		Next region
	End Function
End Class
VB   C#

要在图像文件上执行 OCR,请用图像文件的路径替换上面代码示例中的 "image.png"。这段代码将从图像中获取识别出的文本,并将其发送给计算机视觉 API。 在 Azure Cognitive Services 中配置计算机视觉服务后收到的端点 URL 和订阅密钥应替换为 "YOUR_ENDPOINT "和 "YOUR_SUBSCRIPTION_KEY"。

什么是IronOCR?

开发人员可以使用 IronOCR(一个 .NET OCR 库)将文本识别功能整合到他们的 C# 或 VB.NET 应用程序中。 它提供了一个用户友好的 API,用于从 PDF、图片和其他类型的媒体中提取文本。 Iron Software 是一家专门从事 .NET 组件和库的软件开发企业,负责创建和维护 IronOCR。

IronOCR 的主要功能

  • 简单集成:您可以利用 NuGet 软件包或在项目中直接访问库,将 IronOCR for .NET 轻松集成到您的 C# 或 VB.NET 项目中。
  • 多功能 OCR:IronOCR 可以识别截图、扫描文档、PDF 文件和照片等多种来源的文本。它能处理多种图像类型,包括 BMP、TIFF、PNG 和 JPEG。
  • 准确的文本识别:IronOCR 利用先进的 OCR 算法实现了出色的文本识别准确性。 使用它可以可靠地提取不同分辨率、字体和背景的照片中的文本。
  • 支持多种语言:IronOCR 适合多语言应用程序,因为它可以识别多种语言。 它可以进行定制语言培训,并内置了常用语言的语言包。
  • PDF 文本提取:IronOCR 可以提取扫描 PDF 和基于图像的 PDF 文本。 在删除 PDF 文档中的文本时,可以保持内容的原始格式和布局。
  • 图像预处理:在进行 OCR 处理之前,IronOcr 可以通过图像预处理功能提高输入图像的质量。 其中包括纠偏、对比度修改和降噪等任务。

IronOCR 使用 C#

下面是一个基本的 C# 示例:

var Ocr = new IronTesseract(); // nothing to configure            
Ocr.Language = OcrLanguage.EnglishBest;                                     
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;            
using (var Input = new OcrInput())      
{          
    Input.AddImage(@"Demo.png");         
    var Result = Ocr.Read(Input);       
    Console.WriteLine(Result.Text);        
    Console.ReadKey();          
}
var Ocr = new IronTesseract(); // nothing to configure            
Ocr.Language = OcrLanguage.EnglishBest;                                     
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5;            
using (var Input = new OcrInput())      
{          
    Input.AddImage(@"Demo.png");         
    var Result = Ocr.Read(Input);       
    Console.WriteLine(Result.Text);        
    Console.ReadKey();          
}
Dim Ocr = New IronTesseract() ' nothing to configure
Ocr.Language = OcrLanguage.EnglishBest
Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5
Using Input = New OcrInput()
	Input.AddImage("Demo.png")
	Dim Result = Ocr.Read(Input)
	Console.WriteLine(Result.Text)
	Console.ReadKey()
End Using
VB   C#

通过使用上述代码,我们可以以最高的 OCR 准确率从图像中提取数据。 此外,IronOCR 还能帮助将从手写文档中提取的文本转换为可编辑的文件格式,包括 Word。 我们还可以将扫描文件转化为可搜索的 PDF 文件。 通过 IronOCR,翻译结果可以存储为各种 OCR 输出格式。 要了解有关代码的更多信息,请参考这里.

来源图片:

Tesseract 与 Microsoft OCR(OCR 功能比较):图 3 - 输入图像

结果

Tesseract 与 Microsoft OCR(OCR 功能比较):图 4 - 控制台输出

结论

总之,Tesseract 和 Microsoft OCR 各自具有独特的优缺点,可为 C# 开发人员提供强大的 OCR 功能。 由于 Tesseract 具有定制性和灵活性,对于需要进行大量微调的应用程序来说,它是一个不错的选择。 不过,对于需要复杂文本识别功能的 C# 应用程序来说,Microsoft OCR 是最佳选择,因为它具有高准确性、可扩展性以及与 Azure 服务的无缝连接。 对于他们的 C# 项目,开发人员在决定使用 Tesseract 还是 Microsoft OCR 之前,应权衡个人需求、修改要求和资金限制。

最后,IronOCR 是一款卓越的 OCR 解决方案,具有出色的集成性、灵活性和准确性。 IronOCR 具有无与伦比的准确性、先进的算法以及识别包括手写文档在内的多种文档类型的能力,是目前市场上最优秀的 OCR 解决方案。 由于 IronOCR 可以在众多文档和常用计算机语言中顺利集成,因此它可以确保开发人员的可访问性,同时保持直观的界面。

您可以免费试用经济实惠的 IronOCR 开发版,如果购买 IronOCR 软件包,还将获得终身许可。 IronOCR 捆绑软件的起价为 $749,只需支付一个价格即可购买多个设备,非常超值。 要了解有关费用的更多信息,请访问 IronOCR网站. 点击此处链接了解有关 Iron Software 产品的更多信息。

< 前一页
ABBYY FineReader 与 Tesseract:OCR 对比
下一步 >
发票 OCR 开源比较:找到最佳工具

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

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