2016-07-28 49 views
0

我已經能夠識別字符,如1,2,3,...,nOCR:指數檢測,超/下標(C++)

我一直在想辦法檢測某個數字是另一個數字的指數。

例如,在運行我的程序this picture應返回(5/6)^2,但我不能想出一個方式或一個想法來說這個數字是一個指數。

有什麼建議嗎?我在C++中使用openCV。

回答

0

當檢測到字符時,您將擁有它們各自的邊界框。有一些假設要做,例如知道字符的近似比例,我們稱之爲S - 您可以從所有檢測到的邊界框的大小推斷出這個假設。在此基礎上

你可以嘗試以下方法:

  1. 對於每個檢測到的包圍盒(D_bbox),從所述邊界框的中心限定的搜索範圍爲±2 * S
  2. 此搜索中區域中,從其他檢測到的字符中查找其他檢測到的字符012_b
    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

數總是以指數的左側,它的中心在一直較低頁面而不是指數的中心。

我不會嘗試檢測括號,因爲可能存在您不使用它們寫入指數的實例。