OCR:指数检测,超/下标(C++)

OCR: Exponent detection, super/subscripts(C++)

本文关键字:下标 C++ 指数 检测 OCR      更新时间:2023-10-16

我已经能够识别字符,如123。。。,n

我一直在想一种方法来检测某个数字是另一个数字的指数。

例如,在运行我的程序后,这个图片应该返回(5/6)^2,但我想不出用什么方法或想法来说这个数字是指数。

有什么建议吗?我在c++中使用openCV。

当检测到字符时,您将拥有它们各自的边界框。需要做出一些假设,比如知道字符的大致比例,我们称之为s——你可以从所有检测到的边界框的大小推断出这一点。

基于此,您可以尝试以下操作:

  1. 对于每个检测到的边界框(D_bbox),定义从边界框中心到±2*S的搜索范围
  2. 在该搜索区域中,从检测到的其他字符中查找其他边界框中心(O_bbox)
    1. 对于在搜索区域中找到的每个中心,计算D_bbox和O_bbox之间的比率。指数字符大小应小于数字=>D_bbox/O_bbox>1

我想它应该在1.5左右,但这取决于字体等。玩这些值,看看你得到了什么。

其他一些可能有帮助的启发式方法:

  • D_bbox_centre_x<O_bbox_centre_x
  • D_bbox_centre_y<O_bbox_centre_y

数字总是在指数的左边,它的中心在页面上总是低于指数的中心。

我不会尝试检测括号,因为在某些情况下,你可能不使用它们来写指数。