如何在tess-two android中获取每个单词和识别文本的边界框

时间:2014-03-23 10:31:15

标签: android tesseract

我正在使用ResultIterator从图像中获取每个单词,但是在调用iterator.begin()时我的错误。我不知道为什么。

这是我目前的代码,

//Global
ArrayList<String> words = new ArrayList<String>();

@Override
    public void onPreviewFrame(final byte[] data, Camera camera) {
        final SurfaceView surfaceView = (SurfaceView) getActivity().findViewById(R.id.cameraView);
        //get camera params for ocr
        Camera.Parameters cameraParams = _camera.getParameters();
        int width = surfaceView.getWidth();
        int height = surfaceView.getHeight();
        PixelFormat pixFormat = new PixelFormat();
        PixelFormat.getPixelFormatInfo(cameraParams.getPreviewFormat(), pixFormat);
        int bpp = pixFormat.bytesPerPixel;
        int bpl = bpp * width;

        //ocr
        ocr.setImage(data, width, height, bpp, bpl);
        ocr.setRectangle(0, 50, width, height - 50);

        // Iterate through the results.
        final ResultIterator iterator = ocr.getResultIterator();
        iterator.begin(); //crashes my app
        do {
            words.add(iterator.getUTF8Text(PageIteratorLevel.RIL_WORD));
        } while (iterator.next(PageIteratorLevel.RIL_WORD));
    }

1 个答案:

答案 0 :(得分:1)

根据Tesseract的APIExample,您需要在获得迭代器之前调用Recognize方法。您可能需要为tess-two实现此方法。

另一个场地是通过hOCR输出。请参阅Export HOCR output for tesseract OCR in android