与其他组件比较

Tesseract vs Microsoft OCR(OCR功能对比)

发布 2024年三月26日
分享:

简介

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

什么是 OCR?

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

Tesseract OCR

魔方 OCR 是一个开放源码的光学字符识别 (光学字符识别) 引擎,有时简称为 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&num 的 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 Azure 提供基于云的光学字符识别技术。 (光学字符识别) 该解决方案可从文档和照片中提取文本,并具有增强的文本识别能力。Microsoft OCR 采用深度神经网络和机器学习技术,可从各种来源识别文本,准确性极高。

主要功能

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

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

创建 Azure 账户

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

配置 Azure 认知服务

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

  • 打开 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 集成到 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.9 刚刚发布

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