使用 IRONOCR

如何在 C# 教程中从发票获取文本

Kannaopat Udonpant
坎那帕·乌东攀
2023年二月23日
更新 2023年十二月18日
分享:

1.IronOCR,光学字符识别 API

IronOCR 是一个可用于从图像中识别文本数据进行信息提取的 OCR 库,包括收据 OCR。 它基于 Tesseract OCR 引擎构建,该引擎被认为是迄今为止用于收据识别的最准确的 OCR 引擎之一。 IronOCR 可用于读取不同文档类型(包括 PNG、JPG、TIFF、JSON 格式和 PDF)中包含关键信息的文本,并能识别多种语言的文本。

IronOCR 的一个关键功能或服务是,它能够自动检测文本方向,即使图像已被旋转或倾斜,这使得它在收据 OCR 中尤其有用。 这对于准确识别上传收据上的文本和提取数据至关重要,因为收据通常包含大量信息,而且可能被折叠或揉皱,导致文本歪斜。

2.IronOCR 功能

  • C# OCR 使用深度学习技术扫描和识别图片、扫描文档和 PDF 中的文本。
  • .NET OCR 支持全球超过 127 种语言。
  • IronOCR 可以从 PNG、JPG、TIFF 和 PDF 等多种文件格式的图像中读取文本。
  • 可以从提取的信息生成文本、结构化数据、JSON 输出或可搜索的 PDF
  • IronOCR 支持 .NET 5、6 和 7(Core、Framework 和 Standard)。
  • IronOCR 根据文本区域将输入内容分成不同的图片。 它使用计算机视觉来识别包含文本元素的区域。

3.在 Visual Studio 中创建新项目

打开 Visual Studio 软件,进入 "文件 "菜单。 选择 "新建项目",然后选择控制台应用程序。

在相应的文本框中输入项目名称并选择路径。 然后,单击 "创建 "按钮。 选择所需的 .NET Framework,如下面的截图所示:

如何在C#教程中从发票提取文本,图1:在Visual Studio中创建新项目

在 Visual Studio 中创建新项目

Visual Studio 项目现在将生成控制台应用程序的结构。 完成后,它将打开 Program.cs 文件,您可以在其中编写和执行源代码。

如何从发票中获取文本的C#教程,图2:由Visual Studio新建项目向导生成的program.cs文件

从 Visual Studio 新建项目向导生成的 program.cs 文件

4.安装 IronOCR

在 Visual Studio 中,您可以轻松地将 IronOCR 与您的 C# 项目集成。 IronOCR 提供多种方式与 C# .NET 项目集成。 这里,我们将讨论其中之一:使用 NuGet 包管理器安装 IronOCR。

在 Visual Studio 中,依次转到 工具 > NuGet 包管理器 > 包管理器控制台

如何从 C# 教程中的发票中获取文本,图 3:Visual Studio NuGet 包管理器控制台

Visual Studio NuGet 包管理器控制台

点击后,Visual Studio 窗口底部将出现一个新的控制台。 在控制台中键入以下命令并按回车键。

Install-Package IronOcr

只需几秒钟,IronOCR 就会安装完毕。

5.使用 IronOCR 从收据中提取数据

IronOCR 是一个功能强大的 OCR 库,可用于从收据中提取和访问带有详细信息的数据。有了 IronOCR,您可以拍摄收据图片,并将其转换为机器可读文本,从而在不损害数据隐私的情况下轻松进行分析和处理。

下面是一个如何使用 IronOCR 从收据中提取文本的示例,展示收据 OCR 的工作原理。

using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    OcrResult ocrResult = ocrTesseract.Read(ocrInput);
    string RecognizedText = ocrResult.Text;

    Console.WriteLine(RecognizedText);
}
using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    OcrResult ocrResult = ocrTesseract.Read(ocrInput);
    string RecognizedText = ocrResult.Text;

    Console.WriteLine(RecognizedText);
}

请参阅从图像读取文本教程,了解 IronOCR 如何使用 C# 计算机语言从图像中读取文本的更多详细信息。

上述代码的输出结果如下:

- LOGO SHOP
- LOREM IPSUM
- DOLOR SITAMET CONSECTETUR
- ADIPISCING ELIT
- 1 LOREM IPSUM $3.20
- 2 ORNARE MALESUADA $9.50
- 3 PORTA FERMENTUM $5.90
- 4 SODALES ARCU $6.00
- 5 ELEIFEND $9.00
- 6 SEMNISIMASSA $0.50
- 7 DUIS FAMES DIS $7.60
- 8 FACILISIRISUS $810
- TOTAL AMOUNT $49.80
- CASH $50.00

6.使用 IronOCR 从收据图像中提取特定数据

作为一个功能强大的 OCR 库,IronOCR 允许开发人员从扫描的收据中获取重要信息,包括税额和商家名称等。

下面是一个如何使用 IronOCR 从收据图像中提取总金额值的示例:

using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.English;

// Code line to load the receipt image
using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    // Optimize the input image for OCR
    ocrInput.DeNoise(true);
    ocrInput.Contrast();
    ocrInput.EnhanceResolution();
    ocrInput.ToGrayScale();

    OcrResult ocrResult = ocrTesseract.Read(ocrInput);

    // Search for the total price in the OCR result
    var totalPrice = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
    Console.WriteLine("Total Price: " + totalPrice);
}
using IronOcr;
using System;

IronTesseract ocrTesseract = new IronTesseract();

ocrTesseract.Language = OcrLanguage.English;

// Code line to load the receipt image
using (OcrInput ocrInput = new OcrInput("ocr.png"))
{
    // Optimize the input image for OCR
    ocrInput.DeNoise(true);
    ocrInput.Contrast();
    ocrInput.EnhanceResolution();
    ocrInput.ToGrayScale();

    OcrResult ocrResult = ocrTesseract.Read(ocrInput);

    // Search for the total price in the OCR result
    var totalPrice = ocrResult.Text.Contains("Total:") ? ocrResult.Text.Split("Total:")[1].Split("\n")[0] : "";
    Console.WriteLine("Total Price: " + totalPrice);
}

感谢由OcrInput类提供的多种设置,可以优化输入图像以提高OCR过程的准确性。

输入

如何从发票中提取文本的C#教程,图4:用于演示从收据中提取特定数据的输入图像

用于展示从收据中提取特定数据的输入图像

输出

- Total 16.5

7.阅读收据上的 BarCode

IronOCR 可用于读取收据上的 BarCode 以及文本。 要使用IronOCR读取收据上的条形码,您需要将BarcodeReader类与ReadBarCodes方法结合使用。

下面是一个如何使用 IronOCR 读取收据图像上条形码的示例。

using IronOcr;
using System;

var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using (var ocrInput = new OcrInput("b.png"))
{
    var ocrResult = ocrTesseract.Read(ocrInput);
    foreach (var barcode in ocrResult.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}
using IronOcr;
using System;

var ocrTesseract = new IronTesseract();
ocrTesseract.Configuration.ReadBarCodes = true;
using (var ocrInput = new OcrInput("b.png"))
{
    var ocrResult = ocrTesseract.Read(ocrInput);
    foreach (var barcode in ocrResult.Barcodes)
    {
        Console.WriteLine(barcode.Value);
    }
}

输入图像

如何从发票中获取文本(C#教程),图4:读取条形码的输入

读取条形码的输入

输出文本

如何从发票中获取文本的C#教程,图5:处理条形码图像的结果

处理条形码图像的结果

8.结论

上述文章介绍了在 C# 项目中安装和使用 IronOCR 从收据中提取数据的过程,并提供了示例代码片段。

请阅读关于从图像中读取文本的教程。

IronOCR 是 Iron Suite 的一部分,其中包括五个用于操作文档和图像的 .NET 库。 您可以以仅仅两个IronOCR 许可证的价格购买整个 Iron Suite。

在您的生产应用中试用 IronOCR,享受免费试用

Kannaopat Udonpant
坎那帕·乌东攀
软件工程师
在成为软件工程师之前,Kannapat 从日本北海道大学完成了环境资源博士学位。在攻读学位期间,Kannapat 还成为了生物生产工程系车辆机器人实验室的成员。2022年,他利用自己的 C# 技能加入了 Iron Software 的工程团队,专注于 IronPDF。Kannapat 珍视他的工作,因为他能直接向编写 IronPDF 大部分代码的开发者学习。除了同伴学习,Kannapat 还享受在 Iron Software 工作的社交方面。不写代码或文档时,Kannapat 通常在 PS5 上玩游戏或重看《最后生还者》。
< 前一页
如何在C#中OCR车牌(教程)
下一步 >
如何在C#中使用OCR从屏幕截图获取文本