前言

  • 离线文字识别开源库,本文只介绍如何使用
  • tess-two github地址: https://github.com/rmtheis/tess-two

导入依赖

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

下载导入训练数据

  • 下载地址https://github.com/tesseract-ocr/tessdata
  • 大多数情况只需要识别简体中文和英文对应数据包:chi_sim.traineddata,eng.traineddata
  • 项目中创建assets把对应的数据包导入

调用

object TessUtil {// 指定识别的语言英文加中文private const val LANGUAGE = "eng+chi_sim"// 指定数据包在设备中路径 private val mDataPath = PathUtils.getExternalAppCachePath() + File.separator + "tesseract" + File.separator/*** @param imagePath 识别的图片地址* @param callback 结果回调*/fun textRecognition(imagePath: String, callback: Callback) {textRecognition(ImageUtils.getBitmap(imagePath), callback)}/*** @param bitmap 识别的图片* @param callback 结果回调*/fun textRecognition(bitmap: Bitmap, callback: Callback) {ThreadUtils.getSinglePool().execute {try {// 复制字体库到手机sd卡中val path = "${mDataPath}tessdata"copyFont(path, "chi_sim.traineddata")copyFont(path, "eng.traineddata")// 开启文字识别val tessBaseAPI = TessBaseAPI()tessBaseAPI.init(mDataPath, LANGUAGE)tessBaseAPI.setImage(ImageUtils.toGray(bitmap))val utF8Text = tessBaseAPI.utF8TextThreadUtils.runOnUiThread {callback.success(utF8Text)}tessBaseAPI.clear()} catch (e: Exception) {ThreadUtils.runOnUiThread {callback.failure(e)}}}}private fun copyFont(path: String, fontName: String) {FileUtils.createOrExistsDir(path)val fontPath = path + File.separator + fontNameif (!FileUtils.isFileExists(fontPath)) {ResourceUtils.copyFileFromAssets(fontName, fontPath)}}interface Callback {fun success(result: String)fun failure(e: Exception) {e.printStackTrace()}}
}

更新

  • 作者将库迁移到Tesseract4Android了,原来的也可以用,更新一下

修改依赖

  • 选择其中一个导入,OpenMP简单理解,就是对多核CPU机器进行了优化,测试OpenMP识别速度更快一些。
    // 使用标准implementation 'cz.adaptech.tesseract4android:tesseract4android:4.1.1a'// 使用OpenMPimplementation 'cz.adaptech.tesseract4android:tesseract4android-openmp:4.1.1a'

修改调用

object TessOCRUtils {private const val LANGUAGE = "eng+chi_sim"//    private const val LANGUAGE = "chi_sim"//  /storage/emulated/0/Android/data/package/cache/tesseract/private val DATA_PATH = PathUtils.getExternalAppCachePath() + File.separator + "tesseract" + File.separator/*** @param imagePath 识别的图片地址* @param callback 结果回调*/fun textRecognition(imagePath: String, callback: Callback) {textRecognition(ImageUtils.getBitmap(imagePath), callback)}/*** @param bitmap 识别的图片* @param callback 结果回调*/fun textRecognition(bitmap: Bitmap, callback: Callback) {ThreadUtils.getSinglePool().execute {try {// 复制字体库到手机sd卡中val path = "${DATA_PATH}tessdata"copyFont(path, "chi_sim.traineddata")copyFont(path, "eng.traineddata")// 开启文字识别val tessBaseAPI = TessBaseAPI()if (!tessBaseAPI.init(DATA_PATH, LANGUAGE)) {tessBaseAPI.recycle()throw RuntimeException("tess初始化失败")} else {// 图片灰度处理,提高识别率val gray = ImageUtils.toGray(bitmap)tessBaseAPI.setImage(gray)val utF8Text = tessBaseAPI.utF8TextThreadUtils.runOnUiThread {callback.success(utF8Text)}tessBaseAPI.recycle()}} catch (e: Exception) {ThreadUtils.runOnUiThread {callback.failure(e)}}}}private fun copyFont(path: String, fontName: String) {FileUtils.createOrExistsDir(path)val fontPath = path + File.separator + fontNameif (!FileUtils.isFileExists(fontPath)) {ResourceUtils.copyFileFromAssets(fontName, fontPath)}}interface Callback {fun success(result: String)fun failure(e: Exception) {e.printStackTrace()}}
}

android 离线文字识别开源库 tesseract相关推荐

  1. 开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用

    开源免费图片文字识别 OCR 工具 tesseract v4.1.0 的 Docker 镜像制作与使用 一 背景 在日常的一些工作中,偶尔也需要我们把图片转换为文字.目前大部分办公软件还无法实现类似的 ...

  2. Android离线人脸识别方案对比

    Android 离线人脸识别方案对比总结 文章目录 Android 离线人脸识别方案对比总结 百度.腾讯.阿里.Face++.商汤等人脸识别 虹软人脸识别 OpenCV 人脸识别 中科视拓(Seeta ...

  3. 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )

    文章目录 安卓直播推流专栏博客总结 一. x264 简介 二. x264 交叉编译 三. Android Studio 导入函数库 四. 交叉编译版本 五. GitHub 项目地址 安卓直播推流专栏博 ...

  4. 人脸识别开源库face_recognition的简单介绍

    人脸识别开源库face_recognition的简单介绍 原文出处: https://blog.xugaoxiang.com/ai/face-recognition-cnn.html 软硬件环境 ub ...

  5. 京东发布FastReID:目前最强悍的目标重识别开源库!

    京东AI研究院近日发布了基于PyTorch的目标重识别(ReID)开源库 FastReID ,其不仅对相关领域的研究有帮助,而且对工程部署有优化,在各大数据集上的评测结果惊人,其今天公布的论文 Fas ...

  6. 针对Android平台播放器开源库NiceVieoPlayer倍速的开发

    Android平台的视频开源库可谓百花齐放,直接给出比较流行的几大框架github地址:https://github.com/search?l=Java&o=desc&q=ExoPla ...

  7. android tensorflow文字识别身份证识别ocr文字识别商用源码

    一 ,文字识别简介 计算机文字识别,俗称光学字符识别,英文全称是Optical Character Recognition(简称OCR),它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并 ...

  8. Android百度文字识别bitmap,Android集成Tesseract OCR实现图片文字识别

    最近项目需要做图片上的文字识别,在网上找了很久,这方面的知识挺多的,但是很杂.将最近学习到的东西整理一下,仅供参考. 1.Tesseract OCR 介绍我就不说了,自行百度,或者访问:https:/ ...

  9. Android OCR文字识别 实时扫描手机号(极速扫描单行文本方案)

    更新: AI时代已经到了,各位小伙伴如果还有类似的需求,现在已经有很成熟的免费OCR库了,不用再挖古董文章了,钻研精神要保持,但也不用处处自己造轮子了哦 要做实时OCR扫描的可以参考 Google M ...

最新文章

  1. 如何将qlv格式倚天屠龙记转换为MP4格式
  2. 计算机图形学的核心领域,计算机图形学基础知识重点整理.pdf
  3. find与grep命令简介及正则表达式(转)
  4. CodeForces - 1373E Sum of Digits(贪心)
  5. pkpm板按弹性计算还是塑性_双向板按弹性方法还是按塑性方法计算
  6. api restful_HATEOAS的RESTful服务。 记录超媒体API
  7. ruby 三目运算符_Ruby运算符
  8. java周期_java 周期时期计算
  9. Maven工程打成一个jar包
  10. 安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题
  11. 白皮书 | 以太坊 (Ethereum ):下一代智能合约和去中心化应用平台
  12. acWing 1296 聪明的燕姿
  13. LaTeX 下载及命令行
  14. 面向对象之魔术方法_call
  15. [机器学习入门] 李宏毅机器学习笔记-18 (Deep Generative Model-part 1:深度生成模型-part 1)
  16. 我的世界android官方版,我的世界Minecraft中国版官方网站——你想玩的,这里都有...
  17. 微信硬件平台蓝牙打印机
  18. 全球与中国丁苯乳胶市场应用前景及营销渠道分析报告2021~2026年
  19. linux ip命令
  20. python大写数字转阿拉伯数字脚本

热门文章

  1. 2018 年度代码报告
  2. debian最小化安装后的配置
  3. [2030 ]: 汉字统计(汉字机内码的特点)
  4. CS224n学习笔记-1
  5. Tensorflow声纹识别说话人识别
  6. BJFU实验一链表部分题解整合
  7. 前端开发,遇到火狐浏览器无法加载css样式表的情况及解决
  8. 【STC8学习笔记】STC8A8K64S4A12 ADC模数转换,使用串口打印出来
  9. Jquery之全国省市区三级联动(无需访问服务器)
  10. requires XXX>=YYY, but you‘ll have XXXX=ZZZ which is incompatible