首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何在tess-2中加载数字训练数据?

我如何在tess-2中加载数字训练数据?
EN

Stack Overflow用户
提问于 2018-11-01 03:13:37
回答 1查看 286关注 0票数 0

我下载了用于测试车牌号码识别的tess-two,但它与字母字符一样准确,所以我从here下载了经过训练的数字文件。问题是我找不到一种方法来加载它,我也没有找到关于它的教程,请您帮助我。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2018-11-27 15:01:27

我找到了答案,下面是java文件代码:

代码语言:javascript
运行
复制
public class TessOCR {

public static final String DATA_PATH = Environment.getExternalStorageDirectory().toString() + "/Android/data/myOcr/";
public static final String lang = "eng";
private static final String TAG = "---------> TESS_OCR";

private AssetManager assetManager;

private TessBaseAPI mTess;

public TessOCR(AssetManager assetManager) {

    Log.i(TAG, DATA_PATH);

    this.assetManager = assetManager;

    String[] paths = new String[]{DATA_PATH, DATA_PATH + "tessdata/"};

    for (String path : paths) {
        File dir = new File(path);
        if (!dir.exists()) {
            if (!dir.mkdirs()) {
                Log.v(TAG, "ERROR: Creation of directory " + path + " on sdcard failed");
                return;
            } else {
                Log.v(TAG, "Created directory " + path + " on sdcard");
            }
        }
    }

    if (!(new File(DATA_PATH + "tessdata/" + lang + ".traineddata")).exists()) {
        try {
            InputStream in = assetManager.open("tessdata/" + lang + ".traineddata");
            OutputStream out = new FileOutputStream(new File(DATA_PATH + "tessdata/", lang + ".traineddata"));

            byte[] buf = new byte[1024];
            int len;
            while ((len = in.read(buf)) != -1) {
                out.write(buf, 0, len);
            }
            in.close();
            out.close();

            Log.v(TAG, "Copied " + lang + " traineddata");
        } catch (IOException e) {
            Log.e(TAG, "Was unable to copy " + lang + " traineddata " + e.toString());
        }
    }

    mTess = new TessBaseAPI();
    mTess.setDebug(true);
    mTess.init(DATA_PATH, lang);


   }


public String getResults(Bitmap bitmap) {
    if(bitmap != null) {
        mTess.setImage(bitmap);
        String result = mTess.getUTF8Text();
        return result;
    }else{
        return "empty";
    }

}

public void onDestroy() {
    if (mTess != null)
        mTess.end();
}
}

在主活动中,您需要获取位图格式的图像,然后使用String temp = tess.getResults(imgae.jpg)将其发送到光学字符识别

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53090481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档