跳至页脚内容
使用 IRONOCR

用于多种语言的 Tesseract OCR(开发者教程)

OCR 是一种用于将不同性质的文档转换为可编辑和可搜索数据的技术。 将扫描图像、PDF 文件和数码相机照片转换为可编辑和搜索的数据。 该技术被广泛应用于将印刷文件转换为数字形式,以便进行编辑、搜索和存储,从而减少文件占用的物理空间。 OCR在数据录入自动化方面发挥了巨大作用,从而通过减少人力资源使用的劳动力为公司和组织节省了大量时间。

这是一个使用先进的机器学习技术和模式识别技术从图像中准确提取文本的过程。 OCR 的最新发展提高了其准确性,从而支持更多的语言和复杂的脚本,如阿拉伯语脚本。 OCR 在金融、卫生、立法和教育领域非常必要,是一种不可或缺的工具,在这些领域,快速处理多份印刷文件是一项先决条件。本文将使用 Tesseract 对多语言数据中的图像进行 OCR 识别。

如何在多种语言中使用 Tesseract OCR.

1.首先,在您的 .NET 项目中安装 IronOCR/Tesseract NuGet 包。 2.创建 IronTesseract 类的实例,该实例将初始化 OCR 引擎。 3.语言属性支持一种以上的语言。 4.指定要处理的图像文件路径,然后创建一个 OcrInput 对象。 5.现在,使用 IronTesseract 实例的 Read 函数对输入图像执行 OCR。 6.获取结果并显示识别出的文本。

什么是 Tesseract?

Tesseract 是一个开放的光学字符识别引擎,由惠普公司开发,后由谷歌公司维护。 它以高准确性和适应性而闻名,是最杰出的 OCR 之一。 Tesseract 支持脚本检测,可识别多种语言的文本,并能处理多种语言; 因此,它一般用于需要多语言文件和支持的项目。

Tesseract OCR 引擎可以处理图像中任何一个像素所包含的信息,按照描述字符、单词和句子的模式,最终将其转换为机器可读文本。 Tesseract 支持 TIFF、JPEG 和 PNG 等多种图像文件类型,因此可以生成纯文本、HTML 和可搜索 PDF 等格式的文本。

Tesseract 的一大优势是可以对其进行培训,使其对特定字体或新添加的语言保持敏感。 它还经常用于各种应用,从简单的文本提取到历史文件数字化、发票处理等复杂任务,甚至是为视障人士提供阅读功能的无障碍软件。

在 Visual Studio 中创建新项目

打开 Visual Studio 程序。 打开程序后,进入 "文件菜单"。在 "文件菜单 "下有一个选项 "新项目"。在 "新项目 "下,点击 "控制台应用程序"。在本篇文章中,我们将使用控制台程序创建 PDF 文档。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-1.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 1 - 创建新项目

在提供的文本框中输入您的项目名称和文件位置。 然后,如下图所示,单击 "创建 "按钮,选择您需要的 .NET Framework。

多语言 Tesseract OCR(开发者教程):图 2 - 选择 .NET 框架并提供项目和保存位置。

既然已经选择了应用程序版本,Visual Studio 项目将创建其结构。 如果您选择了控制台、Windows 或网页版本,它将打开 program.cs 文件以添加代码并构建/运行应用程序。

安装 Tesseract OCR for .NET.

第一步是在计算机上安装 Tesseract OCR 软件。 以下是包含 Tesseract 安装程序的 Tesseract 官方 GitHub 代码库:https://github.com/tesseract-ocr/tesseract

最好按照操作系统的具体设置说明将 Tesseract OCR 安装到您的计算机上--无论是 Windows、macOS 还是 Linux。 安装完成后,使用 Visual Studio 的 NuGet 软件包管理器将 Tesseract.NET 软件包添加到您的 C# 项目中。

在 Visual Studio 项目中从 Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution 打开 NuGet Package Manager。 之后,在 NuGet 软件包管理器中搜索 "Tesseract",即可获得 "Tesseract "或 "Tesseract.NET "软件包。 选择此软件包并单击安装按钮将其安装到您的项目中。

针对多种语言的Tesseract OCR(开发者教程):图3 - 在浏览标签中搜索Tesseract

使用C#进行Tesseract OCR

安装 Tesseract.NET 封装器后,您必须在 C# 项目中设置 Tesseract,指定 Tesseract OCR 可执行文件和语言数据文件的位置。 下面是一个例子:

using System;
using System.Drawing;
using Tesseract;

class Program
{
    static void Main()
    {
        // Set the path to the Tesseract data files (traineddata files)
        string tessDataPath = @"./tessdata"; // Ensure this directory contains the language data files

        // Load the image
        string imagePath = @"path_to_your_image.png";
        using (var img = Pix.LoadFromFile(imagePath))
        {
            // Add languages to the Tesseract engine
            using (var engine = new TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default))
            {
                using (var page = engine.Process(img))
                {
                    // Extract the text
                    string text = page.GetText();
                    Console.WriteLine("Recognized Text:");
                    Console.WriteLine(text);
                }
            }
        }
    }
}
using System;
using System.Drawing;
using Tesseract;

class Program
{
    static void Main()
    {
        // Set the path to the Tesseract data files (traineddata files)
        string tessDataPath = @"./tessdata"; // Ensure this directory contains the language data files

        // Load the image
        string imagePath = @"path_to_your_image.png";
        using (var img = Pix.LoadFromFile(imagePath))
        {
            // Add languages to the Tesseract engine
            using (var engine = new TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default))
            {
                using (var page = engine.Process(img))
                {
                    // Extract the text
                    string text = page.GetText();
                    Console.WriteLine("Recognized Text:");
                    Console.WriteLine(text);
                }
            }
        }
    }
}
Imports System
Imports System.Drawing
Imports Tesseract

Friend Class Program
	Shared Sub Main()
		' Set the path to the Tesseract data files (traineddata files)
		Dim tessDataPath As String = "./tessdata" ' Ensure this directory contains the language data files

		' Load the image
		Dim imagePath As String = "path_to_your_image.png"
		Using img = Pix.LoadFromFile(imagePath)
			' Add languages to the Tesseract engine
			Using engine = New TesseractEngine(tessDataPath, "eng+spa+fra", EngineMode.Default)
				Using page = engine.Process(img)
					' Extract the text
					Dim text As String = page.GetText()
					Console.WriteLine("Recognized Text:")
					Console.WriteLine(text)
				End Using
			End Using
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

上述代码解释了 Tesseract OCR 如何从包含多种语言的图像中检测和提取文本。 它最初设置了 Tesseract 语言数据文件的路径。 路径中应包含每种相应语言(如英语、西班牙语和法语)所需的 .traineddata 文件。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-4.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 4 - 输入示例

它使用 Pix.LoadFromFile 方法加载由 imagePath 指定的图像。 更具体地说,我们需要一张包含英语、西班牙语和法语文本的图片。 然后,TesseractEngine 的实例将使用语言数据文件的路径和感兴趣的语言 "eng+spa+fra "进行初始化,以识别文本。 引擎将在默认模式下工作。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-5.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 5 - 控制台输出示例

然后,将使用引擎类的 Process 方法对图像进行处理,分析图像,提取文本内容,并将其存储在变量 text 中。 然后将提取的文本打印到控制台,创建一个 OCR 工作原理的可视化界面。

What is IronOCR?

IronOCR 是一个专注于 .NET 的专有 OCR 库。 它为 .NET 应用程序添加了 OCR 功能,允许从图像、扫描文档、PDF 和所有其他可视化媒体中提取文本。 IronOcr 使用非常成功的 Tesseract 引擎驱动尖端的文本识别功能,还包括一些额外的功能,使其适合在企业应用中使用。

IronOCR 提供强大的语言支持--超过 120 种语言,支持自动语言检测和同时处理包含多种语言的文档。 这使得 IronOCR 的用途非常广泛,可以在全球范围内部署,因为多语言文档处理是非常关键的。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-6.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 6 - IronOCR:C# OCR 库。

另一方面,IronOCR 强调使用和集成的简便性。 其 API 极其易用,并辅以详细的文档和一系列示例项目,可帮助任何开发人员快速上手和运行。 它支持多种图像格式和 PDF 文档。 内置的高级图像预处理、降噪和纠错功能提高了 OCR 的准确性和性能。

安装 IronOCR。

您可以使用 Visual Studio 的 NuGet 软件包管理工具将软件包直接安装到您的解决方案中。 下面的快照显示了如何打开 NuGet 包管理器。

针对多种语言的Tesseract OCR(开发者教程):图7 - 如何通过Visual Studio访问NuGet包管理器

它有一个嵌入式搜索框,可显示 NuGet 网站上的软件包列表。如下截图所示,我们将在软件包管理器中搜索短语 IronOCR:

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-8.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 8 - 在解决方案资源管理器中搜索 IronOCR

搜索结果可能会提供一个潜在解决方案列表。 您需要选择必要的解决方案包进行安装。

此外,逐一安装所需的 Tesseract 语言包,例如本示例中的以下语言包。

在本例中,我们将使用西班牙语、法语和英语语言代码。 英语是默认语言包,无需安装。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-9.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 9 - 安装法语语言包

从 NuGet 软件包中安装西班牙语。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-10.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 10 - 安装西班牙语语言包

使用带有魔方引擎的 IronOCR 阅读多种语言

下面的示例演示了如何使用 C# 和 IronOCR 及 Tesseract 引擎从图像中识别多种语言的文本。

using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add multiple languages
        Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French;

        // Path to the image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);

            // Display the result
            Console.WriteLine("Recognized Text:");
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;

class Program
{
    static void Main(string[] args)
    {
        // Initialize IronTesseract engine
        var Ocr = new IronTesseract();

        // Add multiple languages
        Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French;

        // Path to the image
        var inputFile = @"path\to\your\image.png";

        // Read the image and perform OCR
        using (var input = new OcrInput(inputFile))
        {
            // Perform OCR
            var result = Ocr.Read(input);

            // Display the result
            Console.WriteLine("Recognized Text:");
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Initialize IronTesseract engine
		Dim Ocr = New IronTesseract()

		' Add multiple languages
		Ocr.Language = OcrLanguage.English + OcrLanguage.Spanish + OcrLanguage.French

		' Path to the image
		Dim inputFile = "path\to\your\image.png"

		' Read the image and perform OCR
		Using input = New OcrInput(inputFile)
			' Perform OCR
			Dim result = Ocr.Read(input)

			' Display the result
			Console.WriteLine("Recognized Text:")
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

上述 C# 程序使用 IronOCR 库对包含英语、西班牙语和法语字符的图像进行光学字符识别。 程序开始时导入IronOCR所需的命名空间,并声明一个名为Program的类,其中包含一个Main方法,这是应用程序的入口点。

在 Main 方法中,IronTesseract 类的实例被实例化并分配给变量 Ocr。 通过组合 OcrLanguage.English, OcrLanguage.SpanishOcrLanguage.French 设置 Language 属性以包括英语、西班牙语和法语。 这将确保 OCR 引擎能够识别和处理这三种语言中任何一种语言的文本。

输入图像文件的路径通过 inputFile 变量设置。 然后,在 using 语句中加载图像,并使用 OcrInput 类的实例进行适当的资源管理和处理。 最后,通过输入对象调用 IronTesseract 实例的 Read 方法对图像执行 OCR。

然后使用 Console.WriteLine 方法将识别的文本打印到控制台。 本程序说明了使用 IronOCR 的多语言功能从包含不同语言词汇的图像中提取文本的有效方法。

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-11.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 11 - 识别的文本输出

为什么 IronOCR 比 Tesseract 更好?

与 Tesseract 相比,IronOCR 对用户更加友好,并具有一些优势。 首先,IronOCR 可直接提供 125 种语言的出色语言支持,而 Tesseract 可能需要复杂的配置和额外的培训才能使其 100 种支持语言中的某些语言达到最佳性能。 此外,IronOCR 可轻松集成到 .NET 应用程序中,并附带全面的文档。

与 Tesseract 相比,IronOCR 的学习曲线不那么陡峭,所需的技术设置也较少。 它还具有先进的图像预处理功能和定期更新功能,在处理复杂文档类型时可获得更高的准确性和可靠性。IronOCR 是寻求稳固、多用途、易应用 OCR 解决方案的开发人员的最佳选择。

结论

!a href="/static-assets/ocr/blog/tesseract-ocr-for-multiple-languages/tesseract-ocr-for-multiple-languages-12.webp">Tesseract OCR for Multiple Languages(开发人员教程):图 12 - IronOCR 许可页面

虽然 Tesseract 和 IronOCR 都是强大的 OCR 技术,但各自都有独特的功能和优势。 Tesseract 是一款开源软件,对于任何寻求免费解决方案的人来说都是可靠的,并且拥有活跃的社区和持续的改进。

相比之下,IronOCR 是 .NET Framework 的专有库,通过更简便的集成和对大多数图像文件类型的支持改善了用户体验。它在文本识别方面也表现出色,尤其是在识别低质量图像内容时。 IronOCR 完全支持多种语言,并具有额外的功能,使其更加方便用户使用。

IronOCR 提供高性价比的开发版,购买后可获得终身许可。 IronOCR 软件包的一次性费用为 liteLicense 美元起,可用于多个系统,具有极高的性价比,并可为授权用户提供全天候在线工程师支持。 有关详细信息,请参阅 IronOCR 网站。

常见问题解答

如何在.NET项目中使用多种语言的Tesseract OCR?

您可以使用IronOCR库,它简化了Tesseract OCR的集成,以处理多种语言文本的图像。在您的.NET项目中添加IronOCR/Tesseract NuGet包,并使用IronTesseract类的Language属性配置语言。

IronOCR比标准Tesseract有哪些优势?

IronOCR为.NET应用程序提供了更友好的API,支持超过120种语言,并提供高级图像预处理以提高准确性。它与.NET项目无缝集成,提供详尽的文档和开发者支持。

IronOCR能同时处理多语言文档吗?

是的,IronOCR可以通过在Language属性中设置多种语言来处理多语言文档。此功能对全球应用特别有用,因为文档可能包含不同语言的文本。

在C#项目中设置IronOCR的流程是什么?

要在C#项目中设置IronOCR,首先通过Visual Studio的NuGet包管理器安装IronOCR/Tesseract NuGet包。然后,在代码中创建IronTesseract类的实例,并使用其方法处理包含文本的图像。

IronOCR如何提高OCR结果的准确性?

IronOCR通过高级图像预处理技术提高准确性,这些技术在文本提取前提高图像质量。此功能有助于从不同质量的图像中准确识别文本。

IronOCR 可以处理哪些类型的文档?

IronOCR可以处理多种文档类型,包括扫描图像、PDF和数码相机拍摄的照片。它将这些文档转换为可编辑和可搜索的数据格式。

IronOCR适用于自动化数据录入任务吗?

是的,IronOCR非常适合通过将印刷文档转换为数字文本来自动化数据录入,减少人工劳动并节省时间。它广泛应用于金融、健康和教育等行业。

IronOCR如何支持开发者实现OCR技术?

IronOCR提供详尽的文档、用户友好的API和全天候在线工程师支持,使开发者更容易在他们的.NET应用程序中实现OCR技术。

IronOCR的主要使用场景有哪些?

IronOCR用于数字化打印文档、自动化数据录入、处理发票以及开发为视障用户提供的无障碍软件。它适用于金融、医疗和教育等各个行业。

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