android ocr 图像识别之tess-two试用

简介: 不需要任何so库,也兼容6.0以上版本把tess-two添加到项目里,在app 的build.gradle里添加下面dependencies { compile 'com.rmtheis:tess-two:7.0.0'}123然后从https://github.com/tesseract-ocr/tessdata/tree/3.04.00 下载项目需要的训练语言数据,下载后复制,到assets/tessdata目录下,之后把它复制到SD卡。

不需要任何so库,也兼容6.0以上版本

把tess-two添加到项目里,在app 的build.gradle里添加下面

dependencies {
    compile 'com.rmtheis:tess-two:7.0.0'
}
  • 1
  • 2
  • 3

然后从https://github.com/tesseract-ocr/tessdata/tree/3.04.00 下载项目需要的训练语言数据,下载后复制,到assets/tessdata目录下,之后把它复制到SD卡。

  /**
     * 初始化ocr识别需要用到的训练数据
     */
private void initOcr() {
        datapath = getFilesDir() + "/tesseract/";
        checkFile(new File(datapath + "tessdata/"), "chi_sim");
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
/**
     * @param dir
     * @param language chi_sim eng
     */
    private void checkFile(File dir, String language) {
        //如果目前不存在则创建方面,然后在判断训练数据文件是否存在
        if (!dir.exists() && dir.mkdirs()) {
            copyFiles(lag);
        }
        if (dir.exists()) {
            String datafilepath = datapath + "/tessdata/" + language + ".traineddata";
            File datafile = new File(datafilepath);
            if (!datafile.exists()) {
                copyFiles(lag);
            }
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
/**
 把训练数据放到手机内存
 * @param language "chi_sim" ,"eng"
 */
    private void copyFiles(String language) {
        try {
            String filepath = datapath + "/tessdata/" + language + ".traineddata";
            AssetManager assetManager = getAssets();
            InputStream instream = assetManager.open("tessdata/" + language + ".traineddata");
            OutputStream outstream = new FileOutputStream(filepath);
            byte[] buffer = new byte[1024];
            int read;
            while ((read = instream.read(buffer)) != -1) {
                outstream.write(buffer, 0, read);
            }
            outstream.flush();
            outstream.close();
            instream.close();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

做完准备工作之后,待相机取到图片之后,调用doOcr方法即可获得识别结果,需要注意的是,该方法需要再子线程进行。

  public void doOcr(Bitmap bitmap, String language) {

        TessBaseAPI baseApi = new TessBaseAPI();
        baseApi.init(datapath, language);
        bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
        baseApi.setImage(bitmap);
        String resultTxt = baseApi.getUTF8Text();
        baseApi.clear();
        baseApi.end();
        //get resultTxt to do something
    }
相关实践学习
基于函数计算实现AI推理
本场景基于函数计算建立一个TensorFlow Serverless AI推理平台。
目录
相关文章
|
10月前
|
前端开发 JavaScript Java
贼简单的Android计时工具,老铁,还不试用起来
今天呢,给大家带来的是一个非常好用的计时工具,真的非常好用,用过之后,你会发现,延时和定时,真的从未如此简单。
|
11月前
|
安全 Java Shell
Android的热修复技术--阿里的hotfix试用
Android的热修复技术--阿里的hotfix试用
|
文字识别 Linux Apache
Android平台OCR工具之Tess-two的编译
Android平台OCR工具之Tess-two的编译
419 0
|
Web App开发 机器学习/深度学习 文字识别
[雪峰磁针石博客]免费的好用的OCR工具 人脸识别等图像识别工具
tesseract -- 推荐 Tesseract 已经有 30 年历史,开始它是惠普实验室的一款专利软件,然后在 2005 年开源,自 2006 年后由 Google 赞助进行后续的开发和维护。 在 1995 年 Tesseract 曾是世界前三的 OCR 引擎,而且在现在的免费 OCR 引擎中,其识别精度也仍然是出类拔萃的。
|
文字识别 Android开发 C++
Tesseract OCR集成Android Studio实现OCR识别
Tesseract OCR集成Android Studio实现OCR识别 介绍 Tesseract OCR谷歌开源的OCR识别引擎,支持多国文字包括中文简体与繁体。最新的版本是3.x。
2071 0
|
文字识别 Android开发
Android ocr识别文字介绍(文字识别)
       最近在做身份证号码识别,在网上搜索的一番后发现目前开源的OCR中tesseract-ocr算是比较强大的了,它由HP于1985年到1995年间开发,后来由google直接负责,经过谷歌进一步开发后,目前的tesseract-ocr有了显著的改进。
3448 0
|
9天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。