2017-05-08 151 views
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之上)。

我该如何解决这个问题?

+1

欢迎来到Tesseract! ;)说实话,就是这样。您可以尝试处理图像并调整质量,尝试转换成黑白色,尝试每个PSM模式等。如果我剪切了仅提供给文本的图像,我会将文字“MADE IN CHINA”完美地显示出来,但是整个图像Tesseract无法管理。 [见这里更多的提示](https://github.com/tesseract-ocr/tesseract/wiki/ImproveQuality),但不要屏住呼吸,除非你可以裁剪该图像。 – samiles

+0

您需要预先处理图像以减少不均匀照明。 – rmtheis

回答

1

几件事情,可能与您的输出的优化帮助:

  • 图像剪切所需的文本区域处理输出
  • 排除之前标点和其他字符的文本处理