0
我在我的Android应用程序中使用Tesseract(tess-two)库来进行实时文本检测。 我的代码:Tesseract的输出是完全错误和乱码
public void onPreviewFrame(byte[] data, Camera camera) {
try {
Camera.Size previewSize =camera.getParameters().getPreviewSize();
YuvImage yuvimage=new YuvImage(data, ImageFormat.NV21, previewSize.width, previewSize.height, null);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
yuvimage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 60, baos);
byte[] jdata = baos.toByteArray();
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
Bitmap bmp = BitmapFactory.decodeByteArray(jdata, 0, jdata.length);
TessBaseAPI baseApi = new TessBaseAPI();
baseAPI.init(DATA_PATH, lang);
baseAPI.setImage(bmp);
extractedText = baseAPI.getUTF8Text();
DisplayResult.setText(extractedText);
}
catch(Exception e) {
e.printStackTrace();
}
我在正方体初始化没有问题,以及设置图像。但是输出完全错误,请查看图像。文本视图显示tesseract输出(在surfaceview之上)。
我该如何解决这个问题?
欢迎来到Tesseract! ;)说实话,就是这样。您可以尝试处理图像并调整质量,尝试转换成黑白色,尝试每个PSM模式等。如果我剪切了仅提供给文本的图像,我会将文字“MADE IN CHINA”完美地显示出来,但是整个图像Tesseract无法管理。 [见这里更多的提示](https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality),但不要屏住呼吸,除非你可以裁剪该图像。 – samiles
您需要预先处理图像以减少不均匀照明。 – rmtheis