跳至页脚内容
使用 IRONOCR

如何在 C# 中创建 OCR 收据扫描器

本教程旨在帮助初学者使用 C# 中的 OCR API OCR 收据扫描仪创建一个 IronOCR 。 本指南结束时,您将了解如何使用收据 OCR API 实现光学字符识别 (OCR),将不同类型的收据文件转换为可编辑和可搜索的数据。 对于希望实现费用管理自动化并尽量减少人工数据输入的企业来说,这项技术可以改变游戏规则。 让我们开始吧!

如何在 C# 中创建 OCR 收据扫描仪;

1.在 Visual Studio 中创建一个 C# 控制台项目。 2.使用 NuGet 软件包管理器安装 OCR 库。 3.使用 OcrInput 方法将收据加载到程序中。 4.使用 Read 方法提取文本。 5.在控制台上显示提取的文本。

前提条件

在我们进入编码部分之前,请确保您具备以下条件:

1.Visual Studio:这将是我们的集成开发环境(IDE),我们将在这里编写和运行 C# 代码。 2.IronOCR 库:我们将使用 IronOCR,这是一个可以轻松集成到 C# 应用程序中的高级 OCR 库。 3.收据样本:名为 Sample_Receipt.jpg的收据图像文件,我们将使用该文件测试我们的OCR 实现

!a href="/static-assets/ocr/blog/ocr-receipt-scanner-csharp-tutorial/ocr-receipt-scanner-csharp-tutorial-1.webp">How To Create an OCR Receipt Scanner In C#:图 1 - 样本收据的图像

步骤 1:设置项目

打开 Visual Studio:在桌面或应用程序菜单中找到 Visual Studio 图标,然后双击该图标打开程序。

创建新项目:打开 Visual Studio 后,您将看到一个启动窗口。 单击 "创建新项目 "按钮。 如果您已经打开了 Visual Studio,但没有看到启动窗口,可以通过单击顶部菜单中的 "文件">"新建">"项目 "来访问该窗口。

选择项目类型:在 "创建新项目 "窗口中,您将看到各种项目模板。 在搜索框中输入 "Console App "过滤选项,然后根据您的偏好和兼容性选择 Console App (.NET Core) 或 Console App (.NET Framework)。 然后单击下一步按钮。

配置新项目:现在,您将看到一个名为 "配置新项目 "的屏幕。

  • 在项目名称字段中,输入 OCRReceiptScanner 作为项目名称。
  • 在位置字段中选择或确认保存项目的位置。
  • 如果希望解决方案名称与项目名称不同,还可以选择指定解决方案名称。
  • 填写完这些详细信息后,请单击下一步按钮。

附加信息:可能会要求您选择目标 .NET Framework。 选择最新版本(除非您有特定的兼容性要求),然后单击 创建

步骤 2:集成 IronOCR。

在使用 IronOCR 库之前,我们需要将其包含在我们的项目中。 请遵循以下步骤:

1.右键单击解决方案资源管理器中的项目。 2.选择 "管理 NuGet 软件包"。 3.在 NuGet 包管理器窗口中,您将看到几个选项卡,如 浏览已安装更新合并。 单击浏览选项卡。 4.在搜索框中输入 IronOcr。 这是我们希望添加到项目中的库的名称。 按回车键搜索。 5.搜索结果将显示 IronOCR 库包。 这应该是您最先看到的结果之一。 点击选择。 6.选择 IronOCR 软件包后,您会发现右侧有一个面板显示该软件包的信息,包括描述和版本。 该面板中还有一个 Install 按钮。

如何在 C# 中创建 OCR 收据扫描仪:图 2 - 通过 NuGet 包管理器安装 IronOCR

7.单击安装按钮。 此操作可能会提示您查看更改,并可能会显示与 IronOcr 一起包含的依赖项列表。 检查更改和依赖关系,如果一切正常,则确认并继续安装。

步骤 3:配置项目

安装 IronOCR 后,下一步就是配置项目。 具体方法如下

添加命名空间:在 Program.cs 文件的顶部,包含以下命名空间:

using IronOcr;
using System;
using IronOcr;
using System;
Imports IronOcr
Imports System
$vbLabelText   $csharpLabel

配置设置:如果您有任何配置设置,如 API 密钥或许可证密钥,请务必将其包含在内。 对于 IronOCR,您需要设置许可证密钥,如提供的代码所示:

License.LicenseKey = "License-Key"; // replace 'License-Key' with your key
License.LicenseKey = "License-Key"; // replace 'License-Key' with your key
License.LicenseKey = "License-Key" ' replace 'License-Key' with your key
$vbLabelText   $csharpLabel

步骤 4:读取收据

现在,让我们编写代码来读取收据。

定义收据路径:指定要扫描的收据文件的路径。

string pdfFilePath = "Sample_Receipt.jpg";
string pdfFilePath = "Sample_Receipt.jpg";
Dim pdfFilePath As String = "Sample_Receipt.jpg"
$vbLabelText   $csharpLabel

Try-Catch 块:使用 try-catch 块实现错误处理。 这将有助于您管理 OCR 过程中出现的任何异常情况。

try
{
    // OCR code will go here
}
catch (Exception ex)
{
    // Handle exceptions here
    Console.WriteLine($"An error occurred: {ex.Message}");
}
try
{
    // OCR code will go here
}
catch (Exception ex)
{
    // Handle exceptions here
    Console.WriteLine($"An error occurred: {ex.Message}");
}
Try
	' OCR code will go here
Catch ex As Exception
	' Handle exceptions here
	Console.WriteLine($"An error occurred: {ex.Message}")
End Try
$vbLabelText   $csharpLabel

步骤 5:实施 OCR.

在第 5 步,我们将深入探讨应用程序的核心功能:实施 OCR 来读取和解释收据中的数据。 这包括初始化 OCR 引擎、配置输入、执行 OCR 操作和显示结果。

初始化 IronTesseract

代码的第一部分创建了一个 IronTesseract 类的实例:

var ocr = new IronTesseract();
var ocr = new IronTesseract();
Dim ocr = New IronTesseract()
$vbLabelText   $csharpLabel

通过创建 IronTesseract 实例,我们基本上设置了 OCR 工具,使其能够执行文本识别任务。 这就好比在驾驶汽车之前先启动发动机。 该对象将用于控制 OCR 过程,包括读取输入内容并从中提取文本。

配置 OCR 输入

接下来,我们定义 OCR 流程的输入:

using (var input = new OcrInput(pdfFilePath))
{
    // OCR processing will go here
}
using (var input = new OcrInput(pdfFilePath))
{
    // OCR processing will go here
}
Using input = New OcrInput(pdfFilePath)
	' OCR processing will go here
End Using
$vbLabelText   $csharpLabel

在本段中,OcrInput 用于指定我们要处理的文件。 pdfFilePath 是一个变量,其中包含我们的收据文件的路径。通过将此变量传递到 OcrInput 中,我们将告诉 OCR 引擎:"这是我希望您读取的文件"。using 语句是一种特殊的 C# 结构,可确保在处理完成后,OcrInput 所使用的资源(如文件句柄)被正确释放。 这是一种有效管理资源的方法,可确保您的应用程序顺利运行,而不会造成不必要的内存占用。

执行 OCR

using 块中,我们在 ocr 实例上调用 Read 方法:

var result = ocr.Read(input);
var result = ocr.Read(input);
Dim result = ocr.Read(input)
$vbLabelText   $csharpLabel

Read 方法将输入文件路径作为参数。 此行将开始扫描收据。 它将对给定的输入文件进行 OCR 处理,提取数据并将其存储到变量 result 中。 我们可以使用该方法提取的文本执行任何文本操作。

输出结果

最后,我们输出 OCR 识别出的文本:

Console.WriteLine(result.Text);
Console.WriteLine(result.Text);
Console.WriteLine(result.Text)
$vbLabelText   $csharpLabel

result 变量包含 OCR 过程的输出,result.Text 包含从收据中提取的实际文本。 然后,Console.WriteLine 函数会获取这些文本并将其显示在控制台上。 这样您就可以看到并验证 OCR 过程的结果。 以下是完整的 Program.cs 文件代码:

using IronOcr;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Set your IronOCR license key
        License.LicenseKey = "Your-License-Key";

        // Define the path to the receipt image
        string pdfFilePath = "Sample_Receipt.jpg";

        try
        {
            // Initialize the OCR engine
            var ocr = new IronTesseract();

            // Define the input file
            using (var input = new OcrInput(pdfFilePath))
            {
                // Perform OCR and get the result
                var result = ocr.Read(input);

                // Display the extracted text
                Console.WriteLine(result.Text);
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions and log them if necessary
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
using IronOcr;
using System;

class Program
{
    static void Main(string[] args)
    {
        // Set your IronOCR license key
        License.LicenseKey = "Your-License-Key";

        // Define the path to the receipt image
        string pdfFilePath = "Sample_Receipt.jpg";

        try
        {
            // Initialize the OCR engine
            var ocr = new IronTesseract();

            // Define the input file
            using (var input = new OcrInput(pdfFilePath))
            {
                // Perform OCR and get the result
                var result = ocr.Read(input);

                // Display the extracted text
                Console.WriteLine(result.Text);
            }
        }
        catch (Exception ex)
        {
            // Handle exceptions and log them if necessary
            Console.WriteLine($"An error occurred: {ex.Message}");
        }
    }
}
Imports IronOcr
Imports System

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Set your IronOCR license key
		License.LicenseKey = "Your-License-Key"

		' Define the path to the receipt image
		Dim pdfFilePath As String = "Sample_Receipt.jpg"

		Try
			' Initialize the OCR engine
			Dim ocr = New IronTesseract()

			' Define the input file
			Using input = New OcrInput(pdfFilePath)
				' Perform OCR and get the result
				Dim result = ocr.Read(input)

				' Display the extracted text
				Console.WriteLine(result.Text)
			End Using
		Catch ex As Exception
			' Handle exceptions and log them if necessary
			Console.WriteLine($"An error occurred: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

步骤 6:运行应用程序

1.构建项目:单击 "构建 "菜单,然后选择 "构建解决方案"。 2.运行项目:按 F5 或单击 "Start(开始)"按钮运行应用程序。

现在,您可以看到从收据输出到控制台的文本。 此文本代表从您的收据图像中提取的数据。 我们就是这样使用 IronOCR 扫描收据的。 这是一个使用 OCR 功能从纸质收据中提取数据的简单示例。这是一个非常通用的实现。 您可以修改代码,使其与收据图片的布局相匹配。

!a href="/static-assets/ocr/blog/ocr-receipt-scanner-csharp-tutorial/ocr-receipt-scanner-csharp-tutorial-3.webp">How To Create an OCR Receipt Scanner In C#:图 3 - 上一代码示例的输出文本。

之后,您可以使用我们扫描收据后从收据中获得的非结构化数据。我们可以从收据的特定部分获取重要信息。 或者,我们可以以更有条理的方式展示收据数据。 我们可以使用 IronOCR 制作一个 OCR 收据扫描软件应用程序。 这将有助于我们提取准确的收据字段数据。

结论

祝贺您! 您已经使用 C# 和 IronOCR 成功构建了一个 OCR 收据扫描仪。 该扫描仪可大大提高数据提取的准确性,满足各种业务需求,如费用跟踪、供应链管理等。 以后再也不用查看扫描的收据并手动提取数据了。

IronOCR 提供免费试用,允许用户免费探索和评估其功能。对于那些寻求在专业设置中集成和利用全部功能的用户,许可证起价为 $799,可为强大的 OCR 收据扫描和数据提取需求提供全面的解决方案。

请记住,这仅仅是个开始。 您可以扩展此应用程序,以支持各种文件类型,改善数据隐私,或集成其他功能,如识别特定字段的收据,如税额、日期、行项目等。 有了 OCR 技术,我们就有了无限可能,为更高效、更智能的业务流程铺平了道路。 祝您编码愉快!

常见问题解答

什么是 OCR 收据扫描器,它如何有利于企业?

OCR 收据扫描器是一种使用光学字符识别技术将收据图像转换为可编辑和可搜索数据的工具。这可以通过自动化数据输入任务显著提升业务流程,特别是在费用管理等领域。

如何在 C# 中创建 OCR 收据扫描器?

要在 C# 中创建 OCR 收据扫描器,您可以使用 IronOCR 库。首先在 Visual Studio 中设置一个 C# 控制台项目,通过 NuGet 包管理器安装 IronOCR,然后按照教程对收据文件实现 OCR 功能。

设置 OCR 收据扫描器的先决条件是什么?

先决条件包括安装 Visual Studio、获取 IronOCR 库以及一份样本收据图像文件以测试 OCR 过程。

如何在我的 C# 项目中安装 IronOCR 库?

您可以使用 Visual Studio 中的 NuGet 包管理器安装 IronOCR 库。搜索 IronOCR,并将其添加到项目中以访问其 OCR 功能。

IronTesseract 类在 OCR 中如何工作?

IronTesseract 类用于在 IronOCR 库中初始化 OCR 引擎,允许您对收据图像执行文本识别任务。

如何在 C# 中处理 OCR 过程中的错误?

在 C# 代码中可以使用 try-catch 代码块来处理 OCR 过程中出现的错误。这将有助于管理异常,确保即使在遇到问题时应用程序也能顺畅运行。

如何增强我的 OCR 收据扫描器的功能?

您可以通过支持各种文件类型、提高数据隐私或集成附加功能,如针对收据的字段特定识别以提高数据提取准确性,来扩展应用程序。

在 C# 应用程序中集成 OCR 技术的最佳实践是什么?

最佳实践包括使用可靠的库如 IronOCR,使用 try-catch 代码块处理错误,并对多种收据格式优化扫描器以确保准确的数据提取。

如何使用 C# 将收据图像转换为文本?

您可以在 C# 中使用 IronOCR 库将收据图像转换为文本。利用 OcrInput 类指定图像,然后使用 IronTesseract 类处理它以提取文本。

IronOCR 提供哪些授权选项?

IronOCR 提供免费试用以供探索,并提供适用于专业设置的经济实惠的授权选项,使其可用于各种需要 OCR 技术的应用程序。

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