我正在使用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));
}
答案 0 :(得分:1)
根据Tesseract的APIExample
,您需要在获得迭代器之前调用Recognize
方法。您可能需要为tess-two
实现此方法。
另一个场地是通过hOCR
输出。请参阅Export HOCR output for tesseract OCR in android。