跳過到頁腳內容
使用 IRONOCR

C# 中的 OCR 發票處理開發者教學

發票資料處理是指從供應商或賣方接收、管理和驗證發票,並確保付款正確及時地完成。這包括設計確保準確性、合規性及效率的步驟,以避免紙質發票。 自動化發票處理可以顯著減少手動數據輸入錯誤並提高效率。 IronOCR 是一個強大的光學字符識別(OCR)軟體庫,可以用來從數字文件中提取發票中的數據或文字,使其成為在 C# 應用程式中自動化發票 OCR 處理的優秀工具。

如何使用像 IronOCR 這樣的 OCR 軟件處理發票數據

  1. 創建一個 Visual Studio 項目。
  2. 安裝 IronOCR C# 庫。
  3. 樣本輸入發票圖片。
  4. 使用 Tesseract 並從收據圖像中提取數據。
  5. 只讀取圖像的一個區域。

光學字符識別 (OCR)

光學字符識別 是一種能夠辨識和轉換文本文件、PDF 或影像的技術,將其轉換成可編輯和可搜尋的數據。 OCR 技術處理文本圖像並提取字符,讓它們變得可機器讀取。 先進的 OCR 發票軟件系統有助於財務管理工具和發票自動化。

有關 OCR 的關鍵點

  • 功能:OCR 軟件掃描圖像或文本(如照片或掃描文件),將字符轉換為可編輯、可搜尋及可存儲的數字文本。
  • 應用:OCR 在各行各業廣泛用於數字化打印文件、發票處理、數據提取、自動車牌識別(ANPR)、應付賬款流程及掃描書籍等任務。
  • 技術:OCR 使用算法識別光亮和黑暗的模式以解釋字符。 現代 OCR 系統也使用機器學習和人工智能來提高準確性。
  • 優勢:OCR 通過自動化數據輸入、減少錯誤,提高生產力,並使數據搜索和檢索更容易。 它也支持文件存檔並幫助企業管理無紙化工作流程。

OCR 技術已經顯著進步,使其在處理文件和發票數據提取中高度準確和有用,涵蓋許多不同的發票格式以減少手動數據輸入,消除手動發票處理,並提高數據安全性。

IronOCR

IronOCR 是一個強大的 Optical Character Recognition (OCR) .NET (C#) 庫,它允許開發人員從圖像、PDF 和其他文檔格式中提取文本,開發 OCR 發票軟件並實施應付賬款工作流程。 它提供簡易使用的 API,便於將 OCR 功能整合到應付賬款系統或會計系統中。

IronOCR的主要特點

  • 文本提取:它可以從多種圖像格式(如 PNG、JPG、TIFF 等)和 PDF 中提取文本,包括為會計軟件的多頁 PDF。
  • 準確性:IronOCR 使用先進的算法和機器學習技術,提供高精度的文本識別,即使是對於噪聲或低質量圖像來說,也能適用於應付賬款流程和提前付款折扣。
  • 語言支持:該庫支持多種語言,包括英文、西班牙文、法文等,這有助於識別不同語言的文本。
  • 易用性:IronOCR 提供一個簡潔的 API,使開發人員能夠快速將 OCR 功能集成到其應用程式中,無需深入了解 OCR 技術。
  • 條碼和 QR 碼識別:除了標準的文本識別,IronOCR 還可以從圖像中檢測和提取條碼和 QR 碼。
  • PDF 支持:它可以從掃描的 PDF 中讀取和提取文本,便於處理發票、收據和其他商務文件。
  • 自定義:該庫允許根據特定需求對 OCR 設置進行自定義,如調整準確性或處理不同的圖像分辨率。

先決條件

開始前,確保您已具備以下內容:

  • 在您的計算機上安裝了 Visual Studio。
  • C# 編程的基本認識。
  • 在您的項目中安裝了 IronOCR NuGet 程序包。

步驟 1:創建一個 Visual Studio 項目

打開 Visual Studio 並單擊創建新專案。

C# 中的 OCR 發票處理(開發者教程):圖 1 - 新項目

在選項中選擇主控台應用程序。

C# 中的 OCR 發票處理(開發者教程):圖 2 - 主控台應用程序

提供項目名稱和路徑。

C# 中的 OCR 發票處理(開發者教程):圖 3 - 項目配置

選擇 .NET 版本類型。

C# 中的 OCR 發票處理(開發者教程):圖 4 - 目標框架

步驟 2:安裝 IronOCR C# 庫

在 Visual Studio 的項目中,前往工具 > NuGet 包管理器 > 為解決方案管理 NuGet 程序包。 點擊瀏覽標籤,搜索 IronOCR。 選擇 IronOCR 並點擊安裝。

C# 中的 OCR 發票處理(開發者教程):圖 5 - IronOCR

另一個選擇是使用控制台以及下面的命令。

dotnet add package IronOcr --version 2024.12.2

步驟 3:樣本輸入發票圖片

樣本數字發票圖像,其中包括發票號。

C# 中的 OCR 發票處理(開發者教程):圖 6 - 樣本輸入

步驟 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
$vbLabelText   $csharpLabel

代碼解釋

提供的代碼演示如何在 C# 中使用 IronOCR 庫來利用 OCR (光學字符識別) 從圖像(如發票)中提取文本。 以下是每個部分的代碼解釋:

  1. 授權密鑰設置

    • 代碼從設置 IronOCR 的授權密鑰開始。 該密鑰是使用該庫完整功能所需的。 如果您有有效的授權,請將 "Your License" 替換為您的實際授權密鑰。
  2. 指定輸入文件

    • filePath 變量持有包含發票的圖像位置(在此案例中為 "sample1.jpg")。 這是將進行文本提取處理的文件。
  3. 創建 OCR 實例

    • 創建一個 IronTesseract 的實例。 IronTesseract 是負責對輸入數據執行 OCR 操作的類。
  4. 加載圖像

    • 代碼創建一個 OcrInput 對象,該對象使用 LoadImage 方法加載由 filePath 指定的圖像。
  5. 應用圖像過濾器

    • 代碼可選地應用濾鏡如 Deskew() 來校正傾斜的圖像並提高 OCR 的準確性。
  6. 執行 OCR

    • ocr.Read() 方法從加載的圖像中提取文本,返回包含提取文本的 OcrResult
  7. 顯示提取文本
    • 提取的文本打印到控制台。 這是 IronOCR 從圖像中識別出的文本,可以用於進一步處理。

輸出

C# 中的 OCR 發票處理(開發者教程):圖 7 - OCR 輸出帶發票號

步驟 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
$vbLabelText   $csharpLabel

代碼解釋

此代碼使用 IronOCR 從圖像的特定區域提取文本,並提供增強準確性的圖像濾鏡選項。 以下是細分內容的每一部分:

  1. 授權設置

    • 設定 IronOCR 的授權密鑰,這對使用該庫的 OCR 功能是必要的。 將 "Your Key" 替換為您的有效授權密鑰。
  2. 定義圖像文件路徑

    • 指定要處理的發票圖像的文件路徑,該文件包含文本提取的內容。
  3. 創建 OCR 實例

    • 創建一個 IronTesseract 的實例用於執行 OCR 操作。
  4. 定義要處理的區域

    • 在圖像內(從左上角開始)指定一個矩形區域以將 OCR 處理焦點集中在相關部分,提高效率。
  5. 加載圖像

    • 從文件加載圖像的指定內容區域。這限制了 OCR 處理到圖像的特定部分。
  6. 應用過濾器

    • 應用濾鏡如 Deskew() 以增強圖像對齊,並可能使用 DeNoise() 清理圖像以提高 OCR 的準確性。
  7. 提取文本

    • 從定義的區域讀取文本併入在 OcrResult 中。
  8. 輸出提取文本
    • 將 OCR 處理過的文本輸出到控制台以便進一步使用。

輸出

C# 中的 OCR 發票處理(開發者教程):圖 8 - 抽取輸出

授權(可試用)

IronOCR 需要密鑰來從發票中提取數據。 從授權頁面獲取您的開發者試用密鑰。

using IronOcr; 
License.LicenseKey = "Your Key";
using IronOcr; 
License.LicenseKey = "Your Key";
Imports IronOcr
License.LicenseKey = "Your Key"
$vbLabelText   $csharpLabel

結論

本文提供了如何使用 IronOCR 進行發票處理的基本示例。 您可以進一步自定義和擴展此代碼以適合您的特定需求。

IronOCR 提供了一個高效且易於集成的解決方案來從圖像和 PDF 中提取文本,使其非常適合用於發票處理。 通過將 IronOCR 與 C# 字符串操作或正則表達式相結合,您可以快速處理和從發票中提取重要數據。

這是一個基本的發票處理示例,結合更多高級配置(如語言識別、多頁 PDF 處理等),您可以對 OCR 結果進行微調以提高特定用例的準確性。

IronOCR 的 API 非常靈活,可以用於各種 OCR 任務,除了發票處理外,還包括收據掃描、文檔轉換和數據輸入自動化。

常見問題解答

如何在 C# 中自動化發票數據處理?

您可以使用 IronOCR 自動化 C# 中的發票數據處理,以從數字發票文件中提取文本和數據。這降低了手動數據輸入錯誤並提高了處理發票的效率。

設置 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# 應用程序的無縫集成以進行自動化數據處理。

Kannaopat Udonpant
軟體工程師
在成為软件工程師之前,Kannapat 從日本北海道大學完成了環境資源博士學位。在追逐學位期间,Kannapat 還成為了生產工程系一部份——汽車机器人实验室的成員。2022 年,他利用他的 C# 技能加入 Iron Software 的工程團隊, 專注於 IronPDF。Kannapat 珍惜他的工作,因为他直接向编写大部分 IronPDF 使用的代码的开发者学习。除了同行学习,Kannapat 还喜欢在 Iron Software 工作的社交十环。当他不编写代码或文档时,Kannapat 通常在他的 PS5 上打游戏或重看《The Last of Us》。