全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android实现扫一扫识别数字功能

1.准备工作

  • 首先实现识别数字等字符,我们要知道需要采用OCR (Optical Character Recognition,光学字符识别)来实现。而tesseract是非常不错的开源OCR工具,但是要在Android中直接使用可能要费点功夫。不过不用担心,tess-two拯救了我们。
  • 其次是扫一扫识别,那么很快联想到的就是常见的二维码扫描这类的项目。通过扫一扫实时拿到图像,来做识别。
  • 接下来在Github上找到了QrCodeScanner项目,作者通过一定的优化,使得识别的效率有所提升。那么我们用它来扫描数字,也会有效率上的提升。

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小时内与您取得联系。