使用 IRONOCR

C# 中的 OCR 超市收据(开发人员教程)

发布 2024年十二月15日
分享:

收据在当今繁忙的世界中,"准确 "是人们所期望的。 无论是购买日用品还是在餐馆就餐,拥有收据都有助于了解所用金额,并可用于编制相应的预算。 同时,当杂货店使用收据扫描仪扫描收据时,他们可以深入了解产品的销售情况,并根据销售预测制定计划。

然而,收据通常很难看懂,有时人们也不确定总数是多少。 此外,如果有人想核算自己的预算,考虑到一个人可以购买的商品数量,手动输入收据上的所有数据是很累人的。 丢失收据可能意味着您突然不知道为什么本月的预算超支了。

对于这个问题,预算和财务应用程序已经转向使用光学字符识别(光学字符识别)通过扫描收据并将其转化为数字收据,帮助客户轻松跟踪所有收据。 这反过来可以最大限度地减少输入收据时的人为错误,同时允许客户自动输入数据、跟踪支出并深入了解购买行为。

OCR 技术通过使用机器学习算法识别文本或数字区域,从收据和数字图像中提取数据。 不过,这也不是没有缺点。 如果图像有大量数字噪音,如模糊和污点,返回的数据往往会变得不正确或混淆不清。 因此,选择一个能让开发人员调试和优化读取收据方法的可靠库至关重要。

IronOCR我们的翻译库就是这样一个库。 它提供了读取收据的专门方法,同时为希望在提取数据前过滤图像的开发人员提供了定制功能。 它甚至允许开发人员调试和测试数据是否准确。

本文将可能讨论 IronOCR 如何处理和过滤超市收据以确保数据准确性的真实案例。

IronOCR: A C# OCR 库

C# 中的 OCR 超市收据(开发人员教程):图 1 - IronOCR:一个 C# OCR 库

IronOCR是一个 C# 库,使用定制版本的Tesseract引擎盖下的 OCR 引擎。 该库提供了易于使用的方法和灵活的功能,可满足所有与 OCR 相关的需求。 除了标准技术外,IronOCR 还允许开发人员充分利用和定制定制版 Tesseract 来实现所有相关任务。 有助于超市收据的一些关键方面:

  1. 交叉兼容性:IronOCR 完全兼容各种 .NET 平台,包括 .NET 8、7、6 和 5 以及 .NET Framework 4.6.2 及以上版本。 它可无缝支持所有操作系统,包括 Windows、macOS、Azure 和 Linux,因此不存在交叉兼容问题。

  2. 灵活性和可扩展性: 该库的灵活性体现在它能够处理各种 OCR 输入格式,包括 jpg、png 和 gif 等常用图像格式。 它还与 C# 的本地 "System.Drawings.Objects "无缝集成,使集成到现有代码库中变得轻而易举。

  3. 易用性和广泛的支持:IronOCR 文档丰富,拥有强大的应用程序接口(API)和涵盖所有功能的教程。 此外,开发人员还可以依靠 24/5 支持获得任何帮助。

  4. 多语言:IronOCR 支持多达 125 种语言和自定义语言,是一款用途极为广泛的国际文档处理工具。 它擅长识别产品名称和价格,因此非常适合识别收据。

用 IronOCR 阅读超市收据

许可证密钥

请记住,IronOCR 的运行需要许可密钥。 作为免费试用的一部分,您可以访问以下链接获取密钥链接.

//Replace the license key variable with the trial key you obtained
IronOCr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
//Replace the license key variable with the trial key you obtained
IronOCr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY";
'Replace the license key variable with the trial key you obtained
IronOCr.License.LicenseKey = "REPLACE-WITH-YOUR-KEY"
VB   C#

收到试用密钥后,请在项目中设置此变量。

代码示例

让我们假设这样一个场景:开发人员开发的移动应用程序允许客户用手机扫描收据,从而根据总消费额获得额外积分。

下面的代码展示了 IronOCR 如何获取库存超市收据,并使用 OCR API 提取所有相关数据,如产品名称、行列项目、价格和任何名称。

输入图像

C# 中的 OCR 超市收据(开发人员教程):图 2 - 示例超市收据

实施收据 OCR

using IronOcr;
#region
IronOcr.License.LicenseKey = "YOUR-KEY";
#endregion
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("supermarketexample.jpg");
// Perform OCR
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
using IronOcr;
#region
IronOcr.License.LicenseKey = "YOUR-KEY";
#endregion
// Instantiate OCR engine
var ocr = new IronTesseract();
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("supermarketexample.jpg");
// Perform OCR
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Imports IronOcr
#Region ""
IronOcr.License.LicenseKey = "YOUR-KEY"
'#End Region
' Instantiate OCR engine
Dim ocr = New IronTesseract()
Dim inputPhoto = New OcrInput()
inputPhoto.LoadImage("supermarketexample.jpg")
' Perform OCR
Dim result As OcrResult = ocr.Read(inputPhoto)
Dim text As String = result.Text
Console.WriteLine(text)
VB   C#
  1. 我们首先在代码示例中导入 IronOcr 模块。

  2. 然后,我们将 OCR 引擎实例化,并创建一个新的("IronTesseract")变量。

  3. 然后,我们创建一个新的`OcrInput`,并将图片加载进去。 在本例中,我们为变量提供了 "文件路径"。 虽然收据格式多种多样,但该方法可以采用所有流行的格式。

  4. 然后,我们使用 `Read` 方法读取图像。

  5. 然后,我们将结果打印到控制台输出中。

控制台输出:接收数据

C# 中的 OCR 超市收据(开发人员教程):图 3 - 控制台输出

请注意,上面的控制台输出在一行中打印出了产品和行项目。该方法在页面分割模式下运行,忽略了收据中作为分隔线的行块。

调试和信心测试

上面的收据是一张精制的图片,并不是客户随手拍下的典型收据。 在处理实际例子时,我们必须验证提取数据的可信度,以确保数据被视为无效的阈值,从而保证应用程序的一致性。

IronOCR 有一个名为 `confidence` 的内置属性,允许开发人员验证提取数据的准确性。

OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine(result.Confidence);
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine(result.Confidence);
Dim result As OcrResult = ocr.Read(inputPhoto)
Dim text As String = result.Text
Console.WriteLine(text)
Console.WriteLine(result.Confidence)
VB   C#

该代码与上述代码相同。 主要区别在于它还会打印出置信度。

C# 中的 OCR 超市收据(开发人员教程):图 4

OCRResult 中的 "置信度 "属性是一个关键的浮点数,代表了 OCR 统计准确度的置信度。 该值按每个字符的平均值计算。 较低的值表示潜在的问题,如护照图像模糊或附加信息。 最高置信度用 1 表示,最低置信度用 0 表示。置信度值越高,我们就越有把握认为提取的数据是准确和精确的。

如您所见,即使是图片库中的图片,置信度也只有 75。在现实生活中,由于数字噪音的影响,置信度可能会更低。

去除噪音和过滤器

如上图所示,除了剔除置信度低的数据外,IronOCR 还允许开发人员在将其作为图像输入之前清除和过滤掉噪声,确保数据提取的高准确性。 以下是我们在使用重复超市收据之前可以做的一些配置。

inputPhoto.DeNoise();
inputPhoto.ToGrayScale();
inputPhoto.DeNoise();
inputPhoto.ToGrayScale();
inputPhoto.DeNoise()
inputPhoto.ToGrayScale()
VB   C#

第一种方法是 "去噪",它将 alpha 通道平铺为白色,这可能会提高照片的准确性,因为数码照片有很多预期噪点。

第二种方法 "ToGrayScale "虽然严格来说不是提高准确性的方法,但通过将每个像素的阴影转化为灰度,确实有助于提高批量处理收据的效率。

在使用这些方法的同时,开发人员还应测试和微调 IronOCR 的可用设置,以便根据所需的标准过滤从超市收据中提取的数据。

结论

C# 中的 OCR 超市收据(开发人员教程):图 5 - IronOCR

除了自动化,收据 OCR 还是一项强大的技术,可帮助企业从收据数据中提取有价值的信息。 对于个人来说,这也是一个强大的工具,可以帮助他们编制开支预算,并确定个人感兴趣的领域。 不仅如此,OCR 技术还可以通过检查收据上的交易编号来加强对篡改收据的防范。

因此,选择合适的收据 OCR 解决方案对于准确性、速度和可扩展性来说至关重要,而且是虚拟的。 IronOCR 融合了这一切,并且易于与现有平台集成,让开发人员在收据扫描方面更具优势。

您可以使用 IronOCR 的试用许可如果开发人员感兴趣。

下一步 >
Passport OCR SDK(开发人员教程)

准备开始了吗? 版本: 2024.12 刚刚发布

免费NuGet下载 总下载量: 2,819,902 查看许可证 >