如何使用 C# 中的 IronOCR 讀取 MICR 支票

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

手動處理支票既耗時又容易出錯。 IronOCR 透過專用的引擎精簡此工作流程,該引擎能精準讀取 MICR(磁性墨水字元辨識)行,讓您自動提取銀行代碼、帳號及其他關鍵資料。

快速入門:透過 OCR 從支票影像讀取 MICR 資訊

使用 IronOCR 快速擷取 MICR 行——只需將 Language 設為 MICR,指定 MICR 文字出現的矩形區域,執行 Read(),即可立即取得 result.Text 字串。 非常適合希望以最少的設定即可可靠地擷取財務資料的開發人員。

  1. using 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 字元串既簡單又直觀。首先將 IronTesseract 實例的 OcrLanguage.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 而言,通常由單一行組成,其中多個 WORD 段落以符號分隔。

BarCode 資料:在處理 MICR 時,IronOCR 可同時偵測支票上存在的任何 BarCode 或 QR 碼

如何驗證 OCR 區域是否正確?

為確保您已為 MICR 行選取正確的座標,您可以檢視您所定義的 ContentArea。 一個簡單的方法是在輸入圖片上繪製矩形,並將其儲存為新檔案,檔案名稱包含 StampCropRectangleAndSaveAs。 這有助於您除錯並微調座標,以獲得最佳效能。

若要找出您的 Rectangle 的座標,請使用 MS Paint 等簡易的圖片編輯軟體。 開啟您的支票影像,將滑鼠懸停在 MICR 線的左上角與右下角,並記下 (x,y) 的像素座標。 接著即可計算矩形的屬性:(x1, y1, width, height),其中 width = x2-x1height = y2-y1

若需更進階的區域選取技術,請探索 PDF 中的 OCR 區域定位內容區塊功能

以下是在範例支票上繪製指定邊界框後的輸出圖像。

輸出

請參閱標示有路由號碼、帳戶號碼及支票號碼的 MICR 行(紅色方框內標示)

淺藍色矩形確認我們已正確隔離 MICR 行以供處理。

效能優化技巧

處理多項檢查時,請考慮採用多執行緒來提升效能。 IronOCR 能高效處理多工操作:

// 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);
    }
});
// 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。此設定會指示引擎使用專門設計的 MICR 字元辨識演算法,該演算法特別用於讀取支票上使用的 E-13B 字型。

我可以明確指定在支票的哪個位置查找 MICR 資料嗎?

是的,IronOCR 允許您透過在 OcrInput 上設定矩形邊界,來指定 MICR 行的確切位置。您可透過選取 x 和 y 座標,並設定邊界框矩形的高度和寬度來定義此位置,然後在呼叫 Load 方法時將其作為第二個參數傳入。

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

MICR 共使用 14 個字元:數字 0-9 以及四個特殊符號。這些符號包括用於標示路由號界限的轉帳符號 (⑆)、用於分隔帳戶號碼的本行符號 (⑈)、用於編碼金額的金額符號 (⑊),以及用作分隔符號的破折號 (⑉)。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 University)的電腦科學學士學位,專精於前端開發,並精通 Node.js、TypeScript、JavaScript 及 React。他熱衷於打造直觀且美觀的用戶介面,喜歡運用現代框架,並創建結構完善、視覺上吸引人的手冊。

除了開發工作之外,Curtis 對物聯網(IoT)抱有濃厚興趣,致力於探索整合硬體與軟體的創新方法。閒暇時,他喜歡玩遊戲和開發 Discord 機器人,將對科技的熱愛與創意相結合。

準備開始了嗎?
Nuget 下載 5,896,332 | 版本: 2026.5 just released
Still Scrolling Icon

還在往下捲動嗎?

想要快速確認成果嗎? PM > Install-Package IronOcr
執行範例 觀看您的圖片轉為可搜尋文字。