在扫描支票并从该扫描中生成 MICR 代码后,除了计算位数之外,还可以对该代码进行什么检查,以确信它是有效的或至少在内部是一致的?
我已经知道 MICR 代码是支票账户所属的 9 位路由号码。但其他可以检查吗?如果任何数字被错误地读取,它是否遵循任何可能给出提示的模式?
例如,此代码仅检查 9 位数字(我使用的是 C#,但答案使用什么语言并不重要):
'''C#正则表达式 regex = new Regex(@"^[0-9]{9}$");
我希望答案是真还是假。然后我可以得出适当的错误描述。
在扫描支票并从该扫描中生成 MICR 代码后,除了计算位数之外,还可以对该代码进行什么检查,以确信它是有效的或至少在内部是一致的?
我已经知道 MICR 代码是支票账户所属的 9 位路由号码。但其他可以检查吗?如果任何数字被错误地读取,它是否遵循任何可能给出提示的模式?
例如,此代码仅检查 9 位数字(我使用的是 C#,但答案使用什么语言并不重要):
'''C#正则表达式 regex = new Regex(@"^[0-9]{9}$");
我希望答案是真还是假。然后我可以得出适当的错误描述。
您需要参考 MICR 规范才能正确验证 MICR 读取是否有效。在此处查看 PDF: MICR 基础手册
以下是一些屏幕截图,可以帮助您解析 MICR 的各个部分:
否则,您可以查看为您处理此问题并与规范保持同步的商业库。我工作的公司有一个这样的库,您可以在这里查看:https : //www.leadtools.com/sdk/ocr/micr 具体来说,您可以使用能够找到 micr 行的高级 BankCheckReader 类在 E13b 和 Cmc7 micr 字体类型中的一种或两种的任何页面上。
这是 C# 中的一些示例代码,但此类也可用于 java 和其他语言:
BankCheckReader checkReader = new BankCheckReader();
IOcrEngine ocrEngine = OcrEngineManager.CreateEngine(OcrEngineType.LEAD);
ocrEngine.Startup(null, null, null, null);
checkReader.OcrEngine = ocrEngine;
checkReader.MicrFontType = BankCheckMicrFontType.E13b;
checkReader.ProcessImage(image);