1

我正在开发一个 OCR,其​​主要功能是 OCR 发票,现在可能会在扫描时发生(轻微)旋转。

你会建议什么来解决旋转问题?

我目前拥有的:

  • 计算图像中“白线数量”的函数。
  • 可以将图像旋转任意角度的功能。
  • 当前方法:每次将图像旋转 1 度,检查具有最多白线的解决方案,并将该图像用于 OCR 过程的其余部分。
  • 缺点:每次旋转需要 0.5 秒,图像以相当合理的高分辨率扫描(2000 宽 x 3000 高),而 OCR 过程肯定需要该分辨率。

有什么方法可以检测图像中的旋转,这样我只需要进行一次昂贵的旋转吗?

问候。

4

2 回答 2

3
  • 缺点:每次旋转需要 0.5 秒,图像以相当合理的高分辨率扫描(2000 宽 x 3000 高),而 OCR 过程肯定需要该分辨率。

当然可以,但分析白线可能不需要高分辨率。

我建议在第一次确定角度之前尝试缩小或裁剪图像(到更小的副本),并始终使用低分辨率版本,直到确定角度。 然后换回大分辨率图像以进行最终旋转和 OCR。

于 2013-08-26T12:29:03.100 回答
2

我建议您首先将图像降级并将其转换为monochrome我们只有0 and 255 in the 8 bit有助于识别的颜色格式)然后跟踪black行而不是white发票(这对您的算法应该不会有很大的变化),通常是发票包含水平黑线,因此只要找到黑线的斜率(that are 30 degree +/- to you plane因为我猜输入不会更倾斜),您就可以获得主图像所需的度数旋转。

为了优化这个过程,我建议您在跟踪黑线之前也使用图像细化,因为可能会有粗黑线,这样可以获得更好的结果。

于 2013-08-26T12:34:16.853 回答