如何使用IronOCR在C#中閱讀MICR支票

This article was translated from English: Does it need improvement?
Translated
View the article in English

手動處理支票既緩慢又容易出錯。 IronOCR通過專門的引擎簡化了這個工作流程,該引擎能準確讀取MICR(磁性墨水字元識別)線,讓您能夠自動擷取路由號碼、帳號和其他重要資料。

快速入門:OCR從支票圖像中讀取MICR

使用IronOCR快速抓取MICR線,只需將result.Text字串。 對於希望以最少設置獲得可靠金融資料提取的開發者來說,這是完美的選擇。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronOcr

    PM > Install-Package IronOcr
  2. 複製並運行這段程式碼片段。

    string micrText = new IronOcr.IronTesseract { Language = IronOcr.OcrLanguage.MICR }.Read(new IronOcr.OcrInput().LoadImage("micr.png", new System.Drawing.Rectangle(125, 240, 310, 15))).Text;
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronOCR,透過免費試用

    arrow pointer

如何從支票圖像中讀取MICR資料?

使用IronOCR讀取MICR線條非常簡單直觀。首先,將OcrLanguage.Micr。 為確保引擎讀取正確的區域,通過在OcrInput上設置矩形邊界來指定MICR線位置。

這可以通過選擇x和y座標,以及邊界框矩形的高和寬來實現,然後在調用Load方法時將矩形作為第二個參數傳遞。 調用Read方法後,僅處理此已定義區域。 MICR語言設定和特定區域的結合保證了IronOCR準確地提取相關金融資訊。

MICR技術使用特殊的磁性墨水和獨特的字體(北美的E-13B),包含精確的14個字元:數字0-9和四個特殊符號。 這些符號包括過渡符號(⑆),用於路由號碼邊界標記; 票據符號(⑈),用於將帳號與其他資料分隔開; 金額符號(⑊),用於編碼金額; 以及短線符號(⑉),用作分隔符。 這種墨水的磁性特性即使在支票被折疊、蓋章或輕微損壞時也能可靠地被讀取,使得MICR非常適合於高量支票處理。

MICR支票長什麼樣?

樣本支票顯示MICR線路,其中包含標示為MICR閱讀演示的路由號碼、帳號和支票號碼

MICR線包含什麼資訊?

支票號碼:這個號碼唯一標識了賬戶持有人支票簿中的特定支票。 它作為跟踪個別付款和維護交易記錄的明確參考。 在自動處理系統中,支票號碼有助於防止重複處理並協助對賬程式。

路由號碼:這個九位數字程式碼,通過⑆過渡符號封閉,標識持有帳戶的金融機構。 這是結算所用於將支票轉發到正確銀行付款的第一條資訊。 路由號碼遵循特定格式:前四位數字標識聯邦儲備路由符號,接下來的四位標識機構,最後一位是核對碼,用於驗證。

帳號:這能標識將從中提取資金的特定客戶帳戶。 其長度可因不同銀行而異,通常範圍在10至12位數字。 銀行可能在帳號結構中包含內部程式碼或分支標識符。

我需要什麼程式碼來提取MICR資料?

:path=/static-assets/ocr/content-code-examples/how-to/read-micr-cheque.cs
using IronOcr;
using IronSoftware.Drawing;
using System;

// Create a new instance of IronTesseract for performing OCR operations
IronTesseract ocr = new IronTesseract();

// Set the OCR language to MICR to recognize magnetic ink characters
// Must have MICR (IronOcr.Languages.MICR) installed beforehand
ocr.Language = OcrLanguage.MICR;

// Specify the file path of the input image containing MICR text
using (var input = new OcrInput())
{
    // Specify the MICR of the image to focus on for OCR (coordinates in pixels)
    var contentArea = new Rectangle(x: 215, y: 482, width: 520, height: 20);
    input.LoadImage("micr.png", contentArea);

    // Optional: Save the cropped area for verification
    input.StampCropRectangleAndSaveAs(contentArea, Color.Aqua, "cropped.png");

    // Run the OCR engine to read the MICR text from the input image
    var result = ocr.Read(input);
    // Output the recognized text to the console
    Console.WriteLine(result.Text);

    // Transit number is the first 7 characters of the MICR string
    string transitNum = result.Text.Substring(0, 7);
    // Routing number starts from the 8th character and is 11 characters long
    string routingNum = result.Text.Substring(7, 11);
    // Account number starts from the 22nd character to the end of the string
    string accountNum = result.Text.Substring(22);
}
Imports IronOcr
Imports IronSoftware.Drawing
Imports System

' Create a new instance of IronTesseract for performing OCR operations
Dim ocr As New IronTesseract()

' Set the OCR language to MICR to recognize magnetic ink characters
' Must have MICR (IronOcr.Languages.MICR) installed beforehand
ocr.Language = OcrLanguage.MICR

' Specify the file path of the input image containing MICR text
Using input As New OcrInput()
    ' Specify the MICR of the image to focus on for OCR (coordinates in pixels)
    Dim contentArea As New Rectangle(x:=215, y:=482, width:=520, height:=20)
    input.LoadImage("micr.png", contentArea)

    ' Optional: Save the cropped area for verification
    input.StampCropRectangleAndSaveAs(contentArea, Color.Aqua, "cropped.png")

    ' Run the OCR engine to read the MICR text from the input image
    Dim result = ocr.Read(input)
    ' Output the recognized text to the console
    Console.WriteLine(result.Text)

    ' Transit number is the first 7 characters of the MICR string
    Dim transitNum As String = result.Text.Substring(0, 7)
    ' Routing number starts from the 8th character and is 11 characters long
    Dim routingNum As String = result.Text.Substring(7, 11)
    ' Account number starts from the 22nd character to the end of the string
    Dim accountNum As String = result.Text.Substring(22)
End Using
$vbLabelText   $csharpLabel

程式碼展示了MICR支票處理的完整工作流程。 在運行此程式碼之前,確保您已通過NuGet安裝MICR語言包。 OcrInput類別提供強大的載入和預處理影像的方法,而Rectangle參數允許精確定位MICR線位置。

應該期望什麼結果?

除錯控制台顯示MICR解析結果,提取的過渡、路由和帳號來自支票

上面的輸出顯示了從MICR支票中獲得的三個部分:過渡號碼、路由號碼和帳號。 注意MICR特殊符號在輸出中的表示—這是正常行為,因為這些符號有特定的Unicode表示,可能在控制台輸出中顯示不同。

MICR OCR結果

OcrResult物件提供了掃描的詳細資訊:

文字:從OcrInput中提取的文字。 這包括來自MICR線的所有字元和符號,保持其原始順序。

信心:表示每個字元平均的統計準確度信心,1為最高,0為最低。由於標準化字體設計,MICR讀取的信心水平通常高於0.9。 了解更多關於OCR結果中的信心跟踪

塊、段落、行和單詞:已識別文字的分層結構,對於MICR通常由一行多個由符號分隔的單詞段組成。

條碼資料:在處理MICR的同時,IronOCR還可以檢測支票上出現的任何條碼或QR碼

我如何驗證正確的OCR區域?

為了確保您選擇了MICR線的正確座標,您可以可視化您定義的ContentArea。 一個簡單的方法是將矩形畫在輸入影像上並保存為新文件StampCropRectangleAndSaveAs。 這有助於您除錯和微調坐標以獲得最佳性能。

要找到您的Rectangle的座標,使用像MS Paint這樣的簡單影像編輯器。 打開您的支票圖像,將滑鼠懸停在MICR線的左上角和右下角,並注意(x,y)像素座標。 然後您可以計算矩形的性質:height = y2-y1

要了解更多高級區域選擇技術,請探索OCR影像區域目標PDF上的內容區域

這是畫完指定邊界框後,我們的範例支票的輸出圖像。

輸出

檢查顯示路由號碼、帳號和支票號碼的MICR線,以紅色框突出顯示

淡藍色矩形確認我們已正確隔離MICR線以進行處理。

效能優化提示

在處理多張支票時,考慮實施多執行緒以提高效能。 IronOCR有效地處理並發操作:

:path=/static-assets/ocr/content-code-examples/how-to/read-micr-cheque-3.cs
// Process multiple cheques in parallel
var chequeFiles = Directory.GetFiles("cheques/", "*.png");
Parallel.ForEach(chequeFiles, file =>
{
    using (var ocr = new IronTesseract { Language = OcrLanguage.MICR })
    using (var input = new OcrInput())
    {
        input.LoadImage(file, micrRegion);
        var result = ocr.Read(input);
        ProcessMicrData(result.Text);
    }
});
Imports System.IO
Imports System.Threading.Tasks
Imports IronOcr

' Process multiple cheques in parallel
Dim chequeFiles = Directory.GetFiles("cheques/", "*.png")
Parallel.ForEach(chequeFiles, Sub(file)
    Using ocr As New IronTesseract With {.Language = OcrLanguage.MICR}
        Using input As New OcrInput()
            input.LoadImage(file, micrRegion)
            Dim result = ocr.Read(input)
            ProcessMicrData(result.Text)
        End Using
    End Using
End Sub)
$vbLabelText   $csharpLabel

常見故障排除場景

低質量掃描:如果您處理的是質量不佳的支票影像,請應用影像預處理過濾器以提高可讀性。 MICR字體的鮮明形狀即使在退化的影像中也能幫助保持準確性。

字元識別不正確:確保已安裝最新的MICR語言包。 專門的MICR語言配置專門訓練用於E-13B字體識別。

MICR線位置多變:不同銀行可能會將MICR線放置在略有不同的位置。 考慮實施動態區域檢測,或者維護一個不同支票格式座標的配置文件。

相關金融文件處理

IronOCR的功能不僅限於支票處理。 探索這些相關功能以實現全面的金融文件自動化:

通過掌握IronOCR的MICR閱讀,您已經邁出了邁向全面自動化金融文件處理的第一步,大大減少了手動輸入錯誤並顯著加快工作流程。

常見問題

什麼是MICR及其對支票處理的重要性?

MICR(磁性墨水字元識別)是一項技術,使用特殊的磁性墨水和唯一字型在支票上編碼財務資訊。IronOCR的專門MICR引擎可準確閱讀這些編碼資料,包括路由號碼、帳號和支票號碼,從而自動化本應緩慢且易出錯的手動過程。

如何配置OCR引擎以讀取MICR文字?

要使用IronOCR讀取MICR文字,您需要將IronTesseract實例的Language屬性設置為OcrLanguage.MICR。這告訴引擎使用專門為閱讀支票上使用的E-13B字型而設計的MICR字元識別算法。

我可以指定在支票上確切的MICR資料位置嗎?

是的,IronOCR允許您透過在OcrInput上設置矩形邊界來指定MICR行的確切位置。您可以透過選擇x和y座標,以及邊界矩形的高度和寬度來定義,然後在調用Load方法時作為第二個參數傳遞。

MICR編碼中使用了哪些特殊字元?

MICR共使用14個字元:數字0-9和四個特殊符號。其中包括用於路由號範圍的轉運符號(⑆)、用於分隔帳號的on-us符號(⑈)、用於編碼金額的金額符號(⑊)以及作為分隔符的破折號符號(⑉)。IronOCR可以識別所有這些特定於MICR的字元。

從支票影像中提取MICR資料需要多快?

使用IronOCR,您只需一行程式碼即可提取MICR資料。只需建立帶有Language設置為MICR的IronTesseract實例,載入指定有MICR區域的影像,調用Read(),並存取result.Text屬性以立即獲取提取的MICR字串。

可以從MICR行中提取哪些型別的財務資訊?

IronOCR可以提取MICR行中編碼的所有關鍵財務資料,包括路由號碼(識別銀行)、帳號(識別特定帳戶)和支票號碼(唯一識別單個支票)。這種自動提取簡化了金融文件處理。

IronOCR能整合到現有的應用程式中嗎?

IronOCR被設計成可以輕鬆地整合到現有應用程式中,使用C#允許開發人員以最小的努力為其軟體新增OCR功能。

使用IronOCR進行文件管理的好處是什麼?

使用IronOCR進行文件管理通過將掃描的文件轉換為可搜索和可編輯的文字來簡化工作流程,減少手動資料輸入的需求並提高文件的可存取性。

IronOCR如何提高資料精確性?

IronOCR通過其先進的識別算法和影像校正功能提高資料精確性,確保文字提取過程既可靠又精確。

IronOCR有免費試用版嗎?

有的,Iron Software提供IronOCR的免費試用版,允許使用者在做出購買決定前測試其功能和能力。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備開始了嗎?
Nuget 下載 6,151,372 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

還在滾動?

想要快速證明? PM > Install-Package IronOcr
執行範例 觀看您的圖像轉變為可搜尋文字。