Android OCR工具之Tess-Two的使用

OCR is 什么东东?

ocr是Optical Character Recognition(光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

上面一段描述来源于某广告度


什么叫Tesseract?

算了,这不是重点,我提供了一个学习什么是Tesseract的平台,需要的自己去看,点击我跳转

Tesseract的github地址:https://github.com/tesseract-ocr/tesseract

tess-two

Tesseract是使用C++实现的,在Android上使用有一丢丢的麻烦,tess-two就是我们非常喜欢的东西了,它封装了Java API,可以在Android平台上直接调用,是不是开心到飞呢。

tess-two的github地址:https://github.com/rmtheis/tess-two

tess-two的使用

这里我们以Android Studio开发工具为主。

Android版本要求,最低2.3

在app的build.gradle里面添加

dependencies {

    implementation 'com.rmtheis:tess-two:9.1.0'

}

识别文字,我们还需要数据包

数据包下载地址:https://github.com/tesseract-ocr/tessdata

我们使用chi_sim.traineddata数据包,根据自己的需求下载对应的数据包。

数据包下载下来放到assets文件夹下


val baseApi = TessBaseAPI()

baseApi.setDebug(true)

baseApi.init(path, LANGUAGE_FILE_NAME)//这里需要注意

baseApi.setImage(bitmap)

val text = baseApi.utF8Text

文字识别的关键代码就五行,是不是很简单。

文字识别过程中,比较耗时,所以建议放到子线程中。

baseApi.init在初始化中,需要两个参数

第一个参数:数据包放到存储卡中位置

第二个参数,数据包的名称

我们点击进去看看init的实现


从源码中可以看出,

1.数据包路径不能为空 

2.数据包存储位置上一级文件夹的名称必须是tessdata

3.第二个参数必须是存储在sd卡上的名称,后缀必须是.traineddata

所以,在app启动的时候,需要把assets文件夹中的数据包copy到存储卡上。

Android 6.0还要申请存储卡读写权限哦。

demo效果图


demo 地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。