Android如何修改扫描照片文字识别软件功能为扫描即识别

扫描全能王 v4.9.5. 高级/直装/专业版 安卓最强OCR文字识别软件 - 『精品软件区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 47706|回复: 186
扫描全能王 v4.9.5. 高级/直装/专业版 安卓最强OCR文字识别软件
阅读权限30
本帖最后由 换个帅点的名字 于
10:11 编辑
2亿人在用的手机描仪,扫文档管理工具。能自动切除文档背景,生成高清PDF、JPEG或TXT文本。还可以邮件发送、连接打印机、发传真、发微信、存到云端,多设备查看!非常给力的office实用工具!
256.png (3.92 KB, 下载次数: 9)
08:33 上传
v4.9.5. 版本更新:
1.老黑白处理模式回归,命名为“省墨模式”
2.帐户登录优化
3.自定义命名模板中增加标签元素,设置后,在标签下新建文档的命名会带上标签名
识别效果:& && && && && && && && && && && && &&&
D5D62500B27DBAACFDD6BF.png (572.96 KB, 下载次数: 12)
08:40 上传
以下为识别出来的文字(未经任何修改):
【手机上的扫描仪】
手机拍文档,自动去除杂乱背景,生成高清JPEG图
片或PDF文件。
多种图像处理模式,可手动调节图像参数,用手机即
可将纸质文件,快速转为清晰的电子稿。
【图片转文本】
智能OCR文字识别,手机拍纸质文件,搜上面的字就
升级帐户还可将图片中的文字识别导出为可以编辑、
复制、保存或分享Text文本,支持16种语言文字的识
别,外语学习翻译神器。
【方便、安全的管理文件】
手机、平板、电脑,多设备随时查看管理文档。
软件已为高级、专业版
识别效果显而易见,准确率还是不错的。
扫描全能王 v4.9.5.(最新版)下载链接:https://pan.baidu.com/s/1i4RVC49
QQ新版本自带识别图中文字,比这好用&
有没有去掉升级?&
吾爱币 +58
热心值 +55
热心回复!
我很赞同!
我很赞同!
鼓励转贴优秀软件安全工具和文档!
扫描证件双面后点击完成弹出的是包月包年连接,是不是已经失效了?
鼓励转贴优秀软件安全工具和文档!
谢谢@Thanks!
我很赞同!
谢谢@Thanks!
热心回复!
谢谢@Thanks!
谢谢@Thanks!
我很赞同!
谢谢@Thanks!
有了纯支持
我很赞同!
我很赞同!
鼓励转贴优秀软件安全工具和文档!
楼主啊,这个不能拍身份证啊,需要包月呢
用心讨论,共获提升!
谢谢@Thanks!
用心讨论,共获提升!
破解不完美,证件扫描依然收费
我很赞同!
用心讨论,共获提升!
我很赞同!
谢谢@Thanks!
KEY以为是破解收费的,还是只有3个月的试用期
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
热心回复!
我很赞同!
我很赞同!
用心讨论,共获提升!
这个key只是普通收费版,并不是高级版
鼓励转贴优秀软件安全工具和文档!
谢谢@Thanks!
鼓励转贴优秀软件安全工具和文档!
鼓励转贴优秀软件安全工具和文档!
我很赞同!
热心回复!
谢谢@Thanks!
鼓励转贴优秀软件安全工具和文档!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
已测试,高级功能还是需要付费
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
我很赞同!
谢谢@Thanks!
谢谢@Thanks!
谢谢@Thanks!
我很赞同!
本帖被以下淘专辑推荐:
& |主题: 357, 订阅: 26
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
谢了已经在用另一个版本的破解扫描王,不过还是谢谢分享,收藏当备用了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
已经在用另一个版本的破解扫描王,不过还是谢谢分享,收藏当备用了,
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
哇喔,这个软件好,拍个照片就能生成编辑的文字
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
好上去很不错的样子,准备去图书管扫书
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个软件好 图片生成文字
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
谢谢分享我来试试
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个拍照比我自带的清晰
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个好,感谢楼主分享
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
这个好,正好原来用的快到期了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
支持!全能扫描王挺好用的
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
谢谢分享。
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.分享到微信
使用微信扫码将网页分享到微信
A 君注:今天限免的 TextGrabber 是款非常实用的工具,强烈推荐大家收下。早在一年前 AppSo 就,由于 app 的核心功能没有太大变化,今天这篇文章是将旧文更新后发布。
经常遇到这样的场景:看到一本书中有段落写得很棒,拍下来也觉得不够,总想把这段文字转录到电子设备里。这样不仅节省空间,也方便后续的整理和搜索。
TextGrabber 就是一款帮你转录图中文字的神奇 app,其 OCR 识别技术的正确率非常高。它支持中英文等 60 种语言识别,解锁内购后还能翻译超过 90 种语言(不内购似乎也可以翻译 20 多种语言…)。
智能识别多种语言
拍照完毕后,剪切好想要识别的部分,打开它支持的语言列表时吓了一跳,只有你听不懂的,没有你选不到的,很多连听都没有听说过的语言都在备选之列。
一般非国产的扫描软件对中文的识别都处于弱势,但是这家俄罗斯公司出品的软件却对中文的识别正确率要超过同类 app。
除中文外,Textgrabber
还能对竖排日语进行校准段落,但是并没有按照竖排日语从右起读的习惯来显示结果。相对竖排,对横排日语识别正确率更高。更棒的是,它最多支持三种语言的同时识别。
接下来是法语,打开我的法语课本,选好法语,识别速度还挺快,采集结果中除了部分阿拉伯数字被识别成了字母和标点以外,基本准确。
除了拍照,你还能从照片库中选择图片进行识别。
支持多种语言翻译和扫描二维码
TextGrabber 可以在识别后进行多语言翻译,翻译结果由 Google 翻译提供。AppSo 实测发现,不用梯子也能使用翻译功能。此外,即时编辑、分别分享识别文字和翻译结果、历史记录查找功能都十分实用。
花 28 元解锁内购 70 种语言的翻译功能后,你就能用 TextGrabber 翻译共 91 种语言。即使不买内购,似乎也能支持 20 种语言翻译。
另外,新版还加入了扫描二维码的功能,识别出网址后能直接跳转 Safari 打开的功能也很贴心。
如何提高识别准确率
当然,要得到一个好的扫描效果、提高识别正确率的唯一方法就是提高拍照的质量。
拍照的时候要尽量保证光线均匀,拍照页面提供了闪光灯长亮的功能来保证拍照光线。此外,还要保持相机平稳,尽量避免手抖、手残、打喷嚏等突发状况发生。
TextGrabber 适用于 iOS 8.0+ 的 iPhone 和 iPad 及 Android 4.0.3+ 的设备,iOS 版大小 81 MB,限免有 28 元内购,Android 版大小 20 MB,售价 68 元。
本文由让手机更好用的 AppSo 原创出品。关注微信号 appsolution,回复「读书」获取文章更多看书可能会用到的优质 app。
扫一扫分享到微信
累计已发布 41 篇文章
最近文章:
使用微信扫码关注爱范儿微信公众号
版权所有 & 广州爱范儿科技股份有限公司 2008 - 2018。以商业目的使用爱范儿网站内容需获许可。非商业目的使用授权遵循 CC BY-NC 4.0。
All content is made available under the CC BY-NC 4.0 for non-commercial use. Commercial use of this content is prohibited without explicit permission.
Designed by
Design Studio.
关注 if Design Studio.
微信扫码关注公众号 if Design Studio.
关注爱范儿微信号,连接热爱,关注这个时代最好的产品。
想让你的手机好用到哭?关注这个号就够了。
关注玩物志微信号,就是让你乱花钱。
小程序开发快人一步。
最好的微信新商业服务平台。Android中使用orc实现文字识别实例
转载 &更新时间:日 10:56:41 & 作者:_陈小平
这篇文章主要介绍了Android中使用orc实现文字识别实例,详细的介绍了orc的简介和用法,有兴趣的可以了解一下
一、什么是orc?
引用百度百科的介绍,指利用光学字符识别(ORC全称:Optical Character Recognition)技术,将图片、照片上的文字内容,直接转换为可编辑文本,支持JPG、PNG、GIF、BMP、DOC等图片格式。简单一句话,就是可以把图片上的文字识别出来。应用的场景有很多,比如说:身份证号码识别,银行卡号识别等等。
二、效果展示
这里笔者实现的仅仅是一个效果,实际使用可能需要对它进行训练以提高识别率,第一次做gif图片,效果不是很好
三、开始集成
Github上面已经提供了android端的工具api,Github地址:
1.下载中文简体语言包
2.导入依赖
3.API的使用,获取TessBaseAPI mBaseAPI = new TessBaseAPI();实例
4.API的使用,初始化TessBaseAPI设置,设置识别的语言和语言包所在文件路径 mBaseAPI.init(path + File.separator, "chi_sim");
5.API的使用,设置Bitmap,mBaseAPI.setImage(bitmap);
6.API的使用,从Bitmap获取文字信息,mBaseAPI.getUTF8Text();
1.下载中文简体语言包
找到tessdata——&chi_sim.traineddata
下载好了之后,需要放到sd卡中,目录不限,但是必须要放在tessdata目录里面,如果没有tessdata目录需要手动创建,例如我是Demo中是放在sd卡根目录中,就直接在sd卡根目录创建tessdata目录,然后把下载好的chi_sim.traineddata语言包丢进去,实际项目中,在识别时候最好坐下语言包是否复制到位的检查,以免出现异常。Demo中仅仅是检查了是否创建tessdata目录,这里实际上仍然存在风险的。
2.导入依赖
Gradle方式添加:
3.MainActivity代码
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mTvI
private TessBaseAPI mBaseAPI;
private ProgressBar mP
private RadioGroup mRadioG
private RadioButton mRbtnIdC
private RadioButton mRbtnBankN
private RadioButton mRbtnT
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.btn_start).setOnClickListener(this);
mProbar = (ProgressBar) findViewById(R.id.pb);
mTvInfo = (TextView) findViewById(R.id.tv_info);
mRadioGroup = (RadioGroup) findViewById(R.id.rg);
mRbtnIdCard = (RadioButton) findViewById(R.id.rb_idCard);
mRbtnBankNumber = (RadioButton) findViewById(R.id.rb_bankNumber);
mRbtnTxt = (RadioButton) findViewById(R.id.rb_txt);
mRadioGroup.check(0);
path = Environment.getExternalStorageDirectory().getAbsoluteFile().getAbsolutePath();
public void onClick(View v) {
mTvInfo.setText("");
switch (v.getId()) {
case R.id.btn_start:
if (Build.VERSION.SDK_INT &= 23) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
// 没有权限
if(ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CALL_PHONE)){
//如果没勾选“不再询问”,向用户发起权限请求
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CALL_PHONE}, 0);
Toast.makeText(this,"请前往设置——&存储卡权限——&允许",Toast.LENGTH_SHORT).show();
// 有权限,接着你要干的活
startReadText();
startReadText();
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
String s = (String) msg.
if (!TextUtils.isEmpty(s)) {
mProbar.setVisibility(View.GONE);
mTvInfo.setText(s);
//释放bitmap
mBaseAPI.clear();
mProbar.setVisibility(View.GONE);
Toast.makeText(MainActivity.this, "识别图片内容失败", Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "读取图片失败", Toast.LENGTH_SHORT).show();
private Bitmap getBitmap(int id) {
Bitmap bitmap =
bitmap = BitmapFactory.decodeResource(getResources(), id);
} catch (Exception e) {
* 开始识别文字
private void startReadText() {
File f = new File(path+"/tessdata") ;
if(!f.exists()){
Toast.makeText(this,"请先下载好语言包置于sd/tessdata目录",Toast.LENGTH_SHORT).show();
final int btnId = mRadioGroup.getCheckedRadioButtonId();
final int resI
if(R.id.rb_idCard==btnId){
resId = R.drawable.
}else if(R.id.rb_bankNumber==btnId){
resId = R.drawable.bank_
resId = R.drawable.tet_
mProbar.setVisibility(View.VISIBLE);
new Thread() {
public void run() {
mBaseAPI = new TessBaseAPI();//初始化需要耗时,可以启动时程序时,预初始化
mBaseAPI.init(path + File.separator, "chi_sim");
Bitmap bitmap = getBitmap(resId);
if (bitmap == null) {
mHandler.sendEmptyMessage(1);
mBaseAPI.setImage(bitmap);
//根据Init的语言,获得ocr后的字符串
String t = mBaseAPI.getUTF8Text();//耗时操作
Message obtain = Message.obtain();
obtain.what = 0;
obtain.obj =
mHandler.sendMessage(obtain);
}.start();
4.activity_main.xml代码
&LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.demo.orc.MainActivity"&
&RadioGroup
android:id="@+id/rg"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"&
&RadioButton
android:checked="true"
android:id="@+id/rb_idCard"
android:text="身份证"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /&
&RadioButton
android:id="@+id/rb_bankNumber"
android:text="银行卡"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /&
&RadioButton
android:id="@+id/rb_txt"
android:text="文字"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /&
&/RadioGroup&
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始识别"/&
android:text="识别结果展示区:"
android:layout_width="match_parent"
android:layout_height="wrap_content" /&
&FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"&
&ProgressBar
android:id="@+id/pb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"/&
android:id="@+id/tv_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text=""/&
&/FrameLayout&
&/LinearLayout&
四、提高识别率
Demo识别率其实不是很理想,比如把数字0识别成了字母O等,这是因为我们的根本没有进行样本训练。关于样本的训练,我目前还没实际操作过,因为公司的识别需求更为复杂,这个框架难以达到效果,公司买了第三方的一个识别框架。不过仅仅是实现身份证号,银行卡号,和一些简单的文字信息,用这个框架足以实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Android中的文字识别(论文精简版)
这是年少的我的第一篇博客啊~~~
下图文字识别的工作流程。主要用到OpenCV4JAVA的图像处理功能与Tesseract的文字识别库。
通过图像处理、文字识别两个步骤后,接下来我们要进行的是APP的UI界面刷新,这个过程通过定义一个handler来handleMessage实现,因为android的UI更新只能在主线程里操作,并且文字处理由于时间过长需要在另外的线程里处理,所以只能通过android的这个通知刷新机制来实现。
下面是每一步的细节。
灰度图(Gray Scale Image)又称灰阶图,它是指把白色与灰色按对数关系分为若干等级,称作灰阶。灰度分为256阶,用灰度表示的图像称为灰度图。
任何颜色都由三种原色组成,红色、蓝色、绿色。表示为 RGB(R,G,B)。每个颜色通道有256阶,当三个颜色通道的值均相等时,这就是一个灰阶,从此可以得出灰度可以分为256阶。由于每个点的色值可以是256的3次方约1677万种可能,所以一张三通道图片的数据量是十分浩大的,这对与程序处理极为不利,需要耗费极长的时间。但是对原图灰度化之后,一个点的色值只有256种可能,瞬间缩小工作量,而且过滤的色值对于我们课题也是并无大用的,因为文字识别一般都建立在白纸黑字的基础之上。采用灰度图,可以使得我们文字识别的算法在时间上变得可能。图2.1展示的是灰度图与原图的对比。左图为灰度图,右图为原图。从图中我们可以看出来,灰度化效果比较理想。
本课题灰度化使用的方法是OpenCV里的cvtColor(Matsrc, Mat dst, int code);
src:输入待处理的图片;
dst:输出处理后的图片;
code:颜色区域,表示从什么颜色转换成目标颜色,本课题此处用的是Imgproc.COLOR_RGB2GRAY;
二值图是作为图像处理最常用的图。二值图像是指每个像素不是黑就是白,其没有中间过渡的图像。二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。二值图像是每个像素只有两个可能值的数字图像。人们经常用黑白、B&W、单色二值图像,但是也可以用来表示每个像素只有一个采样值的任何图像,例如灰度图像等。二值图的图像中所有的像素点只能从0和1中取值。对于一张灰度图,有256种色值可能,如果我们选取一个阀值,例如100。遍历这个灰度图的每个像素,若像素色值小于100,则置其为0,若大于等于100,则置其为1,处理后的图像就是二值图。这种灰度图转换为二值图的方法叫固定阀值二值化。除了固定阀值二值化,这里还有一个方法叫局部自适应阀值二值化。它是选取目标像素周边的值来确定该像素的值。局部自适应阀值二值化的优点是基本能够全面的显示原图的内容,而固定阀值二值化容易造成某部分内容整片缺失。
总体来讲,我们一般选用局部自适应阀值二值化,也是本课题的选择。二值化的时候我们使用OpenCV的:
adaptiveThreshold(Mat src, Mat
dst, double
maxValue, int
adaptiveMethod, int
thresholdType, int
blockSize, double
maxValue:二值化时允许黑色像素的最大色值,一般我们选255;
adaptiveMethod:局部自适应方法,本课题选用的是Imgproc的ADAPTIVE_THRESH_MEAN_C;
thresholdType:二值化类型,也是一个选项,我们使用的时候一般选用Imgproc.THRESH_BINARY_INV;
blockSize:一般为3,5,7等奇数,因为算法决定这样的运算速率较快。这个参数是指以附近n*n个像素作为参考,计算中心像素的二值化值。
下面展示局部自定义阀值与固定阀值二值化的区别。如下图,左图采用的是局部自定义阀值二值化,而右图采用的是固定阀值二值化。从图中我们可以明显看出,采用局部阀值二值化处理后的图像的内容比较多且杂,但是基本没有丢失重要内容,文字与背景的对比明显。但是从右图可以看出,右侧文字已经与背景融为一体,难以分辨了。
图像去噪声
由于原图有种种不可预测的因素造成图像中的噪声,为了保证应用对于较小字体的识别率,在此我们没有采用高斯或者均值滤波,而是采用对二值图腐蚀与膨胀操作来去除噪声。图像的腐蚀与膨胀默认都是对于二值图中的白色区域部分来说的,按照逻辑,我们应该先进行腐蚀操作,将图中的无用处的白点腐蚀掉,然后对操作后的图像进行膨胀操作还原字体。需要注意的是,在这里我们不能对二值图进行过多的连续腐蚀操作,这样会造成其中的文字部分被完全腐蚀掉。下面两张图展示的是对二值图进行腐蚀与膨胀操作后的结果。如图2.3所示,左图为二值图的腐蚀结果,右图为腐蚀图的膨胀结果。从图中的对比结果中可以看出,我们已经去掉了极大多数的噪声点。
在本课题中的腐蚀膨胀我们使用OpenCV中的
erode(Mat src,Mat
dst, Mat kernel)和
dilate(Mat src, Mat
dst, Mat kernel);
kernel:是一个腐蚀膨胀计算的核心,他是这么定义的。
Mat kernel = Imgproc.getStructuringElement(
Imgproc.MORPH_RECT,new Size(2, 2));
Hough变换倾斜校正
当我们获得了上面一系列处理后的图之后,还需要考虑一个问题,那就是文字的倾斜问题。在实际应用中,我们无法保证用户会很端正的拿着手机拍照,他们可能会略有倾斜的拍。但是为了文字识别的效率与正确率,对于倾斜的文字,我们是必须要校正的。对图像中文字的校正,可以采用OpenCV中的hough变换来处理。Hough变换是一种使用表决原理的技术。其原理是利用图像空间和Hough的点-线,把图像空间中的检测问题转换到参数空间。通过在参数空间里进行简单的累加统计,然后在Hough参数空间寻找峰值的方法检测直线。Hough变换的实质是将图像空间内具有一定关系的进行,寻找能把这些像元用某一解析形式联系起来的参数空间累积对应点。在参数空间不超过的情况下,这种变换有着理想的效果。
如图2.4,左图是倾斜的原图,右图是经过hough变换的图,找到字里行间有直线特征的像素连成一条直线,保存好所有直线的起点与终点,计算其斜率获得倾斜角,计算所有直线的倾斜角的均值,然后把原图按均值旋转一个角度。需要注意的是,这种方法在倾斜角小于90度的时候都有较好的纠正作用。从右图中我们可以看到其中有几条明显的细线。那些线是用来参考用的,真实识别文字的时候会把这些细线去掉。
在本课题中,我们使用OpenCV的houghLines方法对图片检测直线。
HoughLinesP(Mat image, Mat lines, double rho, double theta, int threshold, double minLineLength, doublemaxLineGap)
rho:累加的以像素为单位的距离分辨率,我们使用1;
theta:以弧度为单位的累加的角度分辨率我们使用π/180;
threshold:某个像素的色值大于此,该方法才会在直线检测的时候把该像素纳 入考虑;
minLineLength:最小的直线长度,小于此的不予考虑;
maxLineGap:连成直线的两点的之间的最大距离,大于此的不予考虑。
houghLines方法处理图片后,会记录下一条直线的起点与终点放入lines变量内此时我们可以计算两点的斜率,从而求的文字倾斜的角度。
Double sum = 0.0;
for (Double d : angle) {
float ave = Float.valueOf(sum /angle.size()
tesseract简述
Tesseract:开源的OCR识别引擎,初期Tesseract引擎由HP实验室研发,后来贡献给了开源软件业,后经由Google进行改进,消除bug,优化,重新发布,在版本3.0的时候已支持汉字识别。本课题选用tess-two开源库,tess-two是托管在GIT上的tesseract-adroid-tools的一个分支,并添加了许多额外功能。tesseract android 工具包含了一整套android api和tesseract OCR和Leptonica图像处理库相关的build文件。在本课题中,我们把如图8没有加细线的图片数据传给tess-two,系统会用库里的字典与图片中的文字比较,来获得文字。本课题中,我们获得的文字不用写入某个文件,直接在程序中显示出来。
如图4.4测试结果。这是传入识别的图片,图4.5是识别结果。从图4.5中我们可以看出软件的识别率是比较高的。有个别文字由于种种原因未正确识别,对于标点符号,识别情况不是很乐观。图中共有128个字,有两字汉字未正确识别,此图识别率在98%以上。
以上的文字图片都是接近端正、水平的,接下来我们看下软件对倾斜文字的识别效果。如图4.6所示。图4.6中,左侧是软件正在处理原图的,识别文字时候的截图,中间图片是软件处理后的图片,从中我们可以看到,对于传入的倾斜的图片,本课题已经按照逻辑旋转了一个角度,使得文字行水平。右图中白框是我们显示的识别后的结果。在这结果中我们可以看出,本课题对倾斜文字有较好的识别作用,除了个别文字不完整识别错误与个别文字由于处理不清晰导致识别失败,其他文字都正确识别,识别率可观。
下面我们来看一下应用对从相册获得的整齐文字截图的识别结果,如图4.7所示。识别结果可以看出,相对于前面的识别结果,这个截图的识别率显然更高。
整个过程大概方向上就这几个方面,这几个截图都是本人实测的。在文字识别方面我也只是刚刚接触,写这篇博客也是让尚未接触这方面的朋友稍微有点帮助。
OpenCV的+安卓+号牌识别(OpenCV + Android +水平矫正)
Android opencv实现文字识别
基于深度学习的自然场景文字识别
opencv裁剪移并植到android实现游戏中的数字识别
利用百度API实现文字识别
没有更多推荐了,}

我要回帖

更多关于 全能扫描王破解版 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信