2009-08-06 71 views
2

我有55000图像文件(在JPG和TIFF格式),这是图书从图书。图像处理/超级光OCR

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

一些文本

---(水平线)---

若干

一些文本

---(水平线)---

另一个号码

一些文本

可以有从零到4的水平线任何给定网页上。

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

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

算法是,基本上是:

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

的问题是:什么是最好的图片库/语言做了“算水平线”的一部分?

回答

7

可能检测到您的线路最简单的方法是使用Hough transformOpenCV(其中有包装多国语言)。

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

O'Reilly's Learning OpenCV explains in detail the function's input and output(p.156)。

-2
+4

为什么当他需要计算线路时,他需要OCR? – 2009-08-07 11:05:09

+1

问题是如何解决这个问题没有OCR – Ivan 2009-08-07 11:10:19

+0

@kigurai @Ivan如果做OCR是微不足道的,为什么不。他假设有一种方法“与尝试OCR检测数字的页面相比,这应该既简单又安全。” – pageman 2009-08-07 14:32:08

0

如果您有良好的对比度,请尝试运行连接的组件并分析结果。它可以作为通过Hough找到线条的替代方法,并且在结构化元素有点弯曲或线条算法拾取您不希望它拾取的线条时覆盖这种情况。

连接的组件是一个超快的两个光栅扫描算法,并会为您提供一个与您所有连接的元素在其中标记有不同标签和占的面具。您可以放弃任何短小(在宽高比方面)。总的来说,这可以更普遍,更快速,但可能比运行Hough变换更复杂一点。另一方面,霍夫变换对于对比度伪像甚至线路中的偶然间隙将更容忍。 OpenCV具有findContours()函数,可以为您找到组件。