1.准备工作

2.实现细节
1.首先是tess-two的用法。
app下的build.gradle的配置如下
android {
defaultConfig {
....
ndk {
abiFilters 'armeabi' //自行选择添加
}
}
}
dependencies {
compile 'com.rmtheis:tess-two:8.0.0'
}
识别方法:
public String detectText(Bitmap bitmap) {
TessBaseAPI tessBaseAPI = new TessBaseAPI();
String path = ""; //训练数据路径
tessBaseAPI.setDebug(true);
tessBaseAPI.init(path, "eng"); //eng为识别语言
tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_WHITELIST, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); // 识别白名单
tessBaseAPI.setVariable(TessBaseAPI.VAR_CHAR_BLACKLIST, "!@#$%^&*()_+=-[]}{;:'\"\\|~`,./<>?"); // 识别黑名单
tessBaseAPI.setPageSegMode(TessBaseAPI.PageSegMode.PSM_AUTO_OSD);//设置识别模式
tessBaseAPI.setImage(bitmap); //设置需要识别图片的bitmap
String inspection = tessBaseAPI.getHOCRText(0);
tessBaseAPI.end();
return inspection ;
}
训练数据可以在tessdata下载,里面包含各种语言。当然你自己也可以训练它,有兴趣的可以学习一下相关内容。
2.从tess-two的用法可以知道,我们最终需要的是识别图片的Bitmap。在扫码项目中我们找到在DecodeHandler类的decode方法中,我们会得到一个PlanarYUVLuminanceSource类的实例。在使用HybridBinarizer算法解析数据源,最终采用MultiFormatReader解析图像出结果。代码大致如下:
Result rawResult = null;
MultiFormatReader mMultiFormatReade = new MultiFormatReader();
try {
PlanarYUVLuminanceSource source =
new PlanarYUVLuminanceSource(```, false);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
rawResult = mMultiFormatReader.decode(bitmap, mHints);
} catch (ReaderException ignored) {
} finally {
mMultiFormatReader.reset();
}
看完后懵逼了,没有Bitmap。经过一番查找,找到了在旧版的zxing中PlanarYUVLuminanceSource类有renderCroppedGreyscaleBitmap方法,不知为何去除了。。。
3.之后修改了一些相机的参数信息,适配了部分设备的预览效果。基本的页面修改了一下。这里就不赘述了。
走一波,如下效果:
可以发现除了数字以外,它将中文识别为了字母。其实问题首先是我们使用了英文的训练数据,同时白名单设置了a~z的字母。当然你也不能将字母设置为黑名单,那样只会让识别不出的字符识别为乱七八糟的数字。
这里我给出的建议是利用正则去筛选,这样你可以识别你想要的各种格式数据。我这里只是做了手机号的简单识别,大家可以举一反三去处理。
public static String getTelNum(String sParam){
if(TextUtils.isEmpty(sParam)){
return "";
}
Pattern pattern = Pattern.compile("(1|861)(3|5|7|8)\\d{9}$*");
Matcher matcher = pattern.matcher(sParam);
StringBuilder bf = new StringBuilder();
while (matcher.find()) {
bf.append(matcher.group()).append(",");
}
int len = bf.length();
if (len > 0) {
bf.deleteCharAt(len - 1);
}
return bf.toString();
}
修改后如下:(同时支持多个号码)
当然本项目也保留了扫码功能(可在DecodeHandler中自己添加条码格式):
细心的同学可以从图中看到扫描框的大小都不一样,这里我是改成了可以手动调节大小的扫描框。毕竟扫码模式下,框大一点还是比较好识别(将二维码放入框中有时就费时间)。扫数字这些文字时,框小一点会好识别。具体可以下载自行体验。
最后我将代码已经上传至Github:Tesseract-OCR-Scanner
总结
以上所述是小编给大家介绍的Android实现扫一扫识别数字功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# android
# 实现扫一扫
# 识别数字
# 超简单Android集成华为HMS Scankit 扫码SDK实现扫一扫二维码
# Android实现扫一扫功能之绘制指定区域透明区域
# Android开发仿扫一扫实现拍摄框内的照片功能
# Android实现扫码功能
# Android 超简易Zxing框架 生成二维码+扫码功能
# Android设备获取扫码枪扫描的内容与可能遇到的问题解决
# Android 使用Zbar实现扫一扫功能
# 一扫
# 小编
# 的是
# 找到了
# 我是
# 都不
# 也会
# 相关内容
# 你可以
# 多个
# 不出
# 在此
# 就不
# 你也
# 你自己
# 要在
# 这类
# 可在
# 英文
# 给大家
相关文章:
广州网站设计制作一条龙,广州巨网网络科技有限公司是干什么的?
建站主机服务器选购指南:轻量应用与VPS配置解析
定制建站策划方案_专业建站与网站建设方案一站式指南
上海网站制作网站建设公司,建筑电工证网上查询系统入口?
建站之星后台密码遗忘如何找回?
建站之星如何优化SEO以实现高效排名?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
如何制作一个表白网站视频,关于勇敢表白的小标题?
香港服务器租用每月最低只需15元?
金*站制作公司有哪些,金华教育集团官网?
制作宣传网站的软件,小红书可以宣传网站吗?
h5网站制作工具有哪些,h5页面制作工具有哪些?
如何访问已购建站主机并解决登录问题?
如何通过WDCP绑定主域名及创建子域名站点?
北京网站制作网页,网站升级改版需要多久?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
建站之星各版本价格是多少?
如何用PHP工具快速搭建高效网站?
外汇网站制作流程,如何在工商银行网站上做外汇买卖?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
如何通过PHP快速构建高效问答网站功能?
广德云建站网站建设方案与建站流程优化指南
天津个人网站制作公司,天津网约车驾驶员从业资格证官网?
建站之星后台管理如何实现高效配置?
建站之星安装路径如何正确选择及配置?
如何制作算命网站,怎么注册算命网站?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
如何用好域名打造高点击率的自主建站?
如何在建站宝盒中设置产品搜索功能?
建站之星如何防范黑客攻击与数据泄露?
如何安全更换建站之星模板并保留数据?
营销式网站制作方案,销售哪个网站招聘效果最好?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
广平建站公司哪家专业可靠?如何选择?
如何有效防御Web建站篡改攻击?
微信推文制作网站有哪些,怎么做微信推文,急?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何获取上海专业网站定制建站电话?
建站之星如何快速更换网站模板?
网站app免费制作软件,能免费看各大网站视频的手机app?
微信小程序 五星评分(包括半颗星评分)实例代码
如何快速重置建站主机并恢复默认配置?
西安专业网站制作公司有哪些,陕西省建行官方网站?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
导航网站建站方案与优化指南:一站式高效搭建技巧解析
如何快速搭建高效简练网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。