跳至页脚内容
使用 IRONOCR

收据扫描 API(开发者教程)

收据扫描 API 使用先进的 OCR 技术从收据中提取关键数据。 它通过消除手动错误和提高生产率来简化数据录入过程。 API 功能多样且准确,支持多种语言、货币和格式。 通过自动解析收据,企业可以深入了解消费模式并做出数据驱动的决策。 本文将演示如何使用 C# OCR 库IronOCR从收据中提取重要信息。

IronOCR。

IronOCR 是 Iron Software 开发的多功能 OCR 库和 API,为开发人员从扫描文档、图像和 PDF 等各种来源中提取文本提供了强大的解决方案。 IronOCR 采用先进的 OCR 算法、计算机视觉和机器学习模型,即使在具有挑战性的场景中,也能确保高准确性和可靠性。 该库支持多种语言和字体样式,适合全球应用。 通过将具有机器学习模型功能的 IronOCR 纳入其应用程序,开发人员可以轻松实现数据录入、文本分析和其他任务的自动化,从而提高生产力和效率。

有了 IronOCR,开发人员可以毫不费力地从各种来源获取文本,包括文档、照片、屏幕截图,甚至是作为 JSON 响应的实时摄像机馈送。 通过利用复杂的算法和机器学习模型,IronOCR 可以分析图像数据、识别单个字符并将其转换为机器可读文本。 提取的文本可用于各种用途,如数据录入、信息检索、文本分析和人工任务自动化。

前提条件

在开始使用 IronOCR 之前,需要具备一些先决条件。 这些前提条件包括

1.确保在计算机上设置了合适的开发环境。 这通常需要安装集成开发环境 (IDE),如 Visual Studio。 2.重要的是要对 C# 编程语言有基本的了解。 这将使您能够有效地理解和修改文章中提供的代码示例。 3.您需要在项目中安装 IronOCR 库。 这可以通过使用 Visual Studio 中的 NuGet 包管理器或命令行界面来完成。

确保满足这些先决条件,您就可以进入 IronOCR 的工作流程了。

创建一个新的 Visual Studio 项目

要开始使用 IronOCR,第一步是创建一个新的 Visual Studio 项目。

打开 Visual Studio 并转到 "文件",然后悬停在 "新建 "上,点击 "项目"。

收据扫描 API(开发人员教程),图 1:新项目图像

安装 IronOCR

在新窗口中,选择 "控制台应用程序",然后单击 "下一步"。

收据扫描 API(开发人员教程),图 2:控制台应用程序控制台应用程序

将出现一个新窗口。 写入新项目的名称和位置,然后单击 "下一步"。

收据扫描 API(开发人员教程),图 3:项目配置项目配置

最后,提供目标框架并点击创建。

收据扫描 API(开发人员教程),图 4:目标框架目标框架

现在您的新 Visual Studio 项目已经创建,让我们安装 IronOCR。

安装 IronOCR。

有几种下载和安装 IronOCR 库的方法。 不过,这里有两种最简单的方法。

1.使用 Visual Studio NuGet 软件包管理器 2.使用 Visual Studio 命令行

使用 Visual Studio NuGet 软件包管理器

IronOCR 可通过 Visual Studio NuGet 包管理器包含在 C# 项目中。

选择 工具 > NuGet软件包管理器 > 管理解决方案的 NuGet 软件包,导航至 NuGet 软件包管理器图形用户界面。

!a href="/static-assets/ocr/blog/receipt-scanning-api-tutorial/receipt-scanning-api-tutorial-5.webp">Receipt Scanning API(开发人员教程),图 5:NuGet 软件包管理器。 NuGet 软件包管理器

之后,将出现一个新窗口。 搜索 IronOCR 并将软件包安装到项目中。

!a href="/static-assets/ocr/blog/receipt-scanning-api-tutorial/receipt-scanning-api-tutorial-6.webp">收据扫描 API(开发人员教程),图 6: IronOCR IronOCR

还可以使用上述相同方法安装 IronOCR 的其他语言包。

使用 Visual Studio 命令行

1.在 Visual Studio 中,转到 工具 > NuGet软件包管理器 > 软件包管理器控制台 2.在 "软件包管理器控制台 "选项卡中输入以下一行:

```shell
:ProductInstall
```

![收据扫描 API(开发人员教程),图 7:软件包管理器控制台](/static-assets/ocr/blog/receipt-scanning-api-tutorial/receipt-scanning-api-tutorial-7.webp)。
**软件包管理器控制台**

现在,软件包将下载/安装到当前项目中,即可使用。

使用收据 OCR API 提取数据

使用 IronOCR 从收据图像中提取数据并以结构化数据形式保存,对大多数开发人员来说都是救星。 使用 IronOCR,只需几行代码就能实现这一目标。 使用该工具,您可以提取不同文档类型的行项目、定价、税额、总金额等。

using IronOcr;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class ReceiptScanner
{
    static void Main()
    {
        var ocr = new IronTesseract();
        // Load the image of the receipt
        using (var input = new OcrInput(@"r2.png"))
        {
            // Perform OCR on the input image
            var result = ocr.Read(input);

            // Regular expression patterns to extract relevant details from the OCR result
            var descriptionPattern = @"\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
            var pricePattern = @"\$\d+(\.\d{2})?";

            // Variables to store extracted data
            var descriptions = new List<string>();
            var unitPrices = new List<decimal>();
            var taxes = new List<decimal>();
            var amounts = new List<decimal>();

            var lines = result.Text.Split('\n');
            foreach (var line in lines)
            {
                // Match each line against the description pattern
                var descriptionMatch = Regex.Match(line, descriptionPattern);
                if (descriptionMatch.Success)
                {
                    descriptions.Add(descriptionMatch.Groups[1].Value.Trim());
                    unitPrices.Add(decimal.Parse(descriptionMatch.Groups[2].Value));

                    // Calculate tax and total amount for each item
                    var tax = unitPrices[unitPrices.Count - 1] * 0.15m;
                    taxes.Add(tax);
                    amounts.Add(unitPrices[unitPrices.Count - 1] + tax);
                }
            }

            // Output the extracted data
            for (int i = 0; i < descriptions.Count; i++)
            {
                Console.WriteLine($"Description: {descriptions[i]}");
                Console.WriteLine($"Quantity: 1.00 Units");
                Console.WriteLine($"Unit Price: ${unitPrices[i]:0.00}");
                Console.WriteLine($"Taxes: ${taxes[i]:0.00}");
                Console.WriteLine($"Amount: ${amounts[i]:0.00}");
                Console.WriteLine("-----------------------");
            }
        }
    }
}
using IronOcr;
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class ReceiptScanner
{
    static void Main()
    {
        var ocr = new IronTesseract();
        // Load the image of the receipt
        using (var input = new OcrInput(@"r2.png"))
        {
            // Perform OCR on the input image
            var result = ocr.Read(input);

            // Regular expression patterns to extract relevant details from the OCR result
            var descriptionPattern = @"\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)";
            var pricePattern = @"\$\d+(\.\d{2})?";

            // Variables to store extracted data
            var descriptions = new List<string>();
            var unitPrices = new List<decimal>();
            var taxes = new List<decimal>();
            var amounts = new List<decimal>();

            var lines = result.Text.Split('\n');
            foreach (var line in lines)
            {
                // Match each line against the description pattern
                var descriptionMatch = Regex.Match(line, descriptionPattern);
                if (descriptionMatch.Success)
                {
                    descriptions.Add(descriptionMatch.Groups[1].Value.Trim());
                    unitPrices.Add(decimal.Parse(descriptionMatch.Groups[2].Value));

                    // Calculate tax and total amount for each item
                    var tax = unitPrices[unitPrices.Count - 1] * 0.15m;
                    taxes.Add(tax);
                    amounts.Add(unitPrices[unitPrices.Count - 1] + tax);
                }
            }

            // Output the extracted data
            for (int i = 0; i < descriptions.Count; i++)
            {
                Console.WriteLine($"Description: {descriptions[i]}");
                Console.WriteLine($"Quantity: 1.00 Units");
                Console.WriteLine($"Unit Price: ${unitPrices[i]:0.00}");
                Console.WriteLine($"Taxes: ${taxes[i]:0.00}");
                Console.WriteLine($"Amount: ${amounts[i]:0.00}");
                Console.WriteLine("-----------------------");
            }
        }
    }
}
Imports Microsoft.VisualBasic
Imports IronOcr
Imports System
Imports System.Collections.Generic
Imports System.Text.RegularExpressions

Friend Class ReceiptScanner
	Shared Sub Main()
		Dim ocr = New IronTesseract()
		' Load the image of the receipt
		Using input = New OcrInput("r2.png")
			' Perform OCR on the input image
			Dim result = ocr.Read(input)

			' Regular expression patterns to extract relevant details from the OCR result
			Dim descriptionPattern = "\w+\s+(.*?)\s+(\d+\.\d+)\s+Units\s+(\d+\.\d+)\s+Tax15%\s+\$(\d+\.\d+)"
			Dim pricePattern = "\$\d+(\.\d{2})?"

			' Variables to store extracted data
			Dim descriptions = New List(Of String)()
			Dim unitPrices = New List(Of Decimal)()
			Dim taxes = New List(Of Decimal)()
			Dim amounts = New List(Of Decimal)()

			Dim lines = result.Text.Split(ControlChars.Lf)
			For Each line In lines
				' Match each line against the description pattern
				Dim descriptionMatch = Regex.Match(line, descriptionPattern)
				If descriptionMatch.Success Then
					descriptions.Add(descriptionMatch.Groups(1).Value.Trim())
					unitPrices.Add(Decimal.Parse(descriptionMatch.Groups(2).Value))

					' Calculate tax and total amount for each item
					Dim tax = unitPrices(unitPrices.Count - 1) * 0.15D
					taxes.Add(tax)
					amounts.Add(unitPrices(unitPrices.Count - 1) + tax)
				End If
			Next line

			' Output the extracted data
			For i As Integer = 0 To descriptions.Count - 1
				Console.WriteLine($"Description: {descriptions(i)}")
				Console.WriteLine($"Quantity: 1.00 Units")
				Console.WriteLine($"Unit Price: ${unitPrices(i):0.00}")
				Console.WriteLine($"Taxes: ${taxes(i):0.00}")
				Console.WriteLine($"Amount: ${amounts(i):0.00}")
				Console.WriteLine("-----------------------")
			Next i
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

如下所示,IronOCR 可以轻松地从收据中提取所需的文本。

收据扫描 API(开发人员教程),图 8:输出Output

提取整个收据

如果您想提取整个收据,只需在 OCR 收据上编写几行代码即可轻松实现。

using IronOcr;
using System;

class WholeReceiptExtractor
{
    static void Main()
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput(@"r3.png"))
        {
            // Perform OCR on the entire receipt and print text output to console
            var result = ocr.Read(input);
            Console.WriteLine(result.Text);
        }
    }
}
using IronOcr;
using System;

class WholeReceiptExtractor
{
    static void Main()
    {
        var ocr = new IronTesseract();
        using (var input = new OcrInput(@"r3.png"))
        {
            // Perform OCR on the entire receipt and print text output to console
            var result = ocr.Read(input);
            Console.WriteLine(result.Text);
        }
    }
}
Imports IronOcr
Imports System

Friend Class WholeReceiptExtractor
	Shared Sub Main()
		Dim ocr = New IronTesseract()
		Using input = New OcrInput("r3.png")
			' Perform OCR on the entire receipt and print text output to console
			Dim result = ocr.Read(input)
			Console.WriteLine(result.Text)
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

收据扫描 API(开发人员教程),图 9:扫描收据 API 输出扫描接收 API 输出

IronOCR 等收据图像扫描 API 为自动提取收据数据提供了强大的软件解决方案。通过利用先进的 OCR 技术,企业可以轻松地从收据图像或扫描件中提取重要信息,包括企业供应商名称、购买日期、明细清单、价格、税金和总金额。 通过支持多种语言货币、收据格式条形码支持,企业可以简化收据管理流程、节省时间、洞察消费模式并做出数据驱动的决策。 IronOCR 作为一个通用的 OCR 库和 API,为开发人员提供了从各种来源中准确、高效地提取文本所需的工具,实现了任务自动化,提高了整体效率。 通过满足必要的先决条件并将IronOCR集成到他们的应用程序中,开发人员可以解锁收据数据处理的好处并增强工作流程。

有关 IronOCR 的更多信息,请访问此许可页面。 要了解如何使用计算机视觉查找文本,请访问此计算机视觉操作指南页面。 有关收据 OCR 的更多教程,请访问以下 OCR C# 教程

常见问题解答

如何在 C# 中使用 OCR 自动化收据数据提取?

您可以在 C# 中使用 IronOCR 自动化收据数据提取,它允许高效地从收据图像中提取项目明细、价格、税费和总金额等关键信息。

在 C# 中设置收据扫描项目的前提条件是什么?

在 C# 中设置收据扫描项目,您需要 Visual Studio、基本的 C# 编程知识以及在项目中安装 IronOCR 库。

如何使用 Visual Studio 的 NuGet 包管理器安装 OCR 库?

打开 Visual Studio,依次转到工具 > NuGet 包管理器 > 管理解决方案的 NuGet 包,搜索 IronOCR 并安装到您的项目中。

我可以使用 Visual Studio 命令行安装 OCR 库吗?

是的,您可以通过打开 Visual Studio 的包管理器控制台并运行命令:Install-Package IronOcr来安装 IronOCR。

如何使用 OCR 从整个收据提取文本?

要从整个收据提取文本,使用 IronOCR 对完整收据图像执行 OCR,然后使用 C# 代码输出提取的文本。

收据扫描 API 提供了哪些好处?

像 IronOCR 这样的收据扫描 API 自动化数据提取,减少手动错误,提高生产力,并为更好的商业决策提供消费模式的见解。

OCR 库是否支持多种语言和货币?

是的,IronOCR 支持多种语言、货币和收据格式,非常适合全球应用。

OCR 库在从图像中提取文本方面的准确性如何?

IronOCR 通过使用先进的 OCR 算法、计算机视觉和机器学习模型,确保即使在复杂场景下也能实现高准确性。

使用 OCR 可以从收据中提取哪些类型的数据?

IronOCR 可以提取项目明细、价格、税费、总金额以及其他收据详情等数据。

自动化收据解析如何改善业务流程?

通过 IronOCR 自动化收据解析,可以减少手动输入,实现准确的数据采集,并促进数据驱动的决策制定,从而改善业务流程。

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