2

我有 55 000 个图像文件(JPG 和 TIFF 格式),它们是书中的图片。

每个页面的结构是这样的:

一些文字

---(水平线)---

一个号码

一些文字

---(水平线)---

另一个号码

一些文字

任何给定页面上可以有 0 到 4 条水平线。

我需要找到数字是多少,就在水平线的下方。

但是,数字严格遵循彼此,从第一页的一个开始,所以为了找到数字,我不需要阅读它:我可以检测水平线的存在,这应该既容易又安全尝试对页面进行 OCR 以检测数字。

该算法基本上是:

for each image
  count horizontal lines
  print image name, number of horizontal lines
  next image

问题是:执行“计算水平线”部分的最佳图像库/语言是什么?

4

3 回答 3

7

检测线条的最简单方法可能是使用OpenCV中的Hough 变换(它具有多种语言的包装器)。

OpenCV Hough 变换将检测图像中的所有线条并返回它们的角度和开始/停止坐标。您应该只保留角度接近水平且长度足够的那些。

O'Reilly 的 Learning OpenCV详细解释了函数的输入和输出(第 156 页)。

于 2009-08-07T10:05:58.520 回答
0

如果您有良好的对比度,请尝试运行连接的组件并分析结果。当您的结构化元素有点弯曲或线条算法拾取您不希望它拾取的线条时,它可以替代通过 Hough 查找线条并覆盖案例。

连接组件是一种超快速的两个光栅扫描算法,它会为您提供一个掩码,其中所有连接的元素都标有不同的标签并进行说明。您可以丢弃任何简短的内容(就纵横比而言)。总体而言,这可能比运行霍夫变换更通用、更快,但可能涉及更多。另一方面,霍夫变换对于对比度伪影甚至线条中的意外间隙将更能容忍。OpenCV 的 findContours() 函数可以为您找到组件。

于 2014-02-25T05:32:38.680 回答
-2

你可能想试试John' Resig 的 OCR 和 Javascript 中的神经网络

于 2009-08-06T13:15:08.253 回答