OCR:指数检测,超/下标(C++)
OCR: Exponent detection, super/subscripts(C++)
我已经能够识别字符,如1
、2
、3
。。。,n
。
我一直在想一种方法来检测某个数字是另一个数字的指数。
例如,在运行我的程序后,这个图片应该返回(5/6)^2
,但我想不出用什么方法或想法来说这个数字是指数。
有什么建议吗?我在c++中使用openCV。
当检测到字符时,您将拥有它们各自的边界框。需要做出一些假设,比如知道字符的大致比例,我们称之为s——你可以从所有检测到的边界框的大小推断出这一点。
基于此,您可以尝试以下操作:
- 对于每个检测到的边界框(D_bbox),定义从边界框中心到±2*S的搜索范围
- 在该搜索区域中,从检测到的其他字符中查找其他边界框中心(O_bbox)
- 对于在搜索区域中找到的每个中心,计算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
数字总是在指数的左边,它的中心在页面上总是低于指数的中心。
我不会尝试检测括号,因为在某些情况下,你可能不使用它们来写指数。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 矢量下标超出SFML游戏中的范围
- 如何在C++程序中使用下标数字?
- 一组值的零开销下标运算符
- 运行时错误:矢量下标超出范围:正在检查空集
- 如何重载下标运算符 [] 以引用 2d STL 数组?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 矢量无效下标.SFML
- C++ IDE 不会推断/自动完成对模板类中的 std::array 下标表达式的成员访问
- 编译期间矢量下标超出范围
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 有什么理由不扩展 std::set 以添加下标运算符吗?
- 在继承的模板类中使用下标 [] 运算符
- 对矢量来说是全新的.矢量下标超出范围
- 运算符重载多个任务的下标和赋值运算符
- 为什么函数的任何索引处的下标运算符在C++中总是返回1
- c++下标运算符到下级类向量
- C++十进制到十六进制(字符串下标超出范围)
- 创建结构体向量,表达式:向量下标超出范围
- 数组下标运算符 ([ ]) 对数组有什么作用?