Android实现扫一扫识别数字功能
发布时间 - 2026-01-11 03:14:52 点击率:次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实现扫一扫功能
# 一扫
# 小编
# 的是
# 找到了
# 我是
# 都不
# 也会
# 相关内容
# 你可以
# 多个
# 不出
# 在此
# 就不
# 你也
# 你自己
# 要在
# 这类
# 可在
# 英文
# 给大家
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
黑客如何利用漏洞与弱口令入侵网站服务器?
PythonWeb开发入门教程_Flask快速构建Web应用
太平洋网站制作公司,网络用语太平洋是什么意思?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理
Swift中switch语句区间和元组模式匹配
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Linux系统命令中tree命令详解
常州企业网站制作公司,全国继续教育网怎么登录?
MySQL查询结果复制到新表的方法(更新、插入)
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
如何在阿里云高效完成企业建站全流程?
详解Android中Activity的四大启动模式实验简述
详解Android图表 MPAndroidChart折线图
教你用AI润色文章,让你的文字表达更专业
如何快速搭建高效WAP手机网站吸引移动用户?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
中山网站推广排名,中山信息港登录入口?
实现点击下箭头变上箭头来回切换的两种方法【推荐】
*服务器网站为何频现安全漏洞?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
JavaScript如何实现路由_前端路由原理是什么
图册素材网站设计制作软件,图册的导出方式有几种?
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何在香港服务器上快速搭建免备案网站?
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
如何在万网主机上快速搭建网站?
如何快速辨别茅台真假?关键步骤解析
5种Android数据存储方式汇总
Laravel如何使用.env文件管理环境变量?(最佳实践)
如何在云主机上快速搭建网站?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
香港服务器如何优化才能显著提升网站加载速度?
如何选择PHP开源工具快速搭建网站?
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
如何快速生成ASP一键建站模板并优化安全性?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
高端智能建站公司优选:品牌定制与SEO优化一站式服务
香港服务器租用费用高吗?如何避免常见误区?
如何用VPS主机快速搭建个人网站?

