Jak odczytać czek MICR za pomocą IronOCR w języku C
Ręczne przetwarzanie czeków jest powolne i podatne na błędy. IronOCR usprawnia ten proces dzięki specjalistycznemu silnikowi, który dokładnie odczytuje linię MICR (Magnetic Ink Character Recognition), umożliwiając automatyczne wyodrębnianie numerów rozliczeniowych, numerów kont i innych kluczowych danych.
Szybki start: OCR – odczyt MICR z obrazu czeku
Użyj IronOCR, aby szybko pobrać linię MICR - wystarczy ustawić Language na MICR, określić prostokątny obszar, w którym pojawia się tekst MICR, uruchomić Read() i natychmiast uzyskać ciąg result.Text. Idealne rozwiązanie dla programistów, którzy chcą niezawodnego pozyskiwania danych finansowych przy minimalnej konfiguracji.
-
Install IronOCR with NuGet Package Manager
PM > Install-Package IronOcr -
Skopiuj i uruchom ten fragment kodu.
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; -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Pobierz bibliotekę C# do odczytu czeków MICR
- Utwórz instancję silnika OCR
- Ustaw
językna MICR - Użyj metody
Read,aby wyodrębnić dane z przykładowego obrazu czeku - Użyj właściwości OcrResult, aby wyświetlić i przetwarzać wyodrębnione dane
Jak odczytać dane MICR z obrazu czeku?
Odczytywanie linii MICR za pomocą IronOCR jest proste i intuicyjne. Rozpocznij od ustawienia właściwości Language instancji IronTesseract na OcrLanguage.Micr. Aby zapewnić, że silnik odczyta poprawny obszar, określ położenie linii MICR, ustawiając granice prostokąta na OcrInput.
Jest to osiągnięte przez wybranie współrzędnych x i y oraz wysokości i szerokości prostokąta ograniczającego, a następnie przekazanie prostokąta jako drugiego parametru podczas wywołania metody Load. Wywołanie metody Read przetwarza tylko ten zdefiniowany region. Połączenie ustawienia języka MICR i konkretnego regionu gwarantuje, że IronOCR dokładnie wyodrębni odpowiednie informacje finansowe.
Technologia MICR wykorzystuje specjalny atrament magnetyczny oraz unikalną czcionkę (E-13B w Ameryce Północnej), która zawiera dokładnie 14 znaków: cyfry od 0 do 9 oraz cztery symbole specjalne. Symbole te obejmują symbol tranzytu (⑆), który oznacza granice numerów tras; symbol "on-us" (⑈), który oddziela numer konta od innych danych; symbol kwoty (⑊), używany do kwot zakodowanych; oraz symbol myślnika (⑉), który służy jako separator. Właściwości magnetyczne tego tuszu pozwalają na niezawodny odczyt nawet wtedy, gdy czeki są złożone, ostemplowane lub lekko uszkodzone, dzięki czemu MICR idealnie nadaje się do przetwarzania dużych ilości czeków.
Jak wygląda czek MICR?

Jakie informacje zawiera linia MICR?
Numer czeku: Numer ten jednoznacznie identyfikuje konkretny czek z książeczki czekowej posiadacza rachunku. Służy jako przejrzyste źródło informacji do śledzenia poszczególnych płatności i prowadzenia ewidencji transakcji. W systemach przetwarzania automatycznego numer czeku pomaga zapobiegać podwójnemu przetwarzaniu i ułatwia procedury uzgadniania.
Numer routingu: Ten dziewięciocyfrowy kod, otoczony symbolem tranzytowym ⑆, identyfikuje instytucję finansową prowadzącą rachunek. Jest to pierwsza informacja, którą izba rozliczeniowa wykorzystuje do skierowania czeku do właściwego banku w celu realizacji płatności. Numer routingu ma określony format: pierwsze cztery cyfry oznaczają symbol routingu Rezerwy Federalnej, kolejne cztery identyfikują instytucję, a ostatnia cyfra to suma kontrolna służąca do weryfikacji.
Numer konta: Identyfikuje konkretne konto klienta, z którego zostaną pobrane środki. Jego długość może się różnić w zależności od banku, zazwyczaj wynosi od 10 do 12 cyfr. Banki mogą umieszczać kody wewnętrzne lub identyfikatory oddziałów w strukturze numeru konta.
Jakiego kodu potrzebuję do wyodrębnienia danych 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
Kod przedstawia kompletny przebieg przetwarzania czeków MICR. Przed uruchomieniem tego kodu upewnij się, że zainstalowałeś pakiet językowy MICR za pośrednictwem NuGet. Klasa OcrInput udostępnia zaawansowane metody ładowania i wstępnego przetwarzania obrazów, a parametr Rectangle pozwala precyzyjnie wskazać położenie linii MICR.
Jakich rezultatów mogę się spodziewać?
Powyższy wynik pokazuje trzy sekcje uzyskane z czeku MICR: numer tranzytowy, numer routingu i numer konta. Zwróć uwagę na sposób przedstawienia specjalnych symboli MICR w wynikach — jest to normalne zachowanie, ponieważ symbole te mają określone reprezentacje Unicode, które mogą wyglądać inaczej w wynikach konsoli.
Wyniki MICR OCR
Obiekt OcrResult dostarcza szczegółowych informacji o skanie:
Tekst: Wyodrębniony tekst z OcrInput. Obejmuje to wszystkie znaki i symbole z linii MICR, zachowując ich oryginalną kolejność.
Pewność: Wskazuje statystyczną pewność dokładności średniej dla każdego znaku, gdzie 1 oznacza najwyższą, a 0 najniższą. W przypadku odczytu MICR typowe są poziomy pewności powyżej 0,9 ze względu na znormalizowany projekt czcionki. Dowiedz się więcej o śledzeniu pewności wyników OCR.
Bloki, akapity, wiersze i słowa: Hierarchiczna struktura rozpoznanego tekstu, która w przypadku MICR zazwyczaj składa się z jednego wiersza z wieloma segmentami słów oddzielonymi symbolami.
Dane BarCode: Podczas przetwarzania MICR, IronOCR może jednocześnie wykrywać wszelkie kody kreskowe lub kody QR obecne na czeku.
Jak mogę zweryfikować prawidłowy obszar OCR?
Aby upewnić się, że wybrałeś prawidłowe współrzędne dla linii MICR, możesz wyświetlić zdefiniowany obszar ContentArea. Prostym sposobem na to jest narysowanie prostokąta na obrazku wejściowym i zapisanie go jako nowy plik z StampCropRectangleAndSaveAs. Pomaga to w debugowaniu i precyzyjnym dostosowywaniu współrzędnych w celu uzyskania optymalnej wydajności.
Aby znaleźć współrzędne prostokąta, użyj prostego edytora obrazów, takiego jak MS Paint. Otwórz obrazek swojego czeku, najedź myszką na lewy górny i prawy dolny róg linii MICR i zanotuj współrzędne pikseli (x,y). Można następnie obliczyć właściwości prostokąta: (x1, y1, width, height), gdzie width = x2-x1 i height = y2-y1.
Aby poznać bardziej zaawansowane techniki wyboru regionów, zapoznaj się z kierowaniem reklam na regiony OCR i obszary treści w plikach PDF.
Oto obrazek wynikowy po narysowaniu określonego prostokąta ograniczającego na naszym przykładowym czeku.
Wynik
Jasnoniebieski prostokąt potwierdza, że poprawnie wyodrębniliśmy linię MICR do przetworzenia.
Wskazówki dotyczące optymalizacji wydajności
Podczas przetwarzania wielu czeków warto rozważyć wdrożenie wielowątkowości w celu poprawy wydajności. IronOCR sprawnie obsługuje operacje wykonywane jednocześnie:
// 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)
Typowe scenariusze rozwiązywania problemów
Skanowanie niskiej jakości: Jeśli pracujesz z obrazami kontrolnymi o niskiej jakości, zastosuj filtry przetwarzania wstępnego obrazu, aby poprawić czytelność. Charakterystyczny kształt czcionki MICR pomaga zachować dokładność nawet w przypadku obrazów o obniżonej jakości.
Nieprawidłowe rozpoznawanie znaków: Upewnij się, że masz zainstalowany najnowszy pakiet językowy MICR. Specjalistyczna konfiguracja językowa MICR jest specjalnie przeszkolona do rozpoznawania czcionki E-13B.
Zmienne pozycje linii MICR: Różne banki mogą umieszczać linię MICR w nieco innych miejscach. Rozważ wdrożenie dynamicznego wykrywania regionu lub prowadzenie pliku konfiguracyjnego z współrzędnymi dla różnych formatów sprawdzania.
Powiązane przetwarzanie dokumentów finansowych
Możliwości IronOCR wykraczają poza przetwarzanie czeków. Zapoznaj się z poniższymi powiązanymi funkcjami, które zapewniają kompleksową automatyzację dokumentów finansowych:
- Pobieranie danych ze zeskanowanych faktur
- Przetwarzanie dokumentów tożsamości w celu zapewnienia zgodności z wymogami KYC
- Odczyt tabel w sprawozdaniach finansowych
Opanowując odczyt MICR za pomocą IronOCR, zrobiłeś pierwszy krok w kierunku w pełni zautomatyzowanego przetwarzania dokumentów finansowych, zmniejszając liczbę błędów związanych z ręcznym wprowadzaniem danych i znacznie przyspieszając przepływ pracy.
Często Zadawane Pytania
Co to jest MICR i dlaczego jest ważny do przetwarzania czeków?
MICR (Magnetic Ink Character Recognition) to technologia, ktora uzywa specjalnego tuszu magnetycznego i unikalnych czcionek do kodowania informacji finansowych na czekach. Specjalistyczny silnik MICR IronOCR moze dokladnie odczytywac te zakodowane dane, w tym numery tras, numery kont i numery czekow, automatyzujac to, co inaczej byloby powolnym i podatnym na bledy procesem manualnym.
Jak skonfigurować silnik OCR do czytania tekstu MICR?
Aby czytać tekst MICR za pomocą IronOCR, należy ustawić właściwość Language instancji IronTesseract na OcrLanguage.MICR. Informuje to silnik o korzystaniu ze specjalizowanych algorytmów rozpoznawania znaków MICR, zaprojektowanych specjalnie do czytania czcionki E-13B używanej na czekach.
Czy mogę dokładnie określić, gdzie na czeku szukać danych MICR?
Tak, IronOCR pozwala na dokładne określenie położenia linii MICR, ustawiając prostokątne granice na OcrInput. Definiujesz to, wybierając wspołrzędne x i y oraz wysokość i szerokość prostokąta obramowania, a następnie przekazując go jako drugi parametr podczas wywoływania metody Load.
Jakie znaki specjalne są używane w kodowaniu MICR?
MICR używa łącznie 14 znaków: cyfry 0-9 i cztery specjalne symbole. Obejmują one symbol tranzytu (⑆) dla granic numerów tras, symbol na-wlasny (⑈) do oddzielania numerów kont, symbol kwoty (⑊) dla zakodowanych kwot i symbol myślnika (⑉) jako separator. IronOCR potrafi rozpoznać wszystkie te znaki specyficzne dla MICR.
Jak szybko mogę wyodrębnić dane MICR z obrazu czeku?
Z IronOCR mozesz wyodrębnić dane MICR w zaledwie jednej linii kodu. Po prostu utwórz instancje IronTesseract z ustawionym jezykiem na MICR, załaduj swoj obraz z określonym regionem MICR, wywołaj Read(), a następnie uzyskaj dostęp do właściwości result.Text, aby natychmiast otrzymać wyodrębniony ciąg MICR.
Jakie rodzaje informacji finansowych można wyodrębnić z linii MICR?
IronOCR moze wyodrębnić wszystkie kluczowe dane finansowe zakodowane w linii MICR, w tym numer rozliczeniowy (identyfikujący bank), numer konta (identyfikujący konkretne konto) i numer czeku (unikalnie identyfikujący pojedynczy czek). Ta zautomatyzowana ekstrakcja usprawnia przetwarzanie dokumentów finansowych.

