先把tess-two的Github链接挂上:https://github.com/rmtheis/tess-two,先说明一下,这个项目已经停止更新了。(Github有时会抽风上不去,下载不了也可以直接找我要)
【资料图】
按照用法说明,先在build.gradle中添加依赖
implementation 'com.rmtheis:tess-two:9.1.0'
在用法的上方有一个预先准备的说明,需要Android版本2.3及以上,并且需要去下载一个3.04的训练数据文件(注意不要下载错了,不然程序会出错),下载链接是:https://github.com/tesseract-ocr/tessdata/tree/3.04.00
可以全部都下载,我尝试了单独进入想要的文件想点下载,却没有反应。下载后解压放着备用。训练数据文件是以.traineddata作为后缀名,以某语言英文的前三位字母命名的,英文对应的是eng.traineddata,中文(简体)是chi_sim.traineddata,中文(繁体)则是chi_tra.traineddata。
然后是如何在项目中实现,这里可以去参考一下tess-two推荐的分支项目(相关代码演示请往下看):https://github.com/adaptech-cz/Tesseract4Android
这两个的用法是差不多的,我本来是想用它这个比较新的,但是在使用他们提供的maven路径后gradle同步非常慢,而且这好像是必须加的,如果有梯子,想试试这个新的,要注意训练数据要去下载4.0的,在文档中也有说明并给出网址。
题外话了,接着看文档(后面有Kotlin代码,看不下去可以跳过):
想吐槽一下,我逛了很多的文章都说要把下载的训练数据文件放到Assets文件夹下,然后......然后就没有然后了,我在这里卡了很久。
Assets目录默认是没有的,需要自己创建,注意是与res文件夹同级的:
你只需要将你需要的训练数据文件复制到此文件夹下即可:
在用法的第三点中有提到,你要初始化API,这里需要传入一个路径(dataPath),而你的文件是放在Assets文件夹下的,打包后是获取不到Assests文件夹的路径的,需要利用Context对象获取到Assets管理器去访问Assets文件夹下的文件,然后把训练数据文件拷贝到一个能获取到路径的位置。
考虑到两个API的方法有点不同,并且上方代码是Java代码,我用Kotlin代码简单演示一下如何去使用:
在MainActivity.kt中可以这样去使用:
因为识别过程比较耗时,推荐放到子线程中:
这个识别的功能中规中矩,需要图片尽可能清晰明了(不然可能会出现错误,甚至识别不出来)。如果是需要识别验证码,还需要对图片进行一定的处理,比如二值化(比较重要)、去除边框、噪点等等,可以去网上逛逛。
标签: