C# 中的 OCR 发票处理(开发者教程)
发票数据处理是指接收、管理和验证来自供应商或卖家的发票,并确保付款正确且按时进行。它涉及旨在确保处理业务交易时的准确性、合规性和效率,以避免使用纸质发票的步骤。 自动化的发票处理可以显著减少手动数据输入错误并提高效率。 IronOCR 是一个强大的光学字符识别 (OCR) 软件库,可用于从数字文件中的发票中提取数据或文本,使其成为在C#应用程序中自动化发票OCR处理的优秀工具。
如何使用像IronOCR这样的OCR软件处理发票数据
- 创建一个Visual Studio项目。
- 安装IronOCR C#库。
- 样本输入发票图像。
- 使用Tesseract并从收据图像中提取数据。
- 仅读取图像的一个区域。
光学字符识别 (OCR)
光学字符识别 是一项技术,使得可以识别和转换各种类型的文档、PDF或文本图像为可编辑和可搜索的数据。 OCR技术处理文本图像并提取字符,使其可供机器读取。 先进的OCR发票软件系统有助于财务管理工具和发票自动化。
关于OCR的关键点
- 功能:OCR软件扫描图像或文本(例如照片或扫描文件),将字符转换成可编辑、搜索和存储的数字文本。
- 应用:OCR在各个行业中广泛使用于诸如数字化纸质文档、发票处理、表单数据提取、自动车牌识别 (ANPR)、应付账款流程和书籍扫描等任务。
- 技术:OCR使用算法识别光与暗的模式以解释字符。 现代OCR系统还利用机器学习和人工智能来提高准确性。
- 好处:OCR通过自动化数据输入、减少错误并使数据搜索和检索更容易来提高生产力。 它还支持文档归档,并帮助企业管理无纸化工作流程。
OCR技术已经显著发展,使其在处理文件和跨各种不同发票格式进行发票数据提取方面高度准确和有用,以减少手动数据输入,消除手动发票处理,并增强数据安全性。
IronOCR。
IronOCR 是一个适用于 .NET (C#) 的强大光学字符识别 (OCR) 库,允许开发者从图像、PDF和其他文档格式中提取文本、开发OCR发票软件,并实现应付账款工作流程。 它提供了一个易于使用的API,用于将OCR功能集成到应付账款系统或会计系统中。
IronOCR。 的主要功能
- 文本提取:它可以从各种图像格式(PNG, JPG, TIFF, 等)和PDF中提取文本,包括多页PDF用于会计软件。
- 准确性:IronOCR使用先进的算法和机器学习技术,在文本识别方面提供高精度,即使是用于应付账款流程的嘈杂或低质量图像,以及提前付款折扣。
- 语言支持:该库支持多种语言,包括英语、西班牙语、法语等,有助于识别不同语言的文本。
- 易用性:IronOCR提供了一个简单的API,开发者可以快速将OCR功能集成到他们的应用程序中,而无需深入了解OCR技术。
- 条形码和二维码识别:除了标准的文本识别,IronOCR还可以检测和提取图像中的条形码和二维码。
- PDF支持:它可以读取和提取扫描PDF中的文本,在处理发票、收据和其他商业文件时很有用。
- 定制化:该库允许根据特定需求对OCR设置进行定制,如调整准确性或处理不同的图像分辨率。
前提条件
开始之前,请确保您具有以下内容:
- 您的计算机上已安装 Visual Studio。
- 对C#编程有基本的了解。
- 在您的项目中安装了IronOCR NuGet包。
步骤1:创建一个Visual Studio项目
打开Visual Studio并点击创建新项目。

在选项中选择控制台应用程序。

提供项目名称和路径。

选择.NET版本类型。

步骤2:安装IronOCR C#库
在Visual Studio中的项目中,转到工具 > NuGet包管理器 > 为解决方案管理NuGet包。 点击浏览标签并搜索IronOCR。 选择IronOCR并点击安装。

另一种选择是使用控制台和下面的命令。
dotnet add package IronOcr --version 2024.12.2
步骤3:样本输入发票图像
样本数字发票图像,包含发票编号。

步骤4:使用Tesseract并从收据图像中提取数据
现在使用下面的代码从发票中提取数据,用于OCR发票处理。
using IronOcr;
// Set the license key
License.LicenseKey = "Your License";
string filePath = "sample1.jpg"; // Path to the invoice image
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image for OCR
using (var ocrInput = new OcrInput())
{
ocrInput.LoadImage(filePath);
// Optionally apply filters if needed
ocrInput.Deskew();
// ocrInput.DeNoise();
// Perform OCR to extract text
var ocrResult = ocr.Read(ocrInput);
// Output the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(ocrResult.Text);
// Next steps would involve processing the extracted text
}using IronOcr;
// Set the license key
License.LicenseKey = "Your License";
string filePath = "sample1.jpg"; // Path to the invoice image
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image for OCR
using (var ocrInput = new OcrInput())
{
ocrInput.LoadImage(filePath);
// Optionally apply filters if needed
ocrInput.Deskew();
// ocrInput.DeNoise();
// Perform OCR to extract text
var ocrResult = ocr.Read(ocrInput);
// Output the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(ocrResult.Text);
// Next steps would involve processing the extracted text
}Imports IronOcr
' Set the license key
License.LicenseKey = "Your License"
Dim filePath As String = "sample1.jpg" ' Path to the invoice image
' Create an instance of IronTesseract
Dim ocr = New IronTesseract()
' Load the image for OCR
Using ocrInput As New OcrInput()
ocrInput.LoadImage(filePath)
' Optionally apply filters if needed
ocrInput.Deskew()
' ocrInput.DeNoise();
' Perform OCR to extract text
Dim ocrResult = ocr.Read(ocrInput)
' Output the extracted text
Console.WriteLine("Extracted Text:")
Console.WriteLine(ocrResult.Text)
' Next steps would involve processing the extracted text
End Using代码解释
提供的代码演示了如何在C#中使用IronOCR库通过OCR(光学字符识别)从图像(例如发票)中提取文本。 以下是代码每个部分的说明:
许可密钥设置:
- 代码开始时为IronOCR设置许可证密钥。 该密钥是使用库的完整功能所必需的。 如果您有一个有效许可证,请将"Your License"替换为您的实际许可证密钥。
指定输入文件:
filePath变量保存包含发票的图像位置(在这种情况下为"sample1.jpg")。 这是将用于文本提取的文件。
创建OCR实例:
- 创建
IronTesseract实例。IronTesseract类负责对输入数据执行OCR操作。
- 创建
加载图像:
- 代码创建一个
OcrInput对象,该对象使用LoadImage方法加载由filePath指定的图像。
- 代码创建一个
应用图像滤镜:
- 代码可选应用滤镜如
Deskew()来纠正倾斜图像并提高OCR准确性。
- 代码可选应用滤镜如
执行OCR:
ocr.Read()方法从已加载的图像中提取文本,返回一个包含提取文本的OcrResult。
- 显示提取的文本:
- 提取的文本打印到控制台上。 这个文本是IronOCR从图像识别的内容,可以用于进一步处理。
输出

步骤5:只读取图像的一个区域
为了提高效率,可以只处理图像的一部分进行提取。
using IronOcr;
using IronSoftware.Drawing;
// Set the license key
License.LicenseKey = "Your Key";
string filePath = "sample1.jpg"; // Path to the invoice image
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image for OCR
using (var ocrInput = new OcrInput())
{
// Define the region of interest
var ContentArea = new Rectangle(x: 0, y: 0, width: 1000, height: 250);
ocrInput.LoadImage(filePath, ContentArea);
// Optionally apply filters if needed
ocrInput.Deskew();
// ocrInput.DeNoise();
// Perform OCR to extract text
var ocrResult = ocr.Read(ocrInput);
// Output the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(ocrResult.Text);
}using IronOcr;
using IronSoftware.Drawing;
// Set the license key
License.LicenseKey = "Your Key";
string filePath = "sample1.jpg"; // Path to the invoice image
// Create an instance of IronTesseract
var ocr = new IronTesseract();
// Load the image for OCR
using (var ocrInput = new OcrInput())
{
// Define the region of interest
var ContentArea = new Rectangle(x: 0, y: 0, width: 1000, height: 250);
ocrInput.LoadImage(filePath, ContentArea);
// Optionally apply filters if needed
ocrInput.Deskew();
// ocrInput.DeNoise();
// Perform OCR to extract text
var ocrResult = ocr.Read(ocrInput);
// Output the extracted text
Console.WriteLine("Extracted Text:");
Console.WriteLine(ocrResult.Text);
}Imports IronOcr
Imports IronSoftware.Drawing
' Set the license key
License.LicenseKey = "Your Key"
Dim filePath As String = "sample1.jpg" ' Path to the invoice image
' Create an instance of IronTesseract
Dim ocr = New IronTesseract()
' Load the image for OCR
Using ocrInput As New OcrInput()
' Define the region of interest
Dim ContentArea = New Rectangle(x:= 0, y:= 0, width:= 1000, height:= 250)
ocrInput.LoadImage(filePath, ContentArea)
' Optionally apply filters if needed
ocrInput.Deskew()
' ocrInput.DeNoise();
' Perform OCR to extract text
Dim ocrResult = ocr.Read(ocrInput)
' Output the extracted text
Console.WriteLine("Extracted Text:")
Console.WriteLine(ocrResult.Text)
End Using代码解释
此代码使用IronOCR从图像的特定区域提取文本,并提供用于提高准确性的图像滤镜选项。 以下是每个部分的拆解:
许可证设置:
- 设置IronOCR的许可证密钥,这是使用库的OCR功能所必需的。 将"Your Key"替换为您的有效许可证密钥。
定义图像文件路径:
- 指定要处理的发票图像的文件路径,该图像包含待提取文本的内容。
创建OCR实例:
- 创建一个
IronTesseract实例来执行OCR操作。
- 创建一个
定义要处理的区域:
- 在图像中指定一个开始于左上角的矩形区域,以将OCR过程集中在相关部分,从而提高效率。
加载图像:
- 从文件中加载图像的指定内容区域。此操作将OCR处理限制在图像的特定部分。
应用滤镜:
- 应用滤镜如
Deskew()来增强图像对齐,并可能使用DeNoise()清理图像,提高OCR准确性。
- 应用滤镜如
提取文本:
- 从定义的区域读取文本并将其存储在
OcrResult中。
- 从定义的区域读取文本并将其存储在
- 输出提取的文本:
- 将OCR处理的文本输出到控制台以供进一步使用。
输出

许可(提供试用)
IronOCR需要一个密钥来从发票中提取数据。 从许可证页面获取您的开发者试用密钥。
using IronOcr;
License.LicenseKey = "Your Key";using IronOcr;
License.LicenseKey = "Your Key";Imports IronOcr
License.LicenseKey = "Your Key"结论
本文提供了一个如何开始使用IronOCR进行发票处理的基本示例。 您可以进一步自定义和扩展此代码以满足您的特定要求。
IronOCR提供了一种高效且易于集成的解决方案,用于从图像和PDF中提取文本,使其非常适合发票处理。 通过与C#字符串操作或正则表达式结合使用IronOCR,您可以快速处理并从发票中提取重要数据。
这是发票处理的基本示例,通过更高级的配置(如语言识别、多页PDF处理等),您可以微调OCR结果以提高特定用例的准确性。
IronOCR的API灵活,可用于发票处理之外的各种OCR任务,包括收据扫描、文档转换和数据输入自动化。
常见问题解答
如何在 C# 中自动化发票数据处理?
您可以使用 IronOCR 从数字发票文件中提取文本和数据来自动化发票数据处理。这减少了手动数据输入错误并提高了处理发票的效率。
设置用于发票处理的 OCR 需要哪些步骤?
要设置用于发票处理的 OCR,首先创建 Visual Studio 项目,安装 IronOCR 库并使用示例发票图像。然后,您可以利用 IronOCR 的功能来提取和处理发票数据。
如何使用 OCR 从发票的特定区域提取数据?
IronOCR 允许您通过设置矩形区域来定义图像的特定区域以聚焦 OCR 过程。此功能通过仅针对发票的必要部分来提高效率和准确性。
Tesseract 在 IronOCR 中的作用是什么?
Tesseract 是 IronOCR 的一部分,在从图像中提取文本方面起着至关重要的作用。它有助于将文本的图像转换为机器可读数据,这对于在 C# 应用程序中自动化发票处理至关重要。
OCR 软件能识别多种语言的文本吗?
是的,IronOCR 支持多种语言,能够识别和处理多种语言的文本,例如英语、西班牙语和法语,从而提高了其处理全球发票的多功能性。
使用 IronOCR 进行发票处理的好处是什么?
使用 IronOCR 进行发票处理可以提供高精度文本提取、多语言支持、条形码识别和 PDF 处理能力等好处,这些都能简化应付账款工作流程。
如何为特定的发票处理需求自定义 OCR 设置?
IronOCR 提供了一个简单的 API,允许开发人员自定义 OCR 设置。这种灵活性使得能够为特定的发票处理需求提供定制解决方案,例如处理不同的发票格式或语言。
OCR 在数字发票管理中的重要性是什么?
OCR 在数字发票管理中至关重要,因为它自动化了从发票中提取数据的过程,减少了手动工作量,减少了错误,并确保了财务交易的高效和准确的处理。
是否有试用版可用于测试 IronOCR 的功能?
是的,IronOCR 提供了一个开发者试用密钥,您可以从他们的许可页面获得,允许您在购买前测试软件的全部功能。
IronOCR 如何改善文档转换和数据输入自动化?
IronOCR 通过提供高精度的文本提取从多种格式中提取文本,增强了文档转换和数据输入自动化,实现了 C# 应用程序中自动化数据处理的无缝集成。






