如何使用 C# 中的 OCR 從收據中提取數據
IronOCR 提供了一個強大的 C# 庫,使用先進的 OCR 技術從收據圖像中提取文本,支援 125 種語言和內建圖像預處理功能,可實現自動費用追蹤和數據分析。
收據和自動化
在如今快節奏的生活中, 收據至關重要。 無論你是購買食品雜貨還是外出用餐,收據都能幫助你追蹤支出並進行預算。 同時,商店使用收據掃描器分析銷售數據,透過數據提取技術幫助他們預測需求和管理庫存。
然而,收據可能難以辨認,計算結果也不總是清晰明了。 手動輸入預算資料既繁瑣又容易出錯,尤其是在專案很多的情況下。 遺失收據可能會讓你的每月超支變成一個謎。 傳統紙質收據經常存在列印品質不佳、油墨褪色和熱敏紙老化等問題,因此OCR 影像優化對於準確提取至關重要。
為了解決這個問題,預算和財務應用程式採用了OCR (光學字元辨識)技術。 透過將收據掃描成數位格式,OCR 可以最大限度地減少錯誤,自動輸入數據,追蹤支出,並揭示購買模式。 現代OCR 解決方案可處理各種收據格式,從傳統的銷售點列印輸出到具有條碼和二維碼讀取功能的數位收據。
OCR利用機器學習技術從圖像中辨識和提取文字。 該過程包括影像預處理、字元分割、模式識別和驗證。 然而,OCR 並非完美無缺——模糊或污跡會導致錯誤。 先進系統利用電腦視覺技術來提高準確率。 選擇一個可靠的、能夠高效處理和最佳化讀取的 OCR 庫對於成功實現文件自動化至關重要。
為什麼我應該選擇 IronOCR 進行收據處理?
IronOCR是一個基於客製化Tesseract OCR 引擎的 C# 函式庫。與標準 Tesseract 不同,IronOCR 包含了Tesseract 5 的最佳化和專為 .NET 開發人員設計的功能。 它之所以脫穎而出,是因為它具有以下特點:
1.跨平台相容性:可與 .NET 8、7、6、5 和 Framework 4.6.2+ 搭配使用。 可在 Windows、macOS、Azure 和 Linux 系統上運作。 可無縫部署至Docker 、 AWS Lambda和Azure Functions 。
2.靈活性和可擴展性:支援 JPG、PNG 和 GIF 格式。 與 System.Drawing 物件整合。 處理多頁 TIFF和PDF 串流。 支援 多線程,適用於高吞吐量場景。
3.易用性和支援:文件齊全,API 功能強大,並提供 24/5 支援。 提供簡單的單行操作和詳細的配置選項。 包含全面的故障排除指南。
4.多語言功能:支援125 種國際語言。 能夠有效識別產品名稱和價格。 支援每個文件使用多種語言。 支援自訂訓練資料檔。
如何在我的應用程式中實現收據OCR?
我需要什麼許可證才能開始?
使用 IronOCR 之前,您需要一個許可證金鑰。 點這裡獲取免費試用。 授權選項包括 Lite、Plus 和 Professional 三個級別,分別適用於不同的團隊規模和部署場景。 請參閱有關應用許可證密鑰的文件。
// 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";對於 Web 應用程序,請在 Web.config 中設定許可證金鑰以進行集中配置。 隨著您的業務發展,授權系統支援擴展和升級。
如何使用 IronOCR 讀取超市收據?
讓我們探索如何在應用程式中使用 IronOCR,該應用程式可以使用智慧型手機掃描超市收據,提取產品名稱和價格,並根據購買情況獎勵忠誠度積分。 這包括影像擷取、預處理、OCR執行以及使用結果置信度評分進行資料驗證。
典型的收據圖片是什麼樣的?
這是一張超市收據範例,其中包含佔位符文字(Lorem ipsum),以及商品、價格、小計(107.60 美元)和付款詳情——展示了典型的收據佈局,包括抬頭、商品清單、總計和條碼。
常見的收據問題包括熱感紙品質、字體不統一、版面擁擠以及折疊或受潮造成的損壞。 IronOCR 的預處理透過影像品質校正和色彩校正技術來處理這些問題。
我需要編寫哪些 C# 程式碼來提取收據資料?
using IronOcr;
class ReceiptScanner
{
static void Main()
{
// Set the license key for IronOCR
IronOcr.License.LicenseKey = "YOUR-KEY";
// Instantiate OCR engine with optimal settings for receipts
var ocr = new IronTesseract();
// Configure for receipt-specific text
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.$,- ";
ocr.Configuration.BlackListCharacters = "~`@#%^*_+={}[]|\\:;\"'<>?";
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("supermarketexample.jpg");
// Apply preprocessing for better accuracy
inputPhoto.DeNoise();
inputPhoto.ToGrayScale();
inputPhoto.Contrast(1.2);
// Perform OCR on the loaded image
OcrResult result = ocr.Read(inputPhoto);
// Output the text extracted from the receipt
string text = result.Text;
Console.WriteLine(text);
// Extract specific data using OcrResult features
foreach (var line in result.Lines)
{
if (line.Text.Contains("TOTAL"))
{
Console.WriteLine($"Total Found: {line.Text}");
}
}
}
}using IronOcr;
class ReceiptScanner
{
static void Main()
{
// Set the license key for IronOCR
IronOcr.License.LicenseKey = "YOUR-KEY";
// Instantiate OCR engine with optimal settings for receipts
var ocr = new IronTesseract();
// Configure for receipt-specific text
ocr.Configuration.WhiteListCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.$,- ";
ocr.Configuration.BlackListCharacters = "~`@#%^*_+={}[]|\\:;\"'<>?";
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("supermarketexample.jpg");
// Apply preprocessing for better accuracy
inputPhoto.DeNoise();
inputPhoto.ToGrayScale();
inputPhoto.Contrast(1.2);
// Perform OCR on the loaded image
OcrResult result = ocr.Read(inputPhoto);
// Output the text extracted from the receipt
string text = result.Text;
Console.WriteLine(text);
// Extract specific data using OcrResult features
foreach (var line in result.Lines)
{
if (line.Text.Contains("TOTAL"))
{
Console.WriteLine($"Total Found: {line.Text}");
}
}
}
}這段程式碼示範了:
- 導入 IronOcr 庫。
- 使用設定選項實例化 OCR 引擎(
IronTesseract)。 - 建立一個新的OcrInput來載入收據圖片。
- 應用預處理以提高準確度。
- 使用
Read方法提取文字。 - 使用OcrResult 類別處理結構化資料的結果。
如何驗證提取資料的準確性?
為確保一致性,檢查擷取資料的置信度。 IronOCR提供多層次的全面信賴度指標:
OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine($"Overall Confidence: {result.Confidence}%");
// Check confidence for individual elements
foreach (var word in result.Words)
{
if (word.Confidence < 80)
{
Console.WriteLine($"Low confidence word: '{word.Text}' ({word.Confidence}%)");
}
}
// Validate numeric values
foreach (var block in result.Blocks)
{
if (block.Text.Contains("$"))
{
Console.WriteLine($"Price detected: {block.Text} (Confidence: {block.Confidence}%)");
}
}OcrResult result = ocr.Read(inputPhoto);
string text = result.Text;
Console.WriteLine(text);
Console.WriteLine($"Overall Confidence: {result.Confidence}%");
// Check confidence for individual elements
foreach (var word in result.Words)
{
if (word.Confidence < 80)
{
Console.WriteLine($"Low confidence word: '{word.Text}' ({word.Confidence}%)");
}
}
// Validate numeric values
foreach (var block in result.Blocks)
{
if (block.Text.Contains("$"))
{
Console.WriteLine($"Price detected: {block.Text} (Confidence: {block.Confidence}%)");
}
}Confidence屬性衡量統計準確度,範圍從 0(低)到 100(高)。 利用這些置信水準來決定如何處理資料。 對於生產系統,實施進度追蹤以監控 OCR 操作。
如何透過影像預處理提高OCR準確率?
處理影像前,請使用以下方法預處理影像,以獲得更好的處理效果:
using var inputPhoto = new OcrInput();
inputPhoto.LoadImage("receipt.jpg");
// Basic preprocessing
inputPhoto.DeNoise(); // Removes noise from the image
inputPhoto.ToGrayScale(); // Converts image to grayscale
inputPhoto.Contrast(1.5); // Enhance contrast for faded receipts
inputPhoto.Sharpen(); // Improve text clarity
// Advanced preprocessing for challenging receipts
inputPhoto.Rotate(2.5); // Correct slight rotation
inputPhoto.Deskew(); // Automatically straighten receipt
inputPhoto.Scale(200); // Upscale low-resolution images
// Handle specific receipt issues
if (receiptIsDamaged)
{
inputPhoto.Dilate(); // Thicken thin text
inputPhoto.Erode(); // Reduce text bleeding
}
// For colored or patterned backgrounds
inputPhoto.Binarize(); // Convert to pure black and white
inputPhoto.Invert(); // Handle white text on dark backgroundusing var inputPhoto = new OcrInput();
inputPhoto.LoadImage("receipt.jpg");
// Basic preprocessing
inputPhoto.DeNoise(); // Removes noise from the image
inputPhoto.ToGrayScale(); // Converts image to grayscale
inputPhoto.Contrast(1.5); // Enhance contrast for faded receipts
inputPhoto.Sharpen(); // Improve text clarity
// Advanced preprocessing for challenging receipts
inputPhoto.Rotate(2.5); // Correct slight rotation
inputPhoto.Deskew(); // Automatically straighten receipt
inputPhoto.Scale(200); // Upscale low-resolution images
// Handle specific receipt issues
if (receiptIsDamaged)
{
inputPhoto.Dilate(); // Thicken thin text
inputPhoto.Erode(); // Reduce text bleeding
}
// For colored or patterned backgrounds
inputPhoto.Binarize(); // Convert to pure black and white
inputPhoto.Invert(); // Handle white text on dark background使用 IronOCR 進行收據處理的主要優點是什麼?
收據 OCR 技術可協助企業和個人進行預算編制、防詐騙和自動資料收集。 IronOCR 具有準確度高、速度快、易於與現有平台整合等優點,是收據掃描解決方案的理想選擇。
主要優勢包括:
1.效能最佳化:透過多執行緒和速度調優,高效處理數千張收據。
2.匯出彈性:將收據轉換為可搜尋的 PDF或hOCR HTML ,以便整合到 Web 中。
3.企業功能:部署到Azure 、 Docker和Linux 伺服器以實現可擴充性。
常見問題解答
如何利用OCR技術實現超市收據的自動化處理?
OCR技術可以將掃描的超市收據轉換為數位數據,從而實現收據處理的自動化。使用IronOCR,可以自動讀取收據並提取文本,減少人工資料輸入,最大限度地降低人為錯誤。
IronOCR在處理超市小票上有哪些優勢?
IronOCR 在處理超市收據方面具有多項優勢,包括跨平台相容性、支援多種影像格式、強大的 API 便於集成,以及能夠處理多達 125 種語言,使其成為國際收據的理想選擇。
如何將 IronOCR 整合到 C# 應用程式中以讀取超市收據?
要將 IronOCR 整合到 C# 應用程式中,您需要取得許可證金鑰,匯入 IronOcr 庫,並使用IronTesseract引擎從超市收據圖像中讀取和提取文字。
哪些預處理技術可以提高收據掃描中OCR的準確率?
IronOCR 提供諸如DeNoise和ToGrayScale等預處理技術,以提高 OCR 的準確率。這些技術有助於去除影像雜訊並將影像轉換為灰階影像,從而增強從收據中提取文字的效果。
為什麼置信度測試在 OCR 中很重要,以及如何應用它?
IronOCR中的置信度測試非常重要,因為它衡量擷取資料的準確性,取值範圍從0(低)到1(高)。它幫助使用者評估OCR結果的可靠性,並為資料處理決策提供基礎。
IronOCR 能辨識多語言超市收據嗎?
是的,IronOCR 支援多達 125 種語言的 OCR 處理,能夠有效率地處理多語言超市收據。
IronOCR是否提供試用版供對該產品有興趣的開發者使用?
是的,IronOCR 為開發者提供免費試用版,讓他們可以在購買前探索其功能和功能。
IronOCR支援哪些平台進行收據掃描?
IronOCR 與 .NET 平台相容,包括 .NET 8、7、6、5 和 Framework 4.6.2 及更高版本,並支援在 Windows、macOS、Azure 和 Linux 環境下運作。
IronOCR為何適合將收據掃描功能整合到應用程式中?
IronOCR 具有高精度、易用性、跨平台支援以及無縫處理各種輸入格式和語言的能力,因此非常適合將收據掃描整合到應用程式中。







