C#でIronOCRを使用してMICR小切手を読み取る方法</#35;

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

チェックを手動で処理すると時間がかかり、エラーが発生しやすくなります。 IronOCRは、MICR(磁気インク文字認識)ラインを正確に読み取る専用エンジンにより、このワークフローを合理化し、ルーティング番号、口座番号、その他の重要なデータの抽出を自動化します。

クイックスタート: チェック画像からMICRをOCR読み取り

Using IronOCR, you can quickly obtain the MICR line. Set Language to MICR, specify the rectangular region where the MICR text appears, run Read(), and immediately obtain the result.Text string. 最小限のセットアップで信頼性の高い財務データの抽出を望む開発者に最適です。

  1. IronOCR をNuGetパッケージマネージャでインストール

    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 メソッドを呼び出す際に、その矩形を 2 番目のパラメータとして渡すことで実現されます。 Read メソッドを呼び出すと、定義されたこの領域のみが処理されます。 MICR 言語設定と特定の地域を組み合わせることで、IronOCR が関連する財務情報を正確に抽出することが保証されます。

MICR技術は、特殊な磁気インクと、0~9の数字と4つの特殊記号の合計14文字を正確に含む独自のフォント(北米ではE-13B)を使用します。 これらの記号には、ルーティング番号の境界を示すトランジット記号(F)が含まれます; 口座番号を他のデータから分離する記号(⑈); 金額記号 (↪So_244A) は、エンコードされた金額に使用されます; とダッシュ記号(⑉)は区切り記号として機能します。 このインクの磁気特性により、小切手が折りたたまれたり、スタンプが押されたり、わずかに損傷したりしても、確実に読み取ることができるため、MICRは大量の小切手処理に理想的です。

MICR小切手とはどのようなものですか?

MICR読み取りのデモンストレーション用に、ルーティング番号、口座番号、小切手番号がラベル付けされたMICR行を示すサンプル小切手

MICRラインにはどのような情報が含まれていますか?

小切手番号: この番号は、口座名義人の小切手帳から特定の小切手を一意に識別します。 個々の支払いを追跡し、取引記録を維持するための明確な参照として機能します。 自動処理システムでは、小切手番号は重複処理を防ぎ、照合手順を支援します。

ルーティング番号: トランジット記号⑆で囲まれたこの 9 桁のコードは、口座を保有する金融機関を識別します。 これは、決済機関が小切手を適切な銀行に送金するために使用する最初の情報です。 最初の4桁は連邦準備制度理事会(FRB)のルーティング・シンボル、次の4桁は金融機関、最後の1桁は検証用のチェックサムです。

口座番号: 資金が引き出される特定の顧客口座を識別します。 長さは銀行によって異なり、通常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小切手から得られた3つのセクション(通過番号、送金番号、口座番号)を示しています。 特殊なMICR記号が出力でどのように表現されているかに注目してください-これらの記号はコンソール出力で異なって表示される可能性のある特定のUnicode表現を持っているため、これは通常の動作です。

MICR OCR結果

OcrResult オブジェクトは、スキャンに関する詳細情報を提供します:

テキスト: OcrInput から抽出されたテキスト。 これには、MICR行のすべての文字と記号が含まれ、元の順序を維持します。

信頼度:すべての文字の平均の統計的な精度の信頼度を示し、1が最高、0が最低です。MICR読み取りでは、標準化されたフォント設計により、0.9を超える信頼度が一般的です。 OCR結果の信頼性追跡については、こちらをご覧ください。

ブロック、段落、行、単語:認識されるテキストの階層構造で、MICRでは通常、記号で区切られた複数の単語セグメントを持つ1行で構成されます。

BarCodeデータ:MICRを処理する際、IronOCRは同時に小切手上に存在するバーコードまたはQRコードを検出することができます。

正しいOCRリージョンを確認するにはどうすればよいですか?

MICR ラインの正しい座標を選択したことを確認するには、定義したContentArea を視覚化できます。 これを行う簡単な方法は、入力画像上に長方形を描画し、それを StampCropRectangleAndSaveAs という名前で新しいファイルとして保存することです。 これにより、座標をデバッグして微調整し、最適なパフォーマンスを実現できます。

Rectangle の座標を確認するには、MS ペイントなどの簡単な画像編集ソフトを使用してください。 小切手の画像を開き、MICRラインの左上と右下の角にマウスを合わせ、(x,y)というピクセル座標を確認してください。 その後、矩形のプロパティを計算できます:(x1, y1, width, height)、ここで width = x2-x1 および height = y2-y1

より高度なリージョン選択テクニックについては、OCRリージョンターゲティングPDFによるコンテンツエリアをご覧ください。

以下は、サンプルの小切手に指定された境界ボックスを描画した後の出力画像です。

出力

ルーティング番号、口座番号、および赤枠で強調表示された小切手番号を示す小切手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 (Magnetic Ink Character Recognition) は、特殊な磁気インクと独自のフォントを使用して小切手に金融情報をエンコードする技術です。IronOCRの専門的なMICRエンジンは、ルーティング番号、口座番号、小切手番号などのエンコードされたデータを正確に読み取ることができ、通常であれば時間がかかり、エラーが発生しやすい手作業を自動化します。

MICRテキストを読み取るためのOCRエンジンの設定方法を教えてください。

IronOCRでMICRテキストを読むには、IronTesseractインスタンスのLanguageプロパティをOcrLanguage.MICRに設定する必要があります。これにより、小切手で使用されるE-13Bフォントを読み取るために特別に設計されたMICR文字認識アルゴリズムを使用するようにエンジンに指示します。

小切手のどこにMICRデータがあるかを正確に指定できますか。

はい、IronOCRではOcrInputに矩形の境界線を設定することにより、MICR線の正確な位置を指定することができます。これはバウンディングボックスの矩形の高さと幅とともにxとyの座標を選択して定義し、Loadメソッドを呼び出すときに2番目のパラメータとして渡します。

MICRエンコーディングにはどのような特殊文字が使用されていますか?

MICRは、0~9の数字と4つの特殊記号の合計14文字を使用します。これらには、ルーティング番号の境界を表すトランジット記号($)、口座番号を区切るオンス記号(⑈)、エンコードされた金額を表す金額記号(⑊)、セパレーターとしてのダッシュ記号(⑉)が含まれます。IronOCRはこれらすべてのMICR固有の文字を認識することができます。

小切手画像から MICR データを短時間で抽出できますか。

IronOCRを使えば、たった1行のコードでMICRデータを抽出することができます。言語をMICRに設定したIronTesseractインスタンスを作成し、MICR領域を指定した画像を読み込み、Read()を呼び出し、result.Textプロパティにアクセスするだけで、抽出されたMICR文字列を即座に得ることができます。

MICRラインから抽出できる財務情報の種類は?

IronOCRは、MICR行にエンコードされている重要な財務データ(銀行を特定するルーティング番号、特定の口座を特定する口座番号、個々の小切手を一意に特定する小切手番号など)を抽出することができます。この自動抽出により、金融文書処理が合理化されます。

IronOCRは既存のアプリケーションに統合できますか?

IronOCRはC#を使用して既存のアプリケーションに簡単に統合できるよう設計されており、開発者がソフトウェアにOCR機能を少ない手間で追加できるようにします。

ドキュメント管理でIronOCRを使用する利点は何ですか?

IronOCRを使用することで、スキャンされた文書を検索可能かつ編集可能なテキストに変換し、手作業によるデータ入力を減らし、文書のアクセス性を向上させることでワークフローを効率化します。

IronOCRはデータ精度をどのように向上させますか?

IronOCRはその高度な認識アルゴリズムと画像補正機能により、信頼性が高く正確なテキスト抽出プロセスを保証します。

IronOCRの無料トライアルを利用できますか?

はい、Iron SoftwareはIronOCRの無料トライアルを提供しており、ユーザーが購入決定をする前にその機能と能力をテストできます。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 5,896,332 | バージョン: 2026.5 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronOcr
サンプルを実行 あなたの画像が検索可能なテキストになるのをご覧ください。