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

Tesseract vs Microsoft OCR:对比

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

什么是OCR?

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

Tesseract OCR

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

Tesseract 的主要功能是识别图片中包含的文本或处理扫描文档,并将其转换为机器可读文本。 这使得文本可编辑、可搜索和可操作,用户可以从各种来源提取文本,包括扫描文档分析、照片和 PDF 文件。

Tesseract OCR 的主要特点

-开源: Tesseract 根据 Apache License 2.0 的条款,可供任何人免费使用、修改和分发。由于社区的贡献,其开源设计极大地促进了其广泛应用和持续改进。 -语言支持: 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

请按照以下步骤在 C# 项目中使用 Tesseract:

using Tesseract;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the Tesseract engine with the path to your Tesseract installation and the desired language(s)
        using (var engine = new TesseractEngine(@"path_to_tesseract_folder", "eng", EngineMode.Default))
        {
            // Load the image from which to extract text
            using (var img = Pix.LoadFromFile("image.png"))
            {
                // Process the image and extract the text
                using (var page = engine.Process(img))
                {
                    // Get the extracted text
                    var text = page.GetText();
                    Console.WriteLine(text); // Print the extracted text
                }
            }
        }
    }
}
using Tesseract;

class Program
{
    static void Main(string[] args)
    {
        // Initialize the Tesseract engine with the path to your Tesseract installation and the desired language(s)
        using (var engine = new TesseractEngine(@"path_to_tesseract_folder", "eng", EngineMode.Default))
        {
            // Load the image from which to extract text
            using (var img = Pix.LoadFromFile("image.png"))
            {
                // Process the image and extract the text
                using (var page = engine.Process(img))
                {
                    // Get the extracted text
                    var text = page.GetText();
                    Console.WriteLine(text); // Print the extracted text
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

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

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

什么是微软OCR?

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

主要功能

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

要在 C# 项目中使用 Microsoft OCR,必须将其与 Azure 认知服务(更具体地说是计算机视觉 API)结合使用。 以下是开始的方法:

创建 Azure 帐户

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

配置 Azure 认知服务

如果您拥有 Azure 帐户,则必须配置 Azure 认知服务中的计算机视觉服务。

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

安装 Azure 认知服务 SDK

利用微软 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

使用 C# 的 Microsoft OCR

安装 SDK 后,您可以使用计算机视觉 API 进行 OCR 操作。 下面提供了一个使用计算机视觉 API 对图像进行 OCR 识别的入门示例:

using System;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision;
using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Set your endpoint and subscription key for authentication
        var endpoint = "YOUR_ENDPOINT";
        var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";

        // Create a new instance of the ComputerVisionClient
        var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
        {
            Endpoint = endpoint
        };

        // Perform OCR on the specified image
        var result = await client.RecognizePrintedTextInStreamAsync(true, "image.png");

        // Iterate over the results and print the recognized text
        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;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // Set your endpoint and subscription key for authentication
        var endpoint = "YOUR_ENDPOINT";
        var subscriptionKey = "YOUR_SUBSCRIPTION_KEY";

        // Create a new instance of the ComputerVisionClient
        var client = new ComputerVisionClient(new ApiKeyServiceClientCredentials(subscriptionKey))
        {
            Endpoint = endpoint
        };

        // Perform OCR on the specified image
        var result = await client.RecognizePrintedTextInStreamAsync(true, "image.png");

        // Iterate over the results and print the recognized text
        foreach (var region in result.Regions)
        {
            foreach (var line in region.Lines)
            {
                foreach (var word in line.Words)
                {
                    Console.WriteLine(word.Text);
                }
            }
        }
    }
}
$vbLabelText   $csharpLabel

要对图像文件执行 OCR 识别,请将上述代码示例中的"image.png"替换为图像文件的路径。此代码会将图像发送到计算机视觉 API,从而检索识别出的文本。 您在 Azure 认知服务中配置计算机视觉服务后收到的终结点 URL 和订阅密钥应替换为"YOUR_ENDPOINT""YOUR_SUBSCRIPTION_KEY"

什么是 IronOCR? 开发人员可以使用 .NET OCR 库 IronOCR 将文本识别功能集成到他们的 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# 以下是一个使用 IronOCR 的基本 C# 示例: ```csharp // Create an instance of IronTesseract var Ocr = new IronTesseract(); // nothing to configure // Set the language and Tesseract version to be used for OCR Ocr.Language = OcrLanguage.EnglishBest; Ocr.Configuration.TesseractVersion = TesseractVersion.Tesseract5; // Prepare the image input and perform OCR using (var Input = new OcrInput()) { // Add the image for OCR processing Input.AddImage(@"Demo.png"); // Read the text from the image var Result = Ocr.Read(Input); // Print the recognized text Console.WriteLine(Result.Text); Console.ReadKey(); // Wait for user input before closing } ``` 我们可以使用上述代码从图像中提取数据,并获得最高的 OCR 准确率。 此外,IronOCR 还有助于将从文档中提取的文本转换为可编辑的文件格式,包括 Word 文档。 我们还可以将扫描文档转换为可搜索的 PDF 文件。 使用 IronOCR,结果可以存储为各种 OCR 输出格式。 要了解更多关于该代码的信息,请参考[这里](/csharp/ocr/examples/simple-csharp-ocr-tesseract/)。 图片来源: [Tesseract 与 Microsoft OCR(OCR 功能对比):图 3 - 输入图像](/static-assets/ocr/blog/tesseract-vs-microsoft-ocr-comparison/tesseract-vs-microsoft-ocr-comparison-3.webp) 成果: [Tesseract 与 Microsoft OCR(OCR 功能对比):图 4 - 控制台输出](/static-assets/ocr/blog/tesseract-vs-microsoft-ocr-comparison/tesseract-vs-microsoft-ocr-comparison-4.webp) ## 结论 总之,Tesseract 和 Microsoft OCR 各有优缺点,都能为 C# 开发人员提供强大的 OCR 功能。 由于 Tesseract 提供定制化和灵活性,因此对于需要大量微调的应用来说,它是一个不错的选择。 然而,对于需要复杂文本识别功能的 C# 应用程序而言,Microsoft OCR 是最佳选择,因为它具有高精度、可扩展性和与 Azure 服务的无缝连接。 对于 C# 项目,开发人员在选择 Tesseract 还是 Microsoft OCR 之前,应该权衡他们的个人需求、修改要求和财务限制。 最后,IronOCR 是一款卓越的 OCR 解决方案,具有出色的集成性、灵活性和准确性。 由于其无与伦比的准确性、先进的算法以及识别各种文档类型的能力,IronOCR 是目前市场上最好的 OCR 解决方案。 由于 IronOCR 可以无缝集成到众多文档和常用计算机语言中,因此它既能确保开发人员的可访问性,又能保持直观的界面。 您可以免费试用 IronOCR 的经济实惠的开发版,如果您购买 IronOCR 套餐,您将获得终身许可证。 IronOCR 套装起价为$799 ,价格非常优惠,因为它只需一个价格即可在多个设备上使用。 要了解更多费用信息,请访问 IronOCR[网站](licensing)。 点击此[链接](/)了解更多关于Iron Software产品的信息。
请注意Tesseract 和 Microsoft OCR 是其各自所有者的注册商标。 本网站与 Tesseract 或 Microsoft OCR 没有任何关联,也未获得其认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。

常见问题解答

Tesseract 和 Microsoft OCR 在语言支持方面如何比较?

Tesseract 支持超过 100 种语言,并提供语言数据的广泛定制选项,使其具有高度的多功能性。Microsoft OCR 也通过 Azure 认知服务提供多语言支持,允许通过云进行可扩展的语言处理。

哪个 OCR 工具更适合与 C# 项目集成?

Microsoft OCR 通过 Azure 认知服务与 C# 项目无缝集成,提供基于云的可扩展性。Tesseract 可以使用 Tesseract.NET 封装器进行集成。或者,IronOCR 提供了简单的与 C# 项目集成的方案,并包含为 .NET 开发人员量身定制的附加功能。

使用 Microsoft OCR 的主要优势是什么?

Microsoft OCR 通过其基于云的系统 Azure 认知服务提供高精度、可扩展性和多语言支持,使用深度神经网络进行文本识别。

是什么使 Tesseract OCR 适合定制化?

Tesseract OCR 是开源的,并提供广泛的定制选项,使开发人员能够根据不同项目需求进行适应。它允许自定义语言训练和识别设置的微调。

与 Tesseract 和 Microsoft OCR 相比,IronOCR 如何增强 C# 项目?

IronOCR 提供简单的集成、高精度、多语言支持,以及图像预处理和 PDF 文本提取等高级功能。它设计用于 .NET 应用程序中的无缝使用,为开发人员提供直观界面。

在为 C# 选择 OCR 工具时应考虑哪些因素?

在为 C# 选择 OCR 工具时,应考虑语言支持、集成的便利性、定制选项、可扩展性和特定项目需求。Tesseract 适合定制,Microsoft OCR 适合基于云的可扩展性,IronOCR 适合 .NET 的简单集成。

IronOCR 可以用于在 C# 应用程序中将图像转换为文本吗?

可以,IronOCR 可以用于在 C# 应用程序中将图像转换为文本。它支持多种图像格式,并提供高精度的文本识别,是开发人员的可靠选择。

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