惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
Project Zero
Project Zero
D
DataBreaches.Net
I
InfoQ
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
The Register - Security
The Register - Security
Recorded Future
Recorded Future
Vercel News
Vercel News
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
The Hacker News
The Hacker News
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Scott Helme
Scott Helme
T
Threatpost
爱范儿
爱范儿
N
Netflix TechBlog - Medium
D
Docker
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
K
Kaspersky official blog
H
Help Net Security
S
Secure Thoughts
T
Threat Research - Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
G
Google Developers Blog
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
B
Blog
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
P
Privacy International News Feed
Spread Privacy
Spread Privacy
The Last Watchdog
The Last Watchdog

博客园 - xin36933

Android中使用代码截图的各种方法总结 Android通过tcpdump抓包 Android 开机自动启动服务 SqlServer表死锁的解决方法 数据库 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。 修改Android工程版本 android利用剪切板来实现数据的传递 ANDROID开发之SQLite详解 浅析SQLite数据库开发常用管理工具 android DDMS 连接真机(己ROOT),用file explore看不到data/data文件夹的解决办法 Android手机获取手机唯一识别号(转) android 程序时时获取logcat信息 Android adb shell启动应用程序的方法 android打电话、发短信实现 Android全局变量的定义与使用 安卓4.0/4.1/4.2手机怎么打开USB调试模式 Android中的DDMS进行调试 Runtime.getRuntime().exec执行阻塞问题解决 GC_EXTERNAL_ALLOC freed 与 GC_EXPLICIT freed 是什么?
浅析android OCR文字识别
xin36933 · 2014-06-25 · via 博客园 - xin36933

这学期有门课程老师要求用JAVA实现一个OCR文字识别的程序,所以就花了一些时间研究了一下在安卓端如何实现

OCR的引擎是用的开源项目tesseract-ocr 这个安卓版的地址:https://code.google.com/p/tesseract-android-tools/

但是自己在编译的时候老是出错,于是在网上寻找到了别人编译好安卓可用的tess-two导入到项目中(参考文章地址 http://www.cnblogs.com/hangxin1940/archive/2012/01/13/2321507.html

自己尝试做了拍照识别和从相册选择图片识别

但是手机运算能力太差,图片太大、分辨率太高的话,识别时间会很长,所以在选取图片的时候调用了系统裁剪功能,并且另开线程来处理识别。

推荐测试的时候不要用太大的图片。

同组的队友用java写了图片的预处理,所以拿过来试试能否提高识别成功率

无奈安卓无法使用java.awt里面的包,所以还费了一些时间替换成android.graphics中的一些类实现相同功能。

测试发现灰度化后是能提高一些识别率,在电脑上灰度化后再用三个算法二值化后还能进一步提高识别率

但在手机上用大津法、最大熵法进行二值化花费时间太久(几乎没算成功),所以后来这两个方法就没有调用,而只用迭代法二值化效果不理想。

识别需要用到语言包,需要放置在SD卡根目录。(我只下载了简体中文和英文的语言包)

下面是几张识别截图(前两张是识别的手机照片,后一张是识别的示例图片):

    

 

最后的效果是,能识别一些比较规整的文字,照片的话最好只裁剪文字部分去识别(而且要照的比较清晰)。

也能识别一些简单的英文、数字验证码。

识别有待提高,速度也有待提高。

下面是源代码,语言包等下载地址:

CSDN下载

百度网盘下载

tessdata是语言包 需要放到手机SD卡根目录
tess-two是OCR引擎(是基于3.01版编译的,现在已经有3.02版本了),需要导入到项目中(项目中已经导入)