Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何解析MICR行数据?_C#_Micr - Fatal编程技术网

C# 如何解析MICR行数据?

C# 如何解析MICR行数据?,c#,micr,C#,Micr,我有一个数字支票扫描仪,能够从支票中捕获MICR线。它将以字符串的形式返回原始格式的MICR行,用分隔符分隔帐号、路由号码和支票号码。然而,每家银行对此MICR行的格式不同,因此没有标准的方法来解析此数据 我试过的一些公司是Inlite Research Inc和Accusoft Pegasus。Inlite Research的API适用于一些银行,但无法正确读取美国银行的支票。我还在测试Accusoft的API 我想问的是,是否有人知道一个API可以准确地解析不同组件的MICR行。如果遇到AP

我有一个数字支票扫描仪,能够从支票中捕获MICR线。它将以字符串的形式返回原始格式的MICR行,用分隔符分隔帐号、路由号码和支票号码。然而,每家银行对此MICR行的格式不同,因此没有标准的方法来解析此数据

我试过的一些公司是Inlite Research Inc和Accusoft Pegasus。Inlite Research的API适用于一些银行,但无法正确读取美国银行的支票。我还在测试Accusoft的API

我想问的是,是否有人知道一个API可以准确地解析不同组件的MICR行。如果遇到API无法正确处理的新检查,是否有API允许我添加检查格式的新定义?或者,如果有人知道如何或已经编写了一个例程来解析MICR行


如果能得到任何帮助,我将不胜感激。谢谢。

很抱歉回复太晚。我没有看到这个问题的答案,所以我认为没有人回答

为了回答上述问题,我在仔细考虑了问题并与不同的供应商进行了讨论后,找到了一个解决方案。我正在使用的支票扫描仪已经能够读取MICR行。问题在于分析MICR行的相关信息,如路线中转号、账号、支票/序列号和金额(如果有)。在与少数几家第三方公司交谈并试用了可用的MICR解析器的试用版本后,我得出结论,目前还没有通用的解析器。我仍然面临着在美国赛场上不合作的问题。每个银行对此字段的格式都不同。有时,符号的排列方式也不同。因此,我决定编写自己的解析器。我认为这是最合乎逻辑的方式,因为这些第三方供应商告诉我,他们各自推出自己的解析软件

我编写解析器的方法是保存一个MICR行模式表。每次遇到新的MICR行格式时,我都会更新此表。我的解析器将匹配针对该表扫描的任何检查,如果找到匹配项,它将使用该模式来解析相关信息

我希望我的经验和我提出的解决方案也能帮助那些遇到同样问题的人


感谢所有回复的人,祝你好运。

根据我的研究,这也应该是正确的答案。MICR模式变化太大,如果没有一组正则表达式匹配模式来提取相关信息,就无法可靠地解析。最好能看到您用组名创建的正则表达式模式集合,例如:

<(?<checkNumber>[0-9\s]*)<[0-9\s]*:[0-9\s]*:.*

MICR的基本模式:

XXXXXXXXXX/RRRRRRR/OOOOOOOO BAAAAAAAAAB

其中“x”是AuxOnUs,“r”是路由号,“o”是OnUs,“a”是amount,“b”和“/”是特殊的MICR符号

最小MICR线仅为:

/rrrrrrrrr/ooooooo

AuxOnUs通常只用于商业支票,它几乎总是意味着有一个序列号

路由号码总是一致的,这是MICR中唯一通用的部分

金额通常不在MICR中编码,但有时是

责任是棘手的部分。它通常由支票序列号和账户组成,但每家银行的处理方式不同。序列号通常为4位数字,但可能为5位或更多。如果有一个AuxOnUs字段,你可以非常确定责任只是账号


ONU可以包含空格和破折号。如果有一种一致的划分方式会很好,但我看到了很多变化,我认为最好将其作为“OnUs”字段,而不是将其分为serial和account,除非您是付款银行,在这种情况下,你应该知道你自己的支票是什么格式。

6年前,这个问题最初被问到,在过去的两周里,我已经多次遇到这个问题。我终于找到了一个实际的解决方案,以及如何正确解析MICR行。我已经为此编写了一些代码,到目前为止,我扫描的99.9%的支票都可以使用它,因此我必须与大家分享,并确保人们了解应该如何做到这一点


我做这项工作已经11年了。我们一直使用Magtek检查扫描仪。最近我决定改用成像扫描仪,这样我们就可以扫描所有的支票。我用了帕尼尼检查扫描仪。不幸的是,他们的API并没有打破MICR生产线,但我们的Magtek扫描仪是可编程的,可以提供我们想要的任何东西。我创建了一个基本字符串,每次都可以与模式匹配。结果总是这样:

您正在使用的设备是否有OPOS驱动程序可用?你有没有找到解决这个问题的方法?如果你的答案解决了你的问题,你应该把你自己的答案标记为正确答案。对于其他看这个问题的人,我也会看一下你读者的文档。根据品牌和型号,您可以让它为您进行解析,并以标准格式返回。当我发现它不需要返回原始的MICR数据时,我使用的那个(Magtek)能够解析帐户、路由和检查号码,没有问题。
for (int i = micr.Length - 1; i >= 0; i--)