跳過到頁腳內容
使用 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:新專案影像 新項目圖片

在新視窗中,選擇"控制台應用程式",然後按一下"下一步"。

收據掃描 API(開發者教學),圖 2:控制台應用程式 控制台應用程式

將出現一個新視窗。 寫下新項目的名稱和地點,然後點擊"下一步"。

收據掃描 API(開發者教學),圖 3:專案配置 專案配置

最後,提供目標框架並點擊"建立"。

收據掃描 API(開發者教學),圖 4:目標框架 目標框架

現在你的新 Visual Studio 專案已經創建好了,讓我們來安裝 IronOCR。

安裝 IronOCR

下載和安裝 IronOCR 庫有多種方法。 然而,以下是兩種最簡單的方法。

  1. 使用 Visual Studio NuGet 套件管理器
  2. 使用 Visual Studio 命令列

使用 Visual Studio NuGet 套件管理器

可以透過使用 Visual Studio NuGet 套件管理器將 IronOCR 整合到 C# 專案中。

透過選擇"工具" > "NuGet 套件管理器" > "管理解決方案的 NuGet 套件",導覽至 NuGet 套件管理器圖形使用者介面。

收據掃描 API(開發者教學),圖 5:NuGet 套件管理器 NuGet 套件管理器

之後,將出現一個新視窗。 搜尋 IronOCR 並將其安裝到專案中。

收據掃描 API(開發者教學),圖 6:IronOCR IronOCR

也可以使用上述相同的方法安裝 IronOCR 的其他語言套件。

使用 Visual Studio 命令列

  1. 在 Visual Studio 中,前往"工具" > "NuGet 套件管理器" > "套件管理器控制台"。
  2. 在程式包管理器控制台標籤中輸入以下代碼:

    Install-Package IronOcr

    收據掃描 API(開發者教學),圖 7:軟體包管理器控制台 軟體包管理器控制台

該套件現在會下載/安裝到目前的專案中,並可立即使用。

使用收據 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 輸出

收據影像掃描 API(例如 IronOCR)提供強大的軟體解決方案,可自動從收據中提取資料。透過利用先進的 OCR 技術,企業可以輕鬆地從收據圖像或掃描件中提取重要訊息,包括商家名稱、購買日期、明細清單、價格、稅金和總金額。 透過支援多種語言貨幣、收據格式條碼,企業可以簡化收據管理流程,節省時間,深入了解消費模式,並做出數據驅動的決策。 IronOCR 作為一個功能全面的 OCR 函式庫和 API,為開發人員提供了從各種來源準確且有效率地提取文字所需的工具,從而實現了任務自動化並提高了整體效率。 透過滿足必要的前提條件並將 IronOCR 整合到他們的應用程式中,開發人員可以釋放收據資料處理的優勢並增強他們的工作流程。

有關 IronOCR 的更多信息,請訪問此許可頁面。 若要了解如何使用電腦視覺尋找文本,請造訪此電腦視覺操作指南頁面。 有關收據 OCR 的更多教程,請訪問以下OCR C# 教程

常見問題解答

如何在 C# 中使用 OCR 自動擷取收據資料?

您可以使用 IronOCR 在 C# 中自動擷取收據資料,IronOCR 可讓您從收據影像中高準確度地擷取關鍵細節,例如細列項目、價格、稅金和總金額。

以 C# 建立收據掃描專案的先決條件為何?

要以 C# 建立收據掃描專案,您需要 Visual Studio、基本的 C# 程式設計知識,以及在專案中安裝 IronOCR 函式庫。

如何在 Visual Studio 中使用 NuGet Package Manager 安裝 OCR 函式庫?

開啟 Visual Studio,前往「工具」>「NuGet 套件管理員」>「管理解決方案的 NuGet 套件」,搜尋 IronOCR,並將其安裝在您的專案中。

我可以使用 Visual Studio 指令行安裝 OCR 函式庫嗎?

是的,您可以在 Visual Studio 中開啟套件管理員控制台並執行指令來安裝 IronOCR:Install-Package 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 上打游戏或重看《The Last of Us》。