OCR:如何比较图像,排序不匹配,快速完成?

时间:2009-02-22 13:24:27

标签: c# arrays compare ocr

我设法将每个字符存储在位图中,并且正在寻找一种快速确定它是哪个字符的方法。

因此,我将把每个可能的字符存储到1和0的数组中,并将它们与我刚刚抓取的位图数组进行比较。

我可以做一些简单的检查,例如比较我得到的黑色像素数,比较尺寸等,但所有这些检查都很慢(只是一个猜测......)。

所以我正在寻找的是一种方法,它从底部到顶部从每个像素开始,或随机地将数组与一组数组进行比较并排序不匹配,直到只剩下一个数组。但是我该如何实现呢?

感谢您的帮助。

斯文

1 个答案:

答案 0 :(得分:2)

在OCR世界中,很少会遇到目标资源和原始比较资源之间的“完美匹配”。

实际上这是一个巨大的科学领域,但这里有一个关于这个主题的好论文,应该给你一些基本的知识: http://www.discover.uottawa.ca/~qchen/my_papers/master_thesis.pdf

请注意,像这样的算法非常重,现在已针对标准x86 CPU进行了优化。

如果你正在寻找一个完美的匹配(我的意思是,非常完美,一直到字节到字节),你想快速简单地实现这一点,我建议做一个“快速跳过明显的不匹配” - 有点算法 - 类似于:

1)比较数组的大小,如果不同,那就不是你想要的了

2)比较每个位图的哈希值

3)逐个比较每个位/字节,一看到差异,就不是你想要的了

4)赢了,你找到了一场比赛:))

这非常慢,取决于您要实现的目标,但易于实施并且可以正常运行。对于类似原型的应用程序来说也是如此。正如我所说,OCR(以及所有其他形式的数字信号处理)是一个巨大的研究领域,所以你不能期望人们快速地教你一个人,遗憾的是:(

祝你好运

[编辑]看看你的OQ中的评论,我会说哈希表/字典数据结构对你来说是最快的。那个,或二元搜索树。两者都非常依赖你的哈希密钥生成器:)

[EDIT2(xD)]“它是由计算机生成的别名文本。背景不同,但文本总是具有相同的颜色。”那里非常重要的信息:P文本/位图的大小总是一样吗?我建议您实现自己的哈希算法,放弃预设的背景颜色,这样哈希值只取决于文本的颜色(以及这个的形状)或者只是重写目标中的所有背景像素与原始颜色相同(或者只是将原始背景设置为目标背景?再次取决于您在这里与之战斗的数据 - 需要更多信息:))。