【问题标题】:Microblink recognizer set up RegexParserSettingsMicroblink 识别器设置 RegexParserSettings
【发布时间】:2017-08-29 07:31:31
【问题描述】:

我正在尝试使用Recognizer 和片段内的RegerParserSettings 扫描从资源中获取的图像。 问题是通过回调onScanningDone 获得的BaseRecognitionResult 始终为null。 我尝试使用MRTDRecognizer 设置RecognitionSettings 并且工作正常,所以我认为该库已正确集成.这是我正在使用的源代码:

@Override
public void onAttach(Context context) {
    ...

    try {
        mRecognizer = Recognizer.getSingletonInstance();
        mRecognizer.setLicenseKey(context, LICENSE_KEY);
    } catch (FeatureNotSupportedException | InvalidLicenceKeyException e) {
        Log.d(TAG, e.getMessage());
    }
    buildRecognitionSettings();
    mRecognizer.initialize(context, mRecognitionSettings, new DirectApiErrorListener() {
        @Override
        public void onRecognizerError(Throwable t) {
            //Handle exception

        }
    });
}

private void buildRecognitionSettings() {
        mRecognitionSettings = new RecognitionSettings();
        mRecognitionSettings.setRecognizerSettingsArray(setupSettingsArray());
}

private RecognizerSettings[] setupSettingsArray() {
        RegexParserSettings regexParserSettings = new RegexParserSettings("[A-Z0-9]{17}");
        BlinkOCRRecognizerSettings sett = new BlinkOCRRecognizerSettings();
        sett.addParser("myRegexParser", regexParserSettings);
        return new RecognizerSettings[] { sett };
}

我像这样扫描图像:

mRecognizer.recognizeBitmap(bitmap, Orientation.ORIENTATION_PORTRAIT, FragMicoblink.this);

这是片段中处理的回调

@Override
public void onScanningDone(RecognitionResults results) {
    BaseRecognitionResult[] dataArray = results.getRecognitionResults();

    //dataArray is null

    for(BaseRecognitionResult baseResult : dataArray) {
        if (baseResult instanceof BlinkOCRRecognitionResult) {
            BlinkOCRRecognitionResult result = (BlinkOCRRecognitionResult) baseResult;
            if (result.isValid() && !result.isEmpty()) {
                String parsedAmount = result.getParsedResult("myRegexParser");
                if (parsedAmount != null && !parsedAmount.isEmpty()) {
                    Log.d(TAG, "Result: " + parsedAmount);
                }
            }
        }
    }
}`

提前致谢!

【问题讨论】:

    标签: android fragment ocr microblink blinkid


    【解决方案1】:

    你好螺旋。

    您的代码和SegmentScanActivity 之间的区别在于您的代码使用DirectAPI,它只能处理您发送进行处理的单个位图图像,而SegmentScanActivity 处理从相机到达的相机帧。这样做的同时,它可以利用时间冗余信息来提高 OCR 质量,即它结合来自多个视频帧的连续 OCR 结果以获得更好质量的 OCR 结果。

    此功能无法通过DirectAPI 使用 - 您需要使用SegmentScanActivity,或通过我们的camera management 自定义扫描活动。

    您还可以在此处了解更多信息: https://github.com/BlinkID/blinkid-android/issues/54

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 2018-11-05
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-09
      • 2016-02-09
      相关资源
      最近更新 更多