JackRyannn Blog
  • /home
  • /archive
  • /tags
  • /about
  • /RSS

基于android的图像、文字识别|tess-two导入android studio

20 Nov 2016
  • Andriod

关于毕设

  没想到这么快就要做毕设了,毕设也没有想象中的那么难,好像跟平常的一次结课论文一样。 这次毕设要做的是三部分内容:

1.将拍照,获取图片,上传图片。
2.二维码扫描
3.文字识别

  前两部分没有什么难度,主要就是文字识别这部分了。
  毕设中对速度和准确度有一定要求,对网络反馈也有时间的要求,所以我也不知道文字识别这部分是放到手机端进行好,还是上传图片在服务器处理好,不过我只负责终端这部分,所以我就在手机这处理了。

文字识别

  文字识别其实并不需要具体做算法这方面,只要把图片放到ocr工具里就可以了。ocr(optical character recognition|光学字符识别)。我用到的工具是tess-two,它是tesseract-android-tools的一个分支,它整合了android 的api和tesseract OCR 和 一些图像处理库相关的build文件。   具体可以查看它的github:tess-two。
  然而在它的github介绍里只有如何导入eclipse,而没有如何导入android studio,如果按普通的方式导入出现了各种各样的错误,我用了将近一天的时间就为了导入这个库。

注意!

这是导入eclipse的步骤,Android Studio往下拉

首先你要clone这个库,然后你要有以下三步:

  1. ndk-build
  2. android update project –path .
  3. ant release

为此,你要安装ndk,android studio安装ndk特别简单,在file -> project structure ->SDK location 里就有ndk的自动下载,我已经下载好了,所以只显示了ndk的路径。

image

然后你要把android sdk的tools加入到环境变量,mac的终端的环境变量添加办法网上有很多,但是都不太方便,我写一下我的方法。
打开终端,输入vim .bash_profile,如果不是用户家目录,可以用cd ~返回至该目录。

image

然后回车进入vim编辑器

image

  按照export那一串的格式添加好,按esc退出编辑,按shift+ :再输入wq保存并退出。
最后一步,安装ant,详见教程。
完成三步后,把tess—two文件夹当作library库导入eclipse即可。

Android Studio如何导入TESS-TWO

  我翻了好多文章,google了大半天,才找到一个可行的办法。这篇文章是十月三号发布的。 网站链接:Android Advance Blog
英文一般,随便翻译一下:

  Tesseract是现在可用的最准确的OCR开源库,结合了Leptonic(一个类似OpenCV的数字图像处理库),它可以读取广泛的图像格式,并且将其转换成超过六十种语言的文字。在1995年UNLV准确性测试中位列前三,在1995年和2006年之间,它并没有什么突破性进展,直到被谷歌管理,有了大幅度优化,现在遵循 Apache License 2.0 协议。

具体步骤:
1.清空你的android studio,删除eclipse(不会有人再使用它了),保持什么都没安装的状态和最新的工具,否则不要抱怨当你编译时遇到什么奇怪的问题。
我会尽力让教程的程序运行在新的版本里,在我写这篇文章的时候,我用的是Android Studio 1.4 和 android-ndk-r10e,jdk 1.8.0-45.注:我的版本是Android Studio 1.5 ,jdk1.7.0_79,ndk是andriod studio自动下载的,叫ndk-bundle,版本号不知道。。而且项目我并没有清空,这一步不是必须的。
2.下载安装jdk、jre、添加到环境变量,ndk安装巴拉巴拉…… (ndk也要添加环境变量) 然后要把你下载的tess-two用ndk来build一下。
3.创建一个“new world”的android studio工程,编译它,确保能够运行。注:老外好细致~
4.创建一个叫libraries的文件夹,举个例子,你的工程叫做FirstProject,你要创建FirstProject/libraries文件夹,现在把你已经ndk-build的tess-two文件夹放进这个libraries文件夹,然后创建一个build.gradle文件放到tess-two文件夹里,(注:你可以复制别的module里的build.gradle),注意,这是最难的部分,你的gradle版本、build版本可能会更高,你要重写它和你的版本保持一致,这里提供一个build.gradle的模版:

    buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
    }  

    apply plugin: 'android-library'  
	android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
    }

    sourceSets.main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        res.srcDirs = ['res']
        jniLibs.srcDirs = ['libs']
    }
	}  
	

  compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion这些都和项目保持统一就行了。
  然后在工程的settings.gradle文件里添加include ':libraries:tess-two'
5.(注,其实到这一步重新编译一下没有错误就成功了,接下来他导入了一个例子,然而这个例子时间有点久了,我们可以直接自己使用,所以这一步不解释了。)

我会把我的工程上传到github,点击此处跳转。

  

  

最近文章

  • 美团日报
  • 美团日报
  • 美团日报
  • 美团日报
  • 美团日报

标签

  • Android
  • 服务器
  • 个人日记
  • Java
  • Andriod
  • 算法
  • Gaker
  • 转载
  • 技术博客

JackRyannn © 2015

Follow me
  • Github