C# 和 .NET 中的中文 OCR.

This article was translated from English: Does it need improvement?
Translated
View the article in English

本文档的其他版本:

IronOCR 是一个 C# 软件组件,它允许 .NET 开发人员从图像和 PDF 文档中读取 126 种语言(包括中文)的文本。 中文语言包包含简体中文和繁体中文。

它是 Tesseract 的一个高级分支,专为 .NET 开发人员构建,在速度和准确性方面通常优于其他 Tesseract 引擎。 该库能够识别各种语言(包括中文)的不同格式的图像和文档。 它支持超过 126 种语言,与同类产品相比具有很高的识别准确性。 IronOCR 的 API 设计时考虑了可扩展性和定制化。 您可以通过将调优数据或功能添加到跟踪器来增强 IronOCR 的性能。 IronOCR 使用多种光学字符识别技术,可在 Windows PC、Linux、macOS 和其他知名平台上使用。

IronOcr.Languages.Chinese 的内容

此软件包包含 126 种适用于 .NET 的 OCR 语言:

  • 中文简体
  • 中文简体最佳
  • 中文简体Fast
  • 中文简体垂直
  • 中文简体垂直最佳
  • 中文简体垂直快速
  • 中文传统
  • 中国传统美食精选
  • 中国传统斋戒
  • 中文传统垂直
  • 中文传统垂直Best
  • 中文传统垂直Fast

下载

我们可以从以下链接下载中文语言包:

使用 IronOCR 识别中文

创建或打开 C# 项目

要开始使用 IronOCR,您需要创建一个 C# .NET 项目。 为此,我们使用 Visual Studio 2022。 您可以根据自己的需要选择版本,建议使用最新版本的 Visual Studio 以获得流畅的使用体验。 我们将创建一个图形用户界面来选择图像。 IronOCR 也可以通过提供图像的直接路径在控制台应用程序中使用。 按照以下步骤在 Visual Studio 2022 中创建 C# 项目:

  • 打开 Visual Studio 2022。
  • 点击"创建一个新项目"按钮。

Image 1

在搜索栏中输入"Windows",从搜索结果中选择"Windows 窗体"应用程序,然后单击"下一步"按钮。

Image 2

  • 给项目命名。 我将此项目命名为"ChineseOCR"。 命名完成后,点击"下一步"按钮。

Image 3

  • 在下一个屏幕上选择 .NET 框架。 根据项目需求选择 .NET 框架。 本教程选用的是.NET 5.0版本。

Image 4

  • 选择完成后,点击"创建"按钮。 它将在 Visual Studio 中创建 C# Windows 窗体项目。

项目已创建完成,现在可以与 IronOCR 库一起使用。 您也可以使用现有的 C# 项目。 打开项目并继续安装 IronOCR 库。 以下部分说明如何在 C# 项目中安装 IronOCR 库。

安装

使用 NuGet 包管理器

要使用 NuGet 包管理器安装 IronOCR 库,我们必须打开 NuGet 包管理器界面。 请按照以下步骤安装 IronOCR 库:

  • 点击主菜单中的"工具",将鼠标悬停在"NuGet 程序包管理器"上,然后选择"管理解决方案的 NuGet 程序包"。

Image 5

这将打开 NuGet 包管理器界面。 转到"浏览"选项卡,搜索 IronOCR Chinese。 从搜索结果中选择正确的软件包,然后单击"安装"按钮进行安装。

Image 6

库安装将开始。 安装完成后,您就可以在项目中使用 IronOCR 库了。

使用包管理器控制台

使用控制台始终是一个简单的选择。 我们也可以使用软件包管理器控制台安装 IronOCR 库。 请按照以下步骤安装 IronOCR 库:

  • 在 Visual Studio 中打开程序包管理器控制台。 它通常位于 Visual Studio 的底部。
  • 在控制台中执行以下命令:

    Install-Package IronOcr.Languages.Chinese
  • 您将在控制台中看到库的安装进度。 它会自动安装库。 安装完成后,该项目即可使用 IronOCR 库。

代码示例:中文OCR

现在,是时候编写实现 IronOCR 库以支持中文识别的代码了。 首先,我们需要开发用于选择图像文件的前端界面。让我们看看该如何实现。

前端开发

我们将使用"工具箱"元素来设计正面。 我们将创建一个按钮、一个图片框、一个富文本框和两个标签。 我们将从工具箱中拖放这些元素,并将它们放置在 Windows 窗体中。 根据需要排列这些元素。

按钮用于从电脑中选择图像文件,图片框用于加载所选图像,富文本框用于显示输出文本。 您可以根据需要调整每个元素的大小。 最终的前端设计将如下所示:

Image 7

运行项目时会弹出此窗口。 我们已将 Windows 窗体的对齐方式设置为显示在屏幕中央。

我们的前端已经准备就绪。 现在,让我们为按钮添加后端功能。

IronOCR的后端代码

首先,导入 IronOCR 命名空间,以便在我们的代码中使用它,方法是在文件顶部写入以下代码行:

using IronOCR;
using IronOCR;
Imports IronOCR
$vbLabelText   $csharpLabel

我们将使用"选择图像"按钮来选择图像并将其加载到图片框中。 IronOCR 将处理简体中文文本图像,并在富文本框中显示输出文本。 让我们通过双击按钮并编写以下代码来为按钮添加功能:

private void btn_image_Click(object sender, EventArgs e)
{
    OpenFileDialog open = new OpenFileDialog();
    if (open.ShowDialog() == DialogResult.OK)
    {
        // Display image in picture box  
        img_image.Image = new Bitmap(open.FileName);

        var Ocr = new IronTesseract();

        // Set OCR language to Chinese Traditional
        Ocr.Language = OcrLanguage.ChineseTraditional;

        using (var Input = new OcrInput(open.FileName))
        {
            // Perform OCR on the image input
            var Result = Ocr.Read(Input);

            // Output the recognized text
            txt_output.Text = Result.Text;
        }
    }
}
private void btn_image_Click(object sender, EventArgs e)
{
    OpenFileDialog open = new OpenFileDialog();
    if (open.ShowDialog() == DialogResult.OK)
    {
        // Display image in picture box  
        img_image.Image = new Bitmap(open.FileName);

        var Ocr = new IronTesseract();

        // Set OCR language to Chinese Traditional
        Ocr.Language = OcrLanguage.ChineseTraditional;

        using (var Input = new OcrInput(open.FileName))
        {
            // Perform OCR on the image input
            var Result = Ocr.Read(Input);

            // Output the recognized text
            txt_output.Text = Result.Text;
        }
    }
}
Private Sub btn_image_Click(ByVal sender As Object, ByVal e As EventArgs)
	Dim open As New OpenFileDialog()
	If open.ShowDialog() = DialogResult.OK Then
		' Display image in picture box  
		img_image.Image = New Bitmap(open.FileName)

		Dim Ocr = New IronTesseract()

		' Set OCR language to Chinese Traditional
		Ocr.Language = OcrLanguage.ChineseTraditional

		Using Input = New OcrInput(open.FileName)
			' Perform OCR on the image input
			Dim Result = Ocr.Read(Input)

			' Output the recognized text
			txt_output.Text = Result.Text
		End Using
	End If
End Sub
$vbLabelText   $csharpLabel

当用户点击按钮时,将出现一个对话框供用户选择图像。 当用户选择图片时,图片将自动加载到图片框中。 我们使用Bitmap在图片框中显示图像。 之后,IronOCR 将图像转换为中文文本。 我们将 OCR 语言设置为繁体中文,以便识别繁体中文文本。 Ocr.Read函数处理 OCR 结果并将其存储在Result变量中。 如有需要,您可以使用SaveAs功能将文本保存为 PDF、文本或 HTML 格式,以 IronOCR 支持的各种输出格式保存文件。

运行项目

现在是时候运行项目了。 在 Visual Studio 中单击"运行"按钮。 您应该会看到以下屏幕:

Image 8

点击"选择图像"按钮。 它将打开"选择文件"对话框。 选择图像文件并按回车键。

Image 9

它会将图像加载到图片框中,自动扫描图像,并将结果显示在文本框中。

Image 10

这是我们选择的图像的输出。 IronOCR 还支持读取和扫描 PDF 文件。 您可以使用可编辑的 PDF 文件格式,通过 IronOCR 扫描和识别文本,而且支持多种语言。 IronOCR还可以将现有的PDF文档转换为可搜索的PDF文档。 它采用多种图像滤镜来增强图像清晰度。 以下是一些筛选条件:

  • Input.Binarize()
  • Input.Contrast()
  • Input.Deskew() Input.DeNoise() Input.Dilate()
  • Input.EnhanceResolution(300)

所有这些功能都能提高字符的可见性。 IronOCR 使用这些功能创建可搜索的 PDF。 下面是一个例子:

using IronOcr;
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
    Input.AddPdf("scan.pdf");
    // Clean up twisted pages
    Input.Deskew();
    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
using IronOcr;
var Ocr = new IronTesseract();
using (var Input = new OcrInput())
{
    Input.AddPdf("scan.pdf");
    // Clean up twisted pages
    Input.Deskew();
    var Result = Ocr.Read(Input);
    Result.SaveAsSearchablePdf("searchable.pdf");
}
Imports IronOcr
Private Ocr = New IronTesseract()
Using Input = New OcrInput()
	Input.AddPdf("scan.pdf")
	' Clean up twisted pages
	Input.Deskew()
	Dim Result = Ocr.Read(Input)
	Result.SaveAsSearchablePdf("searchable.pdf")
End Using
$vbLabelText   $csharpLabel

许可

IronOCR 可免费用于开发。 您可以免费使用所有功能。 IronOCR 提供免费试用版,无需支付即可生产。 Iron Software 提供一项热门优惠——五款软件产品套装,只需两款的价格。 只需一次性支付两款软件产品的费用,即可获得包括 IronPDF 和 IronXL 在内的全部五款产品。 您可以在这里找到更多关于许可方面的信息。