【问题标题】:Visual Studio cordova project not give the same results with cordova cli project. Why?Visual Studio cordova 项目与 cordova cli 项目的结果不同。为什么?
【发布时间】:2015-06-03 13:17:44
【问题描述】:

我正在尝试在 Visual Studio(适用于 Android)上将 Tesseract OCR 与 cordova 一起使用。使用 Cordova CLI,创建一个项目,然后我正在运行。我得到准确的数据没有任何问题。但是当我使用 Visual Studio 执行相同的过程时,包含两行或多行文本不会读取。返回荒谬的值(例如:mmm->uuu mmjmmm) 我只能读取一行数据。

如何解决这个问题。这是我的代码

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

    Bitmap bitmap = BitmapFactory.decodeFile(image, options);
    try {
        ExifInterface exif = new ExifInterface(imagePath);
        int exifOrientation = exif.getAttributeInt(
                ExifInterface.TAG_ORIENTATION,
                ExifInterface.ORIENTATION_NORMAL);
        int rotate = 0;

        switch (exifOrientation) {
        case ExifInterface.ORIENTATION_ROTATE_90:
            rotate = 90;
            break;
        case ExifInterface.ORIENTATION_ROTATE_180:
            rotate = 180;
            break;
        case ExifInterface.ORIENTATION_ROTATE_270:
            rotate = 270;
            break;
        }
        if (rotate != 0) {

            // Getting width & height of the given image.
            int w = bitmap.getWidth();
            int h = bitmap.getHeight();

            // Setting pre rotate
            Matrix mtx = new Matrix();
            mtx.preRotate(rotate);

            // Rotating Bitmap
            bitmap = Bitmap.createBitmap(bitmap, 0, 0, w, h, mtx, false);
        }
        // Convert to ARGB_8888, required by tess
        bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

    } catch (IOException e) {
    }
    TessBaseAPI baseApi = new TessBaseAPI();
    baseApi.setDebug(true);
    baseApi.setPageSegMode(1);
    baseApi.init(DATA_PATH, lang);
    baseApi.setImage(bitmap);

    String recognizedText = "";
    recognizedText = baseApi.getUTF8Text();
    int duration = Toast.LENGTH_SHORT;
    Toast.makeText(this.cordova.getActivity().getApplicationContext(),recognizedText, duration).show();
    baseApi.end();
    recognizedText = recognizedText.trim();
    return recognizedText;

我用过这张照片(带相机)

http://imgur.com/xfPp2n2

【问题讨论】:

  • 是的,我在两个平台都使用相同的图像。例如这个。 codeproject.com/KB/recipes/OCR-Chain-Code/image012.jpg
  • 我可以从图片中挑选到手机,也可以用相机来做。情况是,单行文本正确显示,但当两行或多行时,Visual Studio 中的项目显示无意义的值。我把代码加起来。
  • 如果您希望人们能够复制您的结果,您应该发布 一个 代表该问题的图像、该图像在两个平台上的结果以及您的预期结果.
  • 你有没有尝试过其他的分页方式?
  • 是的,我试过了。继续同样的问题。我添加了上面使用的图片。但是我不能添加其他人(我的声誉还不够)。结果如下; i.stack.imgur.com/VrgeG.pngi.stack.imgur.com/iHO2b.png

标签: android cordova ocr tesseract visual-studio-cordova


【解决方案1】:

如果没有代码示例,我无法确定,但是当您通过 CLI 创建新项目时,您可能会使用不同的版本号创建项目。

$ cordova create myProject

... 将使用可用的最新版本 Cordova 创建一个项目。在撰写本文时,这是 5.0 版

但是,Visual Studio 2015 RC 默认会创建一个 Cordova 4.3 项目。要更改版本号,请打开 config.xml 并将 Cordova CLI 版本号更改为“平台”选项卡下的“5.0”。

您还可以通过将 taco.json 添加到项目根目录来打开由 Visual Studio 中的 CLI 创建的项目。该文件只需要包含一个 json 键/值对以及您正在使用的 CLI 的正确版本:

{
"cordova-cli": "5.0.0"
}

您也可以选择在命令行中使用 Cordova 4.3.0 来安装:

npm install -g cordova@4.3.0

5.0.0 是对 Cordova 的重大修订,因此有许多变化。

【讨论】:

  • 我的视觉工作室没有平台选项卡。我在互联网上看到了,但由于某种原因我没有看到。
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 1970-01-01
  • 2015-07-15
  • 2019-03-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-15
  • 1970-01-01
相关资源
最近更新 更多