AndroidでTesseractを使用する その3 認識範囲を取得する

getUTF8Text関数を実行した後に、認識結果の詳細データを取得することができます。
今回は、どの範囲を文字として認識したかを取得します。

tess-twoでは、始めに文字が含まれていそうな行を認識し、その次に、その行にどのような語が含まれているかを認識しているようです。

文字の含まれていそうな行の範囲、もしくは、文字が含まれていそうな語の範囲を取得するには、getTextlines()関数、もしくは、getWords()関数を用います。ただし、これらの関数の戻り値はPixa型というtess-two独自のクラスなので、getBoxRects()関数によって、Rectのリストにするほうが便利かもしれません。

これによって取り出された範囲を、drawRect関数などを使用して視覚化したものが次の結果です。

131218

線で囲まれているのが行の範囲、背景色の有る囲みが語の範囲です。このように表示すれば、どこが認識されたか分かりやすいですね。さて、範囲は分かりましたので、次は、その範囲にどの文字が含まれているかを、ちゃんと取得する方法を模索したいと思います。