Android OCR:无法解决getBoundingBox的错误

多诺万·谭(Donovan Tan)

我是android开发的学生和初学者,需要为我的学校项目的联系人管理应用程序执行android OCR功能。这是用于将图像从名片转换为文本。

我在许多论坛上搜索了有关此信息,并找到了一些很好的例子。

目前,我在网上找到了一个开源代码,该代码不需要设置ndk和环境变量等即可进行设置。但是,当我将其实现为eclipse(juno)时,出现了一个小错误,其中我不确定如何解决。

我已经搜索了很长时间没有任何结果。因此,决定在这里询问。以下是错误代码。

    final class OcrRecognizeAsyncTask extends AsyncTask<Void, Void, Boolean> {

  //  private static final boolean PERFORM_FISHER_THRESHOLDING = false; 
  //  private static final boolean PERFORM_OTSU_THRESHOLDING = false; 
  //  private static final boolean PERFORM_SOBEL_THRESHOLDING = false; 

  private CaptureActivity activity;
  private TessBaseAPI baseApi;
  private byte[] data;
  private int width;
  private int height;
  private OcrResult ocrResult;
  private long timeRequired;

  OcrRecognizeAsyncTask(CaptureActivity activity, TessBaseAPI baseApi, byte[] data, int width, int height) {
    this.activity = activity;
    this.baseApi = baseApi;
    this.data = data;
    this.width = width;
    this.height = height;
  }

  @Override
  protected Boolean doInBackground(Void... arg0) {
    long start = System.currentTimeMillis();
    Bitmap bitmap = activity.getCameraManager().buildLuminanceSource(data, width, height).renderCroppedGreyscaleBitmap();
    String textResult;

    //      if (PERFORM_FISHER_THRESHOLDING) {
    //        Pix thresholdedImage = Thresholder.fisherAdaptiveThreshold(ReadFile.readBitmap(bitmap), 48, 48, 0.1F, 2.5F);
    //        Log.e("OcrRecognizeAsyncTask", "thresholding completed. converting to bmp. size:" + bitmap.getWidth() + "x" + bitmap.getHeight());
    //        bitmap = WriteFile.writeBitmap(thresholdedImage);
    //      }
    //      if (PERFORM_OTSU_THRESHOLDING) {
    //        Pix thresholdedImage = Binarize.otsuAdaptiveThreshold(ReadFile.readBitmap(bitmap), 48, 48, 9, 9, 0.1F);
    //        Log.e("OcrRecognizeAsyncTask", "thresholding completed. converting to bmp. size:" + bitmap.getWidth() + "x" + bitmap.getHeight());
    //        bitmap = WriteFile.writeBitmap(thresholdedImage);
    //      }
    //      if (PERFORM_SOBEL_THRESHOLDING) {
    //        Pix thresholdedImage = Thresholder.sobelEdgeThreshold(ReadFile.readBitmap(bitmap), 64);
    //        Log.e("OcrRecognizeAsyncTask", "thresholding completed. converting to bmp. size:" + bitmap.getWidth() + "x" + bitmap.getHeight());
    //        bitmap = WriteFile.writeBitmap(thresholdedImage);
    //      }

    try {     
      baseApi.setImage(ReadFile.readBitmap(bitmap));
      textResult = baseApi.getUTF8Text();
      timeRequired = System.currentTimeMillis() - start;

      // Check for failure to recognize text
      if (textResult == null || textResult.equals("")) {
        return false;
      }
      ocrResult = new OcrResult();
      ocrResult.setWordConfidences(baseApi.wordConfidences());
      ocrResult.setMeanConfidence( baseApi.meanConfidence());
      ocrResult.setRegionBoundingBoxes(baseApi.getRegions().getBoxRects());
      ocrResult.setTextlineBoundingBoxes(baseApi.getTextlines().getBoxRects());
      ocrResult.setWordBoundingBoxes(baseApi.getWords().getBoxRects());
      ocrResult.setStripBoundingBoxes(baseApi.getStrips().getBoxRects());

      // Iterate through the results.
      final ResultIterator iterator = baseApi.getResultIterator();
      int[] lastBoundingBox;
      ArrayList<Rect> charBoxes = new ArrayList<Rect>();
      iterator.begin();
      do {
          lastBoundingBox =iterator.getBoundingBox(PageIteratorLevel.RIL_SYMBOL);
          Rect lastRectBox = new Rect(lastBoundingBox[0], lastBoundingBox[1],
                  lastBoundingBox[2], lastBoundingBox[3]);
          charBoxes.add(lastRectBox);
      } while (iterator.next(PageIteratorLevel.RIL_SYMBOL));
      iterator.delete();
      ocrResult.setCharacterBoundingBoxes(charBoxes);

    } catch (RuntimeException e) {
      Log.e("OcrRecognizeAsyncTask", "Caught RuntimeException in request to Tesseract. Setting state to CONTINUOUS_STOPPED.");
      e.printStackTrace();
      try {
        baseApi.clear();
        activity.stopHandler();
      } catch (NullPointerException e1) {
        // Continue
      }
      return false;
    }
    timeRequired = System.currentTimeMillis() - start;
    ocrResult.setBitmap(bitmap);
    ocrResult.setText(textResult);
    ocrResult.setRecognitionTimeRequired(timeRequired);
    return true;
  }

  @Override
  protected void onPostExecute(Boolean result) {
    super.onPostExecute(result);

    Handler handler = activity.getHandler();
    if (handler != null) {
      // Send results for single-shot mode recognition.
      if (result) {
        Message message = Message.obtain(handler, R.id.ocr_decode_succeeded, ocrResult);
        message.sendToTarget();
      } else {
        Message message = Message.obtain(handler, R.id.ocr_decode_failed, ocrResult);
        message.sendToTarget();
      }
      activity.getProgressDialog().dismiss();
    }
    if (baseApi != null) {
      baseApi.clear();
    }
  }
}

该错误驻留在do和while循环中:

do {
          lastBoundingBox = iterator.***getBoundingBox***(PageIteratorLevel.RIL_SYMBOL);
          Rect lastRectBox = new Rect(lastBoundingBox[0], lastBoundingBox[1],
                  lastBoundingBox[2], lastBoundingBox[3]);
          charBoxes.add(lastRectBox);
      } while (iterator.next(PageIteratorLevel.RIL_SYMBOL));
      iterator.***delete***();
      ocrResult.setCharacterBoundingBoxes(charBoxes);

在以上以粗体显示的代码中,getBoundingBox和delete具有以下错误:

“类型ResultIterator的方法getBoundingBox(int)尚未定义”

“类型ResultIterator的方法getBoundingBox(int)尚未定义”

我尝试了几种方法,但无法解决。如果对此有任何解决方案,请帮助我,非常感谢。

体裁

@SebastianRoth是正确的:您正在使用的预编译库已过时。我建议安装NDK并遵循OCR引擎构建说明这将重新编译库,包括其getBoundingBox方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法解决目标“ android-18”错误

来自分类Dev

Android Studio无法解决错误setOnClickListener

来自分类Dev

无法解决Eclips错误com.google.android.gms.ads

来自分类Dev

活动识别的ActivityRecognitionClient无法解决,Android中的错误

来自分类Dev

无法解决Android错误:任务':app:compileDebugJavaWithJavac'的执行失败

来自分类Dev

无法解决Android Studio中的符号“菜单”错误

来自分类Dev

Android Studio构建错误无法解决所有依赖关系

来自分类Dev

活动识别的ActivityRecognitionClient无法解决,Android中的错误

来自分类Dev

无法解决Android Studio中的符号“ R”错误

来自分类Dev

无法解决Eclips错误com.google.android.gms.ads

来自分类Dev

如何修复 Android Studio 1.4 上的错误“无法解决:...”

来自分类Dev

如何解决此错误:无法解决:com.android.support:appcompat-v7:26.1.0

来自分类Dev

Android OCR:不满意的链接错误

来自分类Dev

Android OCR:AndrOCR源代码错误

来自分类Dev

无法解决:Android Studio 中的 com.android.support:design:26.2.0 错误

来自分类Dev

无法解决Intent Service Android

来自分类Dev

NotificationManagerCompat无法解决-Android Wear

来自分类Dev

Android NetworkOnMainThreadException似乎无法解决

来自分类Dev

Android gradle 库“无法解决”

来自分类Dev

无法解决 Firestore Android Studio

来自分类Dev

无法解决:Android Studio 1.4中的错误:(23,17)junit:junit:4.12

来自分类Dev

typeanumber中的错误-无法解决android.support.v4.app.fragment

来自分类Dev

建立Android NDK库无法解决“未定义的引用”错误

来自分类Dev

我该如何解决android.app.Application无法转换为错误

来自分类Dev

是什么导致渲染问题:无法解决Android Studio 1.1.0中的资源错误?

来自分类Dev

错误:无法解决:com.google.android.gms:play-services-measurement:9.2.0

来自分类Dev

Android Studio如何解决无法创建类文件错误?

来自分类Dev

Texture.setEnforcePotImages(false); 无法解决Android Studio下的虫害错误

来自分类Dev

错误:无法解决:Android-Iconics:library-core:未指定

Related 相关文章

  1. 1

    无法解决目标“ android-18”错误

  2. 2

    Android Studio无法解决错误setOnClickListener

  3. 3

    无法解决Eclips错误com.google.android.gms.ads

  4. 4

    活动识别的ActivityRecognitionClient无法解决,Android中的错误

  5. 5

    无法解决Android错误:任务':app:compileDebugJavaWithJavac'的执行失败

  6. 6

    无法解决Android Studio中的符号“菜单”错误

  7. 7

    Android Studio构建错误无法解决所有依赖关系

  8. 8

    活动识别的ActivityRecognitionClient无法解决,Android中的错误

  9. 9

    无法解决Android Studio中的符号“ R”错误

  10. 10

    无法解决Eclips错误com.google.android.gms.ads

  11. 11

    如何修复 Android Studio 1.4 上的错误“无法解决:...”

  12. 12

    如何解决此错误:无法解决:com.android.support:appcompat-v7:26.1.0

  13. 13

    Android OCR:不满意的链接错误

  14. 14

    Android OCR:AndrOCR源代码错误

  15. 15

    无法解决:Android Studio 中的 com.android.support:design:26.2.0 错误

  16. 16

    无法解决Intent Service Android

  17. 17

    NotificationManagerCompat无法解决-Android Wear

  18. 18

    Android NetworkOnMainThreadException似乎无法解决

  19. 19

    Android gradle 库“无法解决”

  20. 20

    无法解决 Firestore Android Studio

  21. 21

    无法解决:Android Studio 1.4中的错误:(23,17)junit:junit:4.12

  22. 22

    typeanumber中的错误-无法解决android.support.v4.app.fragment

  23. 23

    建立Android NDK库无法解决“未定义的引用”错误

  24. 24

    我该如何解决android.app.Application无法转换为错误

  25. 25

    是什么导致渲染问题:无法解决Android Studio 1.1.0中的资源错误?

  26. 26

    错误:无法解决:com.google.android.gms:play-services-measurement:9.2.0

  27. 27

    Android Studio如何解决无法创建类文件错误?

  28. 28

    Texture.setEnforcePotImages(false); 无法解决Android Studio下的虫害错误

  29. 29

    错误:无法解决:Android-Iconics:library-core:未指定

热门标签

归档