用于校正倾斜文档的算法

我正在进行一个涉及光学字符识别(OCR)的项目。在检测到每个字符后,我需要将相邻的字符组合起来形成单词。为此,我尝试创建了一个优先级队列,队列中包含检测到的字符信息(形成字符的像素集合以及字符在文档图像上的位置),并优先处理文档顶部的字符,如果两个字符在同一行,则优先处理最左边的字符。然后,我从优先级队列中依次取出字符,希望能从左到右、从上到下获取所有字符,并根据相邻字符之间的空格构建单词。然而,当文档稍微倾斜时,这种方法就失效了,因为有些字符在人眼看来显然在同一行,但实际上它们的像素高度可能相差5到10像素。

有没有自动校正文档的算法?或者检测倾斜角度的算法?或者有相关的库吗?如果没有,有没有解决这个问题的其他方法?这是我的毕业设计项目,我的时间非常有限,请帮帮我。谢谢。


回答:

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

  • 如果A的底部高于B的顶部,则A在B之前,反之亦然;

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

如果倾斜度过大,你需要隔离出各个文本行。一种方法是找到每个字符的左右邻居,并形成链。链中的字符按横坐标排序。

当倾斜度非常大且行间距非常小时,我不知道有什么简单且万无一失的解决方案。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注