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实现扫一扫功能
# 一扫
# 小编
# 的是
# 找到了
# 我是
# 都不
# 也会
# 相关内容
# 你可以
# 多个
# 不出
# 在此
# 就不
# 你也
# 你自己
# 要在
# 这类
# 可在
# 英文
# 给大家
相关文章:
,石家庄四十八中学官网?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
如何快速生成高效建站系统源代码?
如何在建站之星网店版论坛获取技术支持?
如何在宝塔面板中创建新站点?
宝塔建站助手安装配置与建站模板使用全流程解析
如何彻底卸载建站之星软件?
青岛网站建设如何选择本地服务器?
如何在Windows服务器上快速搭建网站?
怀化网站制作公司,怀化新生儿上户网上办理流程?
如何登录建站主机?访问步骤全解析
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
建站之星展会模板:智能建站与自助搭建高效解决方案
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
智能起名网站制作软件有哪些,制作logo的软件?
非常酷的网站设计制作软件,酷培ai教育官方网站?
建站之星如何开启自定义404页面避免用户流失?
图册素材网站设计制作软件,图册的导出方式有几种?
c++怎么用jemalloc c++替换默认内存分配器【性能】
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
专业网站制作服务公司,有哪些网站可以免费发布招聘信息?
如何快速选择适合个人网站的云服务器配置?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
建站为何优先选择香港服务器?
西安专业网站制作公司有哪些,陕西省建行官方网站?
已有域名如何快速搭建专属网站?
如何在香港服务器上快速搭建免备案网站?
定制建站方案优化指南:企业官网开发与建站费用解析
简历在线制作网站免费,免费下载个人简历的网站是哪些?
如何生成腾讯云建站专用兑换码?
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
大型企业网站制作流程,做网站需要注册公司吗?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
制作网站的软件免费下载,免费制作app哪个平台好?
如何在IIS7中新建站点?详细步骤解析
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
重庆市网站制作公司,重庆招聘网站哪个好?
如何零成本快速生成个人自助网站?
临沂网站制作企业,临沂第三中学官方网站?
如何高效完成独享虚拟主机建站?
建站之星安装后如何配置SEO及设计样式?
小建面朝正北,A点实际方位是否存在偏差?
焦点电影公司作品,电影焦点结局是什么?
如何在Golang中指定模块版本_使用go.mod控制版本号
网站制作难吗安全吗,做一个网站需要多久时间?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
*请认真填写需求信息,我们会在24小时内与您取得联系。