Xamarin.Android Tesseract非常慢而且非常错误

时间:2018-01-10 15:25:57

标签: android xamarin.android tesseract

我正在尝试在Xamarin.Android上创建一个应用程序,它从相机或设备本身获取图像,在ImageView中显示图像,然后在TextView中返回图像中的文本。我正在使用Tesseract OCR来解决这个问题,并且在获得干净的结果方面遇到了问题。

protected override void OnActivityResult(int requestCode, [GeneratedEnum] Android.App.Result resultCode, Intent data)
    {
        //base.OnActivityResult(requestCode, resultCode, data);
        if (requestCode == 0)
        {
            Intent mediaScanIntent = new Intent(Intent.ActionMediaScannerScanFile);
            Uri contentUri = Uri.FromFile(App._file);
            mediaScanIntent.SetData(contentUri);
            SendBroadcast(mediaScanIntent);

            int height = Resources.DisplayMetrics.HeightPixels;
            int width = imageView.Height;
            App.bitmap = App._file.Path.LoadAndResizeBitmap(width, height);

            if (App.bitmap != null)
            {
                imageView.SetImageBitmap(App.bitmap);
                processImage(App.bitmap);
                App.bitmap = null;
            }
            GC.Collect();
        }
        if (requestCode == 1)
        {
            if (resultCode == Android.App.Result.Ok)
            {
                int height = Resources.DisplayMetrics.HeightPixels;
                int width = imageView.Height;
                var uri = data.Data;
                var path = GetPathToImage(uri);
                App.bitmap = BitmapHelpers.LoadAndResizeBitmap(path, width, height);
                if (App.bitmap != null)
                {
                    imageView.SetImageBitmap(App.bitmap);
                    processImage(App.bitmap);
                    App.bitmap = null;
                }
                GC.Collect();
            }
        }
    }

这是OnActivityResult方法,用于在相机拍摄照片或从照片库中选择照片后。 LoadAndResizeBitmap方法只获取图像并调整其大小并将其定位以将其放置在ImageView中。 processImage方法是由api:

处理图像的函数
private void processImage(Bitmap image)
    {
        String result = null;
        api.SetImage(image);
        result = api.UTF8Text;
        textView.Text = result;
    }

当我尝试运行应用程序时,API需要花费3-5分钟来处理图像,而不是返回文本,而是返回大量符号和字母,这些符号和字母在图像的任何位置都不可见。任何人对我如何解决这个问题都有任何想法吗?

0 个答案:

没有答案