1

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

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

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

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

谢谢你的帮助。

斯文

4

1 回答 1

2

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

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

请注意,此类算法的数学运算量很大,并且现在针对标准 x86 CPU 进行了优化。

如果您正在寻找一个完美匹配(我的意思是,非常完美,精确到字节到字节)并且您想快速轻松地实现这一点,我建议您做一个“快速跳过明显的不匹配” - 有点算法 -就像是:

1)比较数组的大小,如果不同,这不是你要找的

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

3)逐个比较每个位/字节,一旦发现差异,这不是您要寻找的

4) 赢了,你找到了匹配:)

这非常慢,具体取决于您要实现的目标,但易于实施并且会起作用。对于类似原型的应用程序来说也很顺利。正如我所说,OCR(和所有其他形式的数字信号处理)是一个巨大的研究领域,所以你不能指望人们在一个快速的论坛帖子中教你,可悲的是:(

祝你好运

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

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

于 2009-02-22T13:48:17.083 回答