矫直倾斜文件的算法

时间:2015-04-19 11:07:26

标签: algorithm computer-vision artificial-intelligence ocr document

我正在进行涉及OCR的项目。在检测到每个字符后,我需要组合关闭字符来创建单词。为此,我尝试创建一个优先级队列,其中包含有关检测到的字符的信息(形成字符的像素集和文档图像上字符的位置),并为文档顶部的字符赋予更高的优先级,并且更高如果两个字符在同一行上,则为最左边的字符。然后一个接一个地从优先级队列中调出字符,希望它能从左到右,从上到下给出所有字符,并根据每两个后续字符之间的空格构建单词。当文档稍微倾斜时实际上失败了,因为显然在人眼相同线上的某些角色不一定在相同的像素高度上(阈值为5~10px)。

是否有自动识别文档的算法?或检测倾斜角?或者任何图书馆?或者如果没有,有没有办法解决这个问题?这是我的最后一年项目,我没有多少时间来解决这个问题。请帮忙。感谢。

2 个答案:

答案 0 :(得分:1)

我相信2D傅立叶变换可以在这里提供帮助:

  1. 使半径与字符大小相当的文档平滑
  2. 执行傅立叶变换
  3. 分析光谱
  4. 我希望强大的组件对应于垂直方向和较弱的组件 - 水平。了解线距可能会限制分析区域并提高准确度。

答案 1 :(得分:1)

如果倾斜和行间距是文本行总是可以用水平线分隔的,那么使用特殊的比较规则进行排序就足够了:

  • 如果A的底部高于B的顶部,则A先于B,反之;

  • 否则,如果A中的某个点位于B中某个点的左侧,则A位于B之前,反之亦然。

如果歪斜太大,则需要隔离各条线。一种方法是找到每个角色的左/右近邻,并形成链。链中的字符按横坐标排序。

当歪斜非常大且行间很小时,我知道没有简单的防弹解决方案。