我正在android上使用tesseract,我有以下代码来提取从图像中读取的字符串和框:

TessBaseAPI baseApi = new TessBaseAPI();
baseApi.init(tess_path, "eng");
baseApi.setImage(bitmap);
String recognizedText = baseApi.getUTF8Text();
ArrayList<Rect> boxes = baseApi.getCharacters().getBoxRects();
Pixa pixa = baseApi.getCharacters();
baseApi.end();

在这里我可以看到每个字符的文本和框,但有时文本的大小与框数组的大小不同,那么就不可能在读取字符的情况下设置框。
有没有办法得到确切的盒子和它的字符?

最佳答案

使用Resultiterator而不是getCharacters()

// Iterate through the results.
final ResultIterator iterator = baseApi.getResultIterator();
String lastUTF8Text;
float lastConfidence;
int count = 0;
iterator.begin();
do {
    lastUTF8Text = iterator.getUTF8Text(PageIteratorLevel.RIL_WORD);
    lastConfidence = iterator.confidence(PageIteratorLevel.RIL_WORD);
    count++;
} while (iterator.next(PageIteratorLevel.RIL_WORD));

08-24 22:37