使用 IRONOCR

在 C# 中 OCR 超市收據(開發者教程)

發佈 2024年12月15日
分享:

收據在當今繁忙的世界中是被期待的。 無論是在超市購買雜貨還是在餐廳用餐,擁有收據有助於了解花費金額,並可以根據此制定預算。 同時,當雜貨店使用收據掃描器掃描收據時,他們可以洞察其產品的銷售情況,並可以根據銷售預測進行規劃。

然而,收據通常很難閱讀,有時候人們不確定總計是多少。 此外,如果有人想管理預算,手動輸入所有收據的數據是很累人的,尤其是考慮到人們可以購買的商品數量。 丟失收據可能意味著你突然不確定為何本月的預算超支。

對於這個問題,預算和財務應用程序已經轉向利用光學字符識別(光學字符識別)協助客戶輕鬆掃描所有收據並將其轉換為數位格式。 這樣一來,可以減少輸入收據時的人為錯誤,同時讓客戶自動化數據輸入、追踪開支,並深入了解購買行為。

OCR技術使用機器學習演算法來識別文字或數字區域,從收據和數字圖像中提取數據。 然而,它並非沒有缺陷。 如果圖像有大量的數位雜訊,比如模糊和污損,返回的數據往往會變得不正確或混亂。 因此,選擇一個可靠的函式庫,使開發人員能夠調試和優化讀取收據的方法是至關重要的。

IronOCR是一個這樣的程式庫。 它提供專門的方法來讀取收據,同時為想要在擷取數據之前過濾圖像的開發者提供自訂功能。 它甚至允許開發人員調試和測試數據是否準確。

本文可能會討論 IronOCR 如何處理和過濾超市收據以確保數據準確性的實際案例。

IronOCR:C# OCR 函式庫

在 C# 中辨識超市收據的光學字符識別 (開發者教學):圖 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 小時的支援獲得任何協助。

  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#對超市收據進行光學識別 (開發者教程):圖 2 - 超市收據範例

實施收據光學字符識別 (光學字符識別)

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# 中進行超市收據文字識別(開發者教程):圖 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中的Confidence屬性是一個重要的浮點數,表示OCR的統計準確性信心。 此值是所有字符的平均值。 較低的值表示潛在問題,例如護照影像模糊或附加資訊。 最高的信心水平以1表示,而最低的信心水平以0表示。值越高,我們就越可以安全地假定提取的數據是準確且精確的。

如您所見,即使是庫存圖像,信心水平也只有 75。在現實生活場景中,由於數位噪點,信心可能會更低。

去除噪声和過濾器

如上所示,除了拒絕低可信度的數據外,IronOCR 也允許開發人員在將數據作為圖像輸入之前清除和過濾噪音,以確保數據提取的高準確性。 在使用重複的超市收據之前,我們可以進行一些配置。

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

第一種方法「DeNoise」將 alpha 通道變為白色,這可能會提高照片的準確性,因為數字照片通常有大量的噪聲。

第二個方法,“ToGrayScale”,雖然不完全是提高準確性的方法,但確實透過將每個像素色調轉換為灰階來幫助批次處理收據的效率。

除了這些方法外,開發者應該使用 IronOCR 測試和微調可用的設置,以根據從超市收據中提取數據的所需標準進行過濾。

結論

使用 C# 進行超市收據的 OCR(開發者教程):圖 5 - IronOCR

隨著自動化技術的發展,Receipt OCR 是一項強大的技術,可以幫助企業從收據數據中提取有價值的見解。 它也是個人用來幫助預算支出並個人化識別感興趣領域的強大工具。 不僅如此,OCR技術還可以通過檢查收據上的交易號碼來加強防篡改或更改收據的預防功能。

因此,選擇合適的收據OCR解決方案對於準確性、速度和可擴展性是至關重要且虛擬的。 IronOCR 包含這些功能,且容易與現有平台整合,為開發人員在收據掃描方面提供優勢。

您可以使用IronOCR的試用授權如果開發人員感興趣。

< 上一頁
在 C# 中進行 OCR 發票處理(開發者教程)
下一個 >
護照 OCR SDK(開發者教程)