Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# 如何读取扫描支票的支票号码和银行路线号码_C#_.net_Windows_Ocr - Fatal编程技术网

C# 如何读取扫描支票的支票号码和银行路线号码

C# 如何读取扫描支票的支票号码和银行路线号码,c#,.net,windows,ocr,C#,.net,Windows,Ocr,我正在扫描支票,我想读取扫描支票的支票号码和银行路线号码。请任何人帮我提供示例代码。您需要某种OCR库来分析扫描图像以获取有用信息。在谷歌上搜索“c#ocr库”得到了几个结果,包括下面这一个:美国和世界其他许多地方使用的路由和帐号的原始方案是专门为机器读取能力而优化的。早期,他们使用单通道磁性读取头进行读取,因为用于打印这些数字的墨水是磁性的。这意味着,即使这些数字被邮票遮住,也可以阅读,书写其他印刷材料 事实上,一旦你了解了这些字符是如何形成的,阅读这些字符的能力就相当简单了。可能最容易理解的

我正在扫描支票,我想读取扫描支票的支票号码和银行路线号码。请任何人帮我提供示例代码。

您需要某种OCR库来分析扫描图像以获取有用信息。在谷歌上搜索“c#ocr库”得到了几个结果,包括下面这一个:

美国和世界其他许多地方使用的路由和帐号的原始方案是专门为机器读取能力而优化的。早期,他们使用单通道磁性读取头进行读取,因为用于打印这些数字的墨水是磁性的。这意味着,即使这些数字被邮票遮住,也可以阅读,书写其他印刷材料

事实上,一旦你了解了这些字符是如何形成的,阅读这些字符的能力就相当简单了。可能最容易理解的方法是查看相关专利的第一页:

所以你有一个数字,在每个数字旁边是一个简短的图表。此图描述了水平扫描数字时用于打印数字的墨水量

正如您所看到的,每个数字都有一个非常独特的签名。在这方面,实际的MICR字体(E-13B)更为独特,数字周围的特殊字符和终止符具有相同的特征——当您沿其水平扫描并计算出每个垂直列使用了多少“黑色”时,它们具有唯一的签名

我面前没有MICR规格,但它的方形外观出现在0.013英寸的网格上

因此,你只需要做一点特征识别(找到支票的各个角落,因为数字总是打印在同一个点上),然后你可以简单地扫描每个垂直列,将黑色像素的数量相加,形成“信号”,并查找特征。通过调整图像大小,使每0.013英寸有四个像素,可以减少需要处理的数据量。如果您完美地完成了特征识别,您可以将分辨率降低到每0.013英寸1个像素,并且非常接近于比较每个数字的几个大整数

它们将足够清晰,你应该能够强行使用,但如果你喜欢数字信号处理(或使用谷歌和维基百科),那么你可以使用一个简单的相关器非常快速地识别数字,甚至使用更高的分辨率

其他资源:


这是一个非常复杂的问题,可定制用于银行支票字体的OCR。你不能指望社区写你的整个项目。我不指望写整个项目。。。。。。我已经用ocr阅读器试过了,但并没有给我准确的结果。。。它没有正确识别,所以我想搜索另一个。。请用其他想法或dllIn帮助我。在这种情况下,您应该详细说明您在问题中尝试了什么(具体技术、库等)。我使用ocr阅读器,因为micr文本是-024418 530039001 40061 29。。。里面有数字。但是ocr读卡器将其读为C IL LB“1 S3ooB900L,有时类似于C IL LB”1 53003900,并为同一检查读取不同的数字。如果您将此字段的ocr字符集限制为“仅限数字”,则会得到更好的结果。此检查号码行始终位于表单底部,因此您可以使用“0123456789:”在页面的该部分运行第二个OCR通行证,这是一个经过充分研究的“用户”答案。