2016-07-28 2 views
0

123、...、nなどの文字を認識できました。OCR:指数検出、スーパー/サブスクリプト(C++)

私は、特定の数字が別の数字の指数であることを検出する方法を考えるのに困っています。

たとえば、私のプログラムthis pictureを実行した後には、(5/6)^2を返すべきですが、私はこの数字が指数であると言う方法や考え方を想像することはできません。

提案がありますか?私はopenCVをC++で使用しています。

答えて

0

文字を検出すると、それぞれの境界ボックスが表示されます。おおよその文字の大きさを知っているような、いくつかの仮定があります。それをSと呼んでください。これは、検出されたすべての境界ボックスのサイズから推測できます。あなたは次のことを試みることができるこれに基づき

  1. 検出された各バウンディングボックス(D_bbox)のために、この検索で​​は2 * S
  2. 、±バウンディングボックスの中心からの検索範囲を定義します探索領域内にある各中心について、他の検出された文字
    1. から他の境界ボックス中心(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

数は指数の左に常にあり、それは、中心が常にオンに低いです:

役立つかもしれないいくつかの他のヒューリスティック

ページの指数部の中心よりも大きい。

括弧を検出しようとしません。指数を書くために使用しない場合があるからです。