首页 编程设计Android 正文

OCR之tess-two使用笔记

云水 Android 2021-08-06 15:41:32 128 0 LX04OCR

OCR简介

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

Tesseract简介

Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。 现阶段的Tesseract由Google负责维护,是最好的开源OCR Engine之一,并且支持中文。

在Tesseract的主页中,我们可以下载到Tesseract的源码及语言包,常用的语言包为

  • 中文:chi-sim.traineddata

  • 英文:eng.traineddata

Tess-two的诞生

因为Tesseract使用C++实现的,在Android中不能直接使用,需要封装JavaAPI才能在Android平台中进行调用,这里我们直接使用TessTwo项目,tess-two是TesseraToolsForAndroid的一个git分支,使用简单,切集成了leptonica,在使用之前需要先从git上下载源码进行编译。

开始集成

1、添加tess-two依赖

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

2、下载所需字体库

我这里保存traineddata的路径是:xxxx/tesserart/tessdata/chi_sim.traineddata

3、初始化tess-two

    val tessBaseAPI = TessBaseAPI()
    tessBaseAPI.init("xxxx/tesserart", language)

初始化的时候,我们传入的路径只需要定位到tessdata的上级目录即可,因为其内部初始化时会根据我们传入的路径自动定位到下一级tessdata目录去寻找字体文件,内部源码如下:

    public boolean init(String datapath, String language, @OcrEngineMode int ocrEngineMode) {
        if (datapath == null)
            throw new IllegalArgumentException("Data path must not be null!");
        if (!datapath.endsWith(File.separator))
            datapath += File.separator;

        File datapathFile = new File(datapath);
        if (!datapathFile.exists())
            throw new IllegalArgumentException("Data path does not exist!");

        File tessdata = new File(datapath + "tessdata");
        if (!tessdata.exists() || !tessdata.isDirectory())
            throw new IllegalArgumentException("Data path must contain subfolder tessdata!");
    。。。。

4、识别文字 初始化成功后,我们就可以调用tessBaseApi对象去加载我们的图片,然后获取识别的结果了

版权声明

1.本站大部分下载资源收集于网络,不保证其完整性以及安全性,请下载后自行测试。
2.本站资源仅供学习和交流使用,版权归资源原作者所有,请在下载后24小时之内自觉删除。
3.若作商业用途,请购买正版,由于未及时购买和付费发生的侵权行为,与本站无关。
4.若内容涉及侵权或违法信息,请联系本站管理员进行下架处理,邮箱ganice520@163.com(本站不支持其他投诉反馈渠道,谢谢合作)

本文链接:http://u256.cn/index.php/post/599.html

发表评论

评论列表(0人评论 , 128人围观)
☹还没有评论,来说两句吧...