我正在使用tess-two库在我的android应用程序中实现OCR。我使用的代码是:

BitmapFactory.Options options = new BitmapFactory.Options();
            options.inSampleSize = 4;

            Bitmap bitmap = BitmapFactory.decodeFile(filePath, options);
            bitmap = Bitmap.createBitmap(bitmap, 0, 0, mPreview.getWidth(), mPreview.getHeight()/2);

            bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

            TessBaseAPI baseApi = new TessBaseAPI();
            //eng.traineddata
             baseApi.init(Environment.getExternalStorageDirectory().toString(), "eng", TessBaseAPI.OEM_TESSERACT_CUBE_COMBINED);
             baseApi.setImage(bitmap);
             String recognizedText = baseApi.getUTF8Text();

             Log.d("Recognized Text", recognizedText);

             baseApi.end();


这是我扫描后得到的字符串-

'r8''_, IIFP"" >- .
_ ~11 r-- _ _
3} .
' at H k
CO' f
ty, . s
_ 1 V Fre 111'};
_ _ 011g
I .1. ' Q
h.


这一点都不正确。我不明白我在做什么错。我已经下载了英语的语言数据。关于SO的类似问题很少,但没有任何帮助。我的代码似乎是正确的。自两天以来,我一直在为此苦苦挣扎。任何帮助将不胜感激。

编辑:

扫描的图像:

最佳答案

因此,问题是保存的图像旋转了90度,这就是为什么代码无法正确识别文本的原因。将位图旋转-90度可以解决问题。现在可以正确识别文本。

关于android - 使用tess-two库的OCR返回不正确的文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26033072/

10-11 22:14
查看更多