如何使用IronOCR在 C# 進行 MICR 支票 OCR辨識與擷取圖片文字
人工處理支票既慢又容易出錯。 IronOCR透過專門的 OCR辨識引擎簡化了這個工作流程,該引擎可以準確擷取圖片文字並讀取 MICR(磁墨字元辨識)線路,讓您可以自動擷取路由號碼、帳號和其他關鍵資料。
快速入門:OCR 讀取支票影像中的 MICR
使用IronOCR快速抓取 MICR 行-只需將 Language 設為 MICR,指定 MICR 文字出現的矩形區域,執行 Read(),即可立即取得 result.Text 字串。 非常適合希望以最少的設定提取可靠財務數據的開發人員。
-
使用NuGet套件管理器安裝https://www.nuget.org/packages/IronOcr
PM > Install-Package IronOcr -
複製並運行這段程式碼。
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; -
部署到您的生產環境進行測試
今天就在您的專案中開始使用免費試用IronOCR
最簡工作流程(5個步驟)
- 下載用於讀取 MICR 支票的 C# 庫
- 實例化 OCR 引擎
- 將`Language`設定設為 MICR
- 使用`Read`方法從樣本支票影像中提取數據
- 存取**OcrResult**屬性以查看和操作提取的數據
如何從支票影像讀取MICR資料?
使用IronOCR讀取 MICR 行非常簡單直覺。首先將 IronTesseract 實例的 Language 屬性設為 OcrLanguage.Micr。 為確保引擎讀取正確的區域,請透過在 OcrInput 上設定矩形邊界來指定 MICR 線的位置。
這是透過選擇邊界框矩形的 x 和 y 座標以及高度和寬度,然後將矩形作為第二個參數在呼叫 Load 方法時傳遞來實現的。 呼叫 Read 方法後,只會處理這個定義的區域。 MICR 語言設定與特定區域的這種結合保證了IronOCR能夠準確提取相關的財務資訊。
MICR 技術使用特殊的磁性墨水和獨特的字體(北美地區為 E-13B),該字體恰好包含 14 個字元:數字 0-9 和四個特殊符號。 這些符號包括轉運符號(⑆),它表示路由號碼的邊界; 用於分隔帳號和其他資料的符號(⑈); 金額符號(⑊),用於表示金額編碼; 以及用作分隔符號的破折號(⑉)。 這種墨水的磁性特性使得即使支票被折疊、蓋章或輕微損壞,也能可靠地讀取,因此 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
該程式碼演示了MICR 支票處理的完整工作流程。 在運行此程式碼之前,請確保已透過NuGet安裝了 MICR 語言套件。 OcrInput 類別提供了強大的影像載入和預處理方法,而 Rectangle 參數允許精確定位 MICR 線的位置。
我應該期待什麼樣的結果?
上面的輸出顯示了從 MICR 支票中獲得的三個部分:轉帳號碼、路由號碼和帳號。 請注意特殊 MICR 符號在輸出中的表示方式——這是正常現象,因為這些符號具有特定的 Unicode 表示形式,在控制台輸出中可能會以不同的方式顯示。
MICR OCR 結果
OcrResult 物件提供有關掃描的詳細資訊:
文本:從 OcrInput 中提取的文本。 這包括 MICR 行中的所有字元和符號,並保持其原始順序。
置信度:表示每個字元平均值的統計準確度置信度,1 為最高,0 為最低。對於 MICR 讀取,由於其標準化的字體設計,置信度通常高於 0.9。 了解更多關於OCR結果置信度追蹤的資訊。
區塊、段落、行和單字:辨識文字的層次結構,對於 MICR 來說,通常由一行包含多個單字片段,這些片段由符號分隔。
條碼資料:在處理 MICR 時, IronOCR可以同時偵測支票上存在的任何條碼或二維碼。
如何驗證OCR區域是否正確?
為了確保您已為 MICR 線選擇了正確的座標,您可以視覺化您定義的ContentArea 。 一個簡單的方法是在輸入圖像上繪製矩形,並將其另存為新文件,文件名稱為 StampCropRectangleAndSaveAs。 這有助於您調試和微調坐標,以獲得最佳性能。
要找到矩形的座標,請使用像 MS Paint 這樣的簡單圖像編輯器。 開啟支票影像,將滑鼠懸停在 MICR 行的左上角和右下角,並記下 (x,y) 像素座標。 然後您可以計算矩形的屬性:(x1, y1, width, height),其中 width = x2-x1 和 height = y2-y1。
若要了解更進階的區域選擇技術,請探索 PDF 中的OCR 區域定位和內容區域。
這是在範例支票上繪製指定邊界框後的輸出影像。
輸出
淺藍色矩形表示我們已經正確分離 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)
常見故障排除場景
低品質掃描:如果您正在處理品質較差的檢查影像,請套用影像預處理濾鏡以提高可讀性。 MICR 字體的獨特形狀有助於即使在影像品質較差的情況下也能保持準確性。
字元辨識錯誤:請確保已安裝最新的 MICR 語言套件。 專用的MICR 語言配置是專門針對 E-13B 字體辨識進行訓練的。
MICR 線位置可變:不同的銀行可能會將 MICR 線放置在略有不同的位置。 考慮實作動態區域偵測,或維護一個包含不同檢查格式座標的設定檔。
相關財務文件處理
IronOCR 的功能不僅限於支票處理。 探索以下相關功能,實現全面的財務文件自動化:
-從掃描的發票中提取數據 -處理身分證明文件以符合 KYC 合規要求 閱讀財務報表中的表格
透過掌握IronOCR的 MICR 讀取技術,您已經邁出了實現財務文件全自動處理的第一步,從而減少了人工輸入錯誤,並顯著加快了您的工作流程。
常見問題解答
什麼是 MICR,為什麼它對支票處理很重要?
MICR(磁性墨水字符識別)是一種使用特殊磁性墨水和獨特字體在支票上編碼金融資訊的技術。IronOCR 專門的 MICR 引擎可以準確讀取這些編碼資料,包括路由號碼、帳號和支票號碼,將原本緩慢且容易出錯的手動程序自動化。
如何設定 OCR 引擎來讀取 MICR 文字?
要使用 IronOCR 讀取 MICR 文字,您需要將 IronTesseract 實例的語言屬性設定為 OcrLanguage.MICR。這會告訴引擎使用專門為讀取支票上使用的 E-13B 字型而設計的 MICR 字元識別演算法。
我可以明確指定在支票上的哪個位置尋找 MICR 資料嗎?
是的,IronOCR 允許您透過在 OcrInput 上設定矩形邊界來指定 MICR 線的確切位置。您可以透過選擇 x 和 y 座標,以及邊框矩形的高度和寬度來定義,然後在呼叫 Load 方法時將其作為第二個參數傳送。
MICR 編碼中使用哪些特殊字符?
MICR 共使用 14 個字元:0-9 位數和四個特殊符號。這些符號包括中轉符號 (⑆),用於路由號碼邊界;on-us 符號 (⑈),用於分隔帳號;金額符號 (⑊),用於編碼金額;破折號 (⑉),用於分隔。IronOCR 可以識別所有這些 MICR 專用字符。
如何快速從支票影像中擷取 MICR 資料?
使用 IronOCR,只需一行代碼即可提取 MICR 資料。只需建立語言設定為 MICR 的 IronTesseract 範例,載入指定 MICR 區域的影像,呼叫 Read(),並存取 result.Text 屬性,即可立即取得擷取的 MICR 字串。
可以從 MICR 行提取哪些類型的財務資訊?
IronOCR 可以提取 MICR 行中編碼的所有關鍵財務資料,包括路由號碼(識別銀行)、帳號(識別特定帳戶)和支票號碼(唯一識別個別支票)。此自動擷取功能可簡化財務文件處理程序。

