【问题标题】:blacklist and whitelist in tesseract ANDROIDtesseract ANDROID中的黑名单和白名单
【发布时间】:2015-01-03 04:16:56
【问题描述】:

我正在开发一个 android 应用程序,该应用程序通过手机的相机或从图库中为卡拍照,为手机充值。我为此目的使用了 tesseract 库,仅使用黑名单和白名单获取数字。它没有按预期工作

我使用的图片只包含这两行:

PIN 码

41722757649786

充值活动开始前的结果是:

718 200

41722757649786

我只想识别没有字母且不使用裁剪器的数字..

  public void initTess(){   

    if (mBaseApi != null)
        mBaseApi.end();     

    mBaseApi = new TessBaseAPI();
    mBaseApi.setDebug(false);

    mBaseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_OSD_ONLY);
    mBaseApi.init(mDataDir + File.separator,"eng");
    mBaseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST,"0123456789");
    mBaseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmopqrstuvwxyz");


}

【问题讨论】:

  • 感谢您的快速回复.. 是的,问题是文本“PIN 码”被识别为“718 200”.. 我根本不想显示这些字母.. 这可能吗?

标签: android ocr tesseract whitelist blacklist


【解决方案1】:

必须在初始化之前设置"tessedit_char_whitelist" 变量,如常见问题解答中所述:https://code.google.com/p/tesseract-ocr/wiki/FAQ#How_do_I_recognize_only_digits? 这很可能也适用于黑名单。

因此,从这里更改您的代码:

mBaseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_OSD_ONLY);
mBaseApi.init(mDataDir + File.separator,"eng");
mBaseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST,"0123456789");
mBaseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmopqrstuvwxyz");

到这里:

mBaseApi.setPageSegMode(TessBaseAPI.PageSegMode.PSM_OSD_ONLY);
mBaseApi.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST,"0123456789");
mBaseApi.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmopqrstuvwxyz");
mBaseApi.init(mDataDir + File.separator,"eng");

应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 2012-04-22
    • 1970-01-01
    • 2021-05-06
    • 2020-04-14
    • 2011-05-06
    相关资源
    最近更新 更多