Jak odczytać czek MICR za pomocą IronOCR w języku C

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

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.

  1. Install IronOCR with NuGet Package Manager

    PM > Install-Package IronOcr
  2. 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;
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronOCR w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

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?

Przykład czeku z pokazaną linią MICR zawierającą numer trasowania, numer konta i numer czeku oznaczone do demonstracji odczytu 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
$vbLabelText   $csharpLabel

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ć?

Konsola debugowania pokazująca wyniki analizy MICR wraz z numerami tranzytowymi, routingu i numerami kont wyodrębnionymi z czeku

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

Wiersz MICR zawierający numer rozliczeniowy, numer konta i numer czeku zaznaczony na czerwono

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)
$vbLabelText   $csharpLabel

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:

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.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 5,571,678 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronOcr
uruchom próbkę obserwuj, jak twój obraz staje się tekstem z możliwością wyszukiwania.