用于校正倾斜文档的算法

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

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


回答:

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

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

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

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

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

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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