来分析MICR线路数据?我有一个数字检查扫描仪,可以从检查中捕获MICR行。它以字符串的形式返回原始格式的MICR行,并用分隔符分隔帐号、路由号码和支票号码。但是,每家银行对该MICR行的格式不同,因此没有标准的方法来解析该数据。我试过的一些公司是InliteResearchInc和AccusoftPegasus。InliteResearch的API适用于某些银行,但无法正确读取美国银行的支票。我仍在测试Accusoft的API。我要问的是,是否有人知道可以准确解析不同组件的MICR行的API。是否有一个API,如果我遇到API未正确处理的新检查,我将添加检查格式的新定义?或者,如果有人知道如何或已经编写了解析MICR行的例程。我将不胜感激任何帮助。谢谢。这么晚才回复很抱歉。我没有看到任何问题的任何答案,所以我认为没有人回答。为了回答上面的问题,我在思考问题和与各个供应商交谈后找到了解决方案。我使用的支票扫描仪已经能够读取MICR行。问题是解析MICR行以获取相关信息,例如路由转发号码、帐号、支票/序列号和金额(如果有)。在与少数3rd方公司交谈并尝试可用的MICR解析器试验后,我得出结论,那里没有通用的解析器。我仍然面临着不合格的On-Us字段的问题。每个银行的格式都不同,有时符号的排列也不同。所以,我决定编写自己的解析器。我认为这是最合乎逻辑的方式,因为这些第3方供应商告诉我他们各自推出自己的解析软件。我编写解析器的方式是保留一个MICR行模式表。每次遇到新的MICR行格式时,我都会更新此表格。我的解析器将匹配针对该表扫描的任何检查,如果找到匹配项,它将使用该模式来解析相关信息。我希望我的经验和我想出的解决方案也能帮助其他有同样问题的人。感谢所有回复的人,祝你好运。MICR的基本模式:xxxxxxxxxxxx/rrrrrrrrr/oooooooooooobaaaaaaaaa其中'x'是AuxOnUs,'r'是路由号,'o'是OnUs,'a'是数量,'b'和'/'是特殊的MICR符号。最小的MICR行是:/rrrrrrrrrr/ooooooooooAuxOnUs通常只用于业务支票,它几乎总是意味着有一个序列号。路由号码总是相同的,它是MICR的唯一公共部分。金额通常不在MICR中编码,但有时它们是。OnUs是棘手的部分。它通常由支票编号和帐号组成,但每个银行的处理方式不同。通常序列号是4位数字,但也可以是5位或更多位。如果有AuxOnUs字段,您可以非常确定OnUs就是帐号。OnUs可以包含空格和破折号。如果他们有一个一致的拆分方法就好了,但我看到了很多变化,我认为最好将它保留为“OnUs”字段而不是将其拆分为序列号和帐户,除非你如果您是付款银行,在这种情况下您应该知道支票的格式。根据我的研究,这应该是正确答案。如果没有一组正则表达式匹配模式来提取相关信息,MICR模式变化太大,无法可靠地解析。最好是看到你提出的带有组名的正则表达式模式的集合,例如:[0-9s]*)最初问这个问题6年后,我在过去两年中多次遇到这个问题周。我终于找到了一个实际的解决方案以及如何正确解析MICR行。我已经编写了一些代码来执行此操作,它适用于我目前扫描过的99.9%的支票,因此我必须分享并确保人们理解应该如何完成此操作。11年来,我一直在做这份工作。我们一直使用Magtek检查扫描仪。最近我决定使用成像扫描仪,这样我们就可以扫描所有支票。我去帕尼尼检查扫描仪。不幸的是,他们的API没有打破MICR系列,但我们的Magtek扫描仪是可编程的,可以为我们提供我们想要的任何东西。我创建了一个每次都与模式匹配的基本字符串。始终如下:其中a是路由号码,b是帐号,c是支票号码。我一直想知道扫描仪,作为一个简单的串行设备,如何绕过这个问题并在十年内每隔一段时间就把它弄好。我开始使用Patrick自己的答案来构建一个我以前从未见过的MICR模式表。问题是我遇到了一个模式与另一个模式非常匹配并且数据会稍微偏离的点。然后我尝试通过路由号码来完成,直到我遇到两张来自美国银行的支票,它们具有相同的路由号码和完全不同的MICR行。我非常失望,沮丧地面对着桌子。经过多方研究,正确的做法是从左到右解析MICR行。MICR线是从左到右的,当然给我们带来最大麻烦的字段是on-us字段。我所有的示例片段都是C#代码。首先循环遍历字符串:for(inti=micr.Length-1;i>=0;i--)在循环时评估每个字符。业务检查您的第一个字符是否是数量字符。阅读直到获得另一个数量字符,然后保存该值。如果下一个字符是on-us符号,则假定支票号位于on-us字段的最左侧。如果下一个字符是数字,请继续阅读并填充缓冲区(记住您正在向后工作!),直到到达我们的字符。如果您的缓冲区仅包含数字,那就是您的支票号码。如果它是空的,就继续收集缓冲区中的整个on-us字段,直到到达传输字符。一旦到达传输字符,继续阅读并填充缓冲区,直到到达下一个传输字符。您的缓冲区现在是您的路由号码。如果是商业支票,还是要多读几个字。继续阅读,直到你读到我们的另一个角色。您现在已经到达了第二个on-us字段,它应该是一个支票号码。一直读到下一个our字符,它应该是字符串的末尾。你现在有一个支票号码。现在,查看从常规on-us字段中删除的值。如果您有支票号码,那就是您的帐号。如果你没有支票号码,那么你应该用空格分隔on-us字段,并假设你最左边的数字(数组元素0)是你的支票号码。但是,如果按空格拆分后数组中只有一个元素,则意味着on-us字段可能包含破折号分隔项。用破折号分隔on-us字段,并假设最左边的数组元素是支票号码,其余是您的帐号。我见过一些在我们的字段中有多达3个破折号,如下所示:nnnn-1234-56-7其中nnnn是支票号码,其余是帐号。一旦您将帐号与支票号码分开,并从中删除任何杂项字符(空格、破折号等),您就完成了。这就是我解决所有MICR问题的方法。希望它能帮助别人。部分感谢这份文件:http://www.transact-tech.com/uploads/printers/files/100-9094-Rev-C-MICR-Programmers-Guide.pdf以上是C#学习教程:Howto解析MICR行数据?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
