如何读取扫描支票的支票号码和银行路由号码[关闭]

Posted

技术标签:

【中文标题】如何读取扫描支票的支票号码和银行路由号码[关闭]【英文标题】:How to read check number and bank routing number of scanned check [closed] 【发布时间】:2011-10-12 07:39:45 【问题描述】:

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

【问题讨论】:

这是一个相当复杂的问题,需要为字体银行支票定制 OCR。你不能指望社区来编写你的整个项目。 我不希望编写整个项目......我已经尝试过使用 ocr 阅读器,但没有给我准确的结果......它没有正确识别,所以我想搜索对于另一个..请帮助我解决其他想法或 dll 在这种情况下,您应该指定您在问题中尝试过的内容(具体技术、库等) 我使用了 ocr 阅读器,因为 micr 文本是 - 024418 530039001 40061 29... 里面的数字。但是 ocr 阅读器将其读取为 C IL LB”1 S3ooB900L 有时像这样 C IL LB”1 53003900 并读取不同的数字以进行相同的检查.. 如果您将此字段的 OCR 字符集限制为“仅限数字”,那么您将获得更好的结果。此检查编号行始终位于表单的底部,因此您可以使用“0123456789.-:”在页面的该部分运行第二次 OCR 通行证 【参考方案1】:

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

实际上,一旦您了解了字符的构成方式,就可以轻松阅读这些内容。可能最容易理解的方法是查看相关专利的第一页:

http://www.freepatentsonline.com/3000000.pdf

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

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

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

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

它们将足够明显,您应该能够强制使用它,但如果您喜欢数字信号处理(或方便使用 google 和 wikipedia),那么您可以使用简单的相关器非常快速地识别数字,即使使用更高的分辨率。

其他资源:

http://mdn.morovia.com/kb/entry/10616/Check-Processing-Fonts-Around-the-World/ http://en.wikipedia.org/wiki/Magnetic_ink_character_recognition http://home.comcast.net/~hayosh/HISTMICR.pdf

【讨论】:

对“用户”的深入研究。【参考方案2】:

您需要某种 OCR 库来分析扫描图像以获取有用信息。在 Google 上搜索“c# ocr library”得到了几个结果,其中包括 SO:https://***.com/questions/744966/any-open-source-c-ocr-library

【讨论】:

以上是关于如何读取扫描支票的支票号码和银行路由号码[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

检查图像扫描类或应用程序[关闭]

如何将文本重新格式化为不同的模式?

C# - 银行支票(余额,交易)[关闭]

如何开发 iOS 相机视图,如银行存款支票

接受信用卡/电子支票付款

什么是 ACID 的真实示例? [关闭]