之前做手机号扫描,更换了很多方案,过程中的笔记都在这篇文章里,有兴趣可以看看
Ocr使用流程:http://blog.csdn.net/mr_sk/article/details/72877492

这里把算法整理了一下,封装了一个library(含Demo),地址:https://github.com/SiKang123/ImgTranslator

如果需要自己更改算法,可以直接改这个demo :https://github.com/SiKang123/ocrTest

这个算法主要针对下图中这种独立存在的一串手机号的识别,如果是 ” 手机号:13651761352 “
这种字符串,会直接被过滤算法过滤掉,因为在捕捉字符的过程中,会捕捉到至少14位字符,不符合手机号的11位特征,这种过滤条件,可以在Demo中自行调整


Demo截图:

图一

图二

图三

图四

图五


图一:是扫描线没有对准手机号码,未捕捉到手机号的状态,这种状态下,每一帧都会在10-30ms之内被确定扫描线没有对准一个> 手机号而被过滤掉,不交给tess-two解析,直接放弃这一帧数据

图二:是扫描线对准了手机号,经过过滤算法后,捕捉到一个包含11位字符的蚊子块,基本确认存在手机号

图三:是 图二 状态下的识别结果

图四:是被水印干扰的手机号所得到的二值化图片

图五:是清除水印后取到的手机号区域(只适用于图五这种文字底部的干扰)

使用方法

在project 的build.gradle中添加

allprojects {repositories {...maven { url 'https://jitpack.io' }}}

在module的build.gradle中添加

dependencies {compile 'com.github.SiKang123:ImgTranslator:lastVersion'
}

在Application中初始化

ImageTranslator.getInstance().init(ApplicationContext);

传入需要识别的图片

Bitmap bmp=需要识别的图片,在扫描识别的场景中,就是相机预览图中取出的扫描区域;Translator translator = new PhoneNumberTranslator();//开始识别ImageTranslator.getInstance().translate(translator, rotateToDegrees(bmp, 90), new ImageTranslator.TesseractCallback() {@Overridepublic void onResult(String result) {Log.d("scantest", "扫描结果:  " + result);}@Overridepublic void onFail(String reason) {Log.d("scantest", "解析失败:  " + reason);}});

代码提交

这种方法还可以针对 身份证扫描、邮箱扫描、银行卡号 等做相应的识别算法,如果有感兴趣的朋友愿意分享自己的算法,非常欢迎提交代码,提交代码格式如下:

以手机号识别为例,我创建了一个PhoneNumberTranslator类 假如你想实现一个邮箱扫描:

1、实现一个算法类,继承Translator,实现如下三个抽象方法

public class EmailTranslator extends Translator{/**
* 你使用的字库名字
*/
@Override
public String initLanguage() {return "email";
}/**
* @params 从相机预览图中传入的 扫描区域Bitmap
* 在这里实现你对图片中的email的过滤、捕捉等处理,然后返回捕捉到的email区域bitmap
* 如果可以断定图片中没有email,return null即可
*/
@Override
public Bitmap catchText(Bitmap bitmap) {return emailBitmap;
}/**
* 对于扫描结果的筛选
* 如果catchText() 捕捉到了email,那么这个包含email的Bitmap会交由 tess-two识别,最终的识别结果,会用正则公式来筛选需要的内容
* 比如这里返回了一个email的正则表达式,最终会将识别结果中的所有email返回,如果不需要筛选,这里return "" 即可
*/
@Override
public String filterRule() {return "^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$";
}
}

2、提交你的字库

将你使用的字库文件提交到 https://github.com/SiKang123/tessdata ,比如这里用的是email字库,那么就将email.traineddata 文件,提交到这个地址

3、提交你的代码,我测试后,上线代码

Android 实现 Ocr手机号扫描相关推荐

  1. ocr手机号扫描+条形码扫描

    开发语言:Java 实例大小:3.25M 实例类别:Android平台开发 [实例截图] 内容转载自网站: 阁楼网源 -最干净的资源网站

  2. 手机号扫描OCR识别程序一点也不值得拿来使用

    最近经常接到快递行业的客户向我咨询,有没有技术可以让APP直接识别出快递单上的手机号码,然后程序可以快速拨号或者自动发送响应短信,这样业务人员就不用手机键盘去一个个的输入数字了.现在他们每天要打几十甚 ...

  3. Android实现OCR扫描识别数字图片之图片扫描识别

    Android可以识别和扫描二维码,但是识别字符串呢? google提供了以下解决方案用的是原来HP的相关资料. 可以吧,这个迁移到Android上. 工程导入成功是可以正常运行的,我是专门换了个电脑 ...

  4. ocr手机号识别应用

    在互联网高速发展的今天,我们都离不开物流,不过试想一下.中国现在网民大约八亿人,人均一个月买一个快递,当然了小编一个月都会产生几十个快递哈,女生买买患抑郁症的概率会降低很多哦.身边的女同胞也是一样的哦 ...

  5. 安卓Android拍照车牌,车牌扫描识别技术SDK

    安卓Android拍照车牌,车牌扫描识别技术SDK 安卓Android拍照车牌,车牌扫描识别技术应用背景: 随着社会的发展,人们越来越注重自己的财产安全问题,随之而然,保险行业中的车险行业的竞争愈发激 ...

  6. Android 二维码扫描(仿微信界面),根据Google zxing

    Android 二维码扫描(仿微信界面),根据Google zxing Android项目开发中经常会用到二维码扫描,例如登陆.支付等谷歌方面已经有了一个开源库(地址: https://github. ...

  7. (五十四)Android O WiFi 获取扫描结果流程梳理

    前言:之前在(五十) Android O WiFi的扫描流程梳理 已经梳理过扫描流程了,那扫描完的结果会呈现在设置的WiFi界面,那扫描结果是如何获取的呢? 1. wifi扫描结果简介 WiFi的扫描 ...

  8. 支持m1芯片超级无敌好用的OCR文字扫描工具Text Scanner

    Text Scanner mac 软件特点  https://www.mac69.com/mac/6638.html [场景功能] 1.文本识别,识别图像上的文字 2.二维码识别 3.手写识别 4.* ...

  9. Android二维码扫描开发(一):实现思路与原理

    2019独角兽企业重金招聘Python工程师标准>>> Android二维码扫描开发(一):实现思路与原理 Android二维码扫描开发(二):YUV图像格式详解 Android二维 ...

最新文章

  1. python xpath语法-Python xpath表达式如何实现数据处理
  2. Ubuntu 安装docker-engine的三种方法
  3. 洛谷P2670扫雷游戏题解
  4. tomcat不能解析php,tomcat不支持php怎么办
  5. Linux常用命令之文件和目录处理命令
  6. 我的考研~~~3-4月份总结
  7. es的node内存设置
  8. linux下搭建博客day3-git安装
  9. 麦克纳姆轮平台坐标系说明
  10. c语言谭浩强简介,大一C语言谭浩强总结(到数组)简介.ppt
  11. 控制系统状态空间表达式的解(3)——求解线性定常系统零状态响应
  12. 半导体智能制造系统之 APS高级计划和调度
  13. 实时PPP多系统组合与单系统解算ZTD和Clock差异
  14. mysql ucase,Node.js MySQL UCASE()用法及代码示例
  15. 多个视频如何合 并,怎么合成视频
  16. C Primer Plus 第六版编程练习第五章答案
  17. 【华人学者风采】李烨 华为
  18. 一步步带你用Java实现双向链表(超详细)
  19. Certificates 证书
  20. 解决Python:'utf-8' codec can't decode byte 0xfc in position 14: invalid start byte

热门文章

  1. tars cpp项目开发流程
  2. Centos 搭建Hadoop集群
  3. 16进制转换为ASCII码
  4. jmeter 本机承载能力测试结果
  5. 百度推出蓝天算法,严厉打击新闻源售卖目录
  6. C语言课程设计:新冠疫情管理系统
  7. SVN提交代码冲突解决方法总结
  8. 首届AAAI/ACM SIGAI博士论文奖公布, 清华姚班毕业生、MIT学霸吴佳俊获奖
  9. (c语言)设计一个程序,输入一个给定的范围,输出该范围内本身是素数,反序后仍然是素数的所有素数
  10. C++的reverse_iterator