当前位置:首页 >> 计算机软件及应用 >>

Android的tesseract-ocr训练实例


Android 的 tesseract-ocr 的训练实例
我们可以根据自己的需求来训练一套自己的识别库的, 比方说我们要识别验证码, 识别身份 证号码等,我们就可以用下面的方法来训练一套识别库。 网上关于 OCR 训练的方法很多,我是参照网上两篇文章来训练的,链接附在正文后面,下 面结合我的操作经验来说下训练的过程。 首先我们需要下面几个工具: tesseract-ocr-3.01,上面两篇文章都是用这个版本 jTessBoxEditor, 该工具是用 java 写的 box 编辑器,要有 JAVA 虚拟机才行,需安装 jre,如果搞 Android 开发之前装过 JDK 的话就不用再装 jre,因为在装 JDK 的时候就会装 jre。

1、 先新建一个 trainocr 文件夹,将上面两个文件拷贝进来,然后解压这两个文件,我们进入 Tesseract-ocr 文件夹下新建一个 temp 文件夹。

2、接下来我们准备好我们需要训练的素材如下图

要想提高识别率,我们需要提供多张像上面这样的图片,图片格式需要为 tiff 格式的,可以通过 windows 自带的画图工具来另存 为 tiff 格式,或者用 matlab 函数进行转换,我的素材文件名都是 t+数字+.jpg,转换为 t+数字+.tif,以下是 jpg 转 tif 的 matlab 代 码:

clear all;clc int num; for num = 1:18; string filename; filename=strcat('t',num2str(num)); filename=strcat(filename,'.jpg'); A=imread(filename); newfilename=strcat('t',num2str(num),'.tif'); imwrite(A,newfilename); end
准备好多张图 tiff 图片后,打开 jTessBoxEditor.jar,打开方式和界面如下图

在此之前我们需要在第 1 步建立的 temp 文件夹下新建一个 num.tif 的文件,接下来我们选择 tool–>Merge TIFF 然后选择准备 好的多张 tiff 图片,注意这里是全部选中,然后点击打开,然后选中我们刚刚建立的 num.tif 文件,点击保存,这样我们就将多 张 tiff 图片 merge 到了一个文件里面了。

3、接下来我们开始生成 box 文件了,cmd 命令行进入 temp 文件夹下,然后输入如下命令 E:|\software\Trainocr\Tesseract-ocr\temp>..\tesseract.exe num.tif num batch.nochop makebox

输入完后会在 temp 文件夹下多了个 num.box 文件,该文件记录了识别出来的每个字和它对应的位置坐标。

4、使用 jTessBoxEditor, 我们切换到 Box Editor,然后 open 打开 num.tif 文件,需要记住的是第 2 步生成的 num.box 要和这个 num.tif 文件同在一个目录下。通过右上角的 X,Y,W,H 对每个需要改正的字符进行调整,逐个校正文字,后保存。

5、Run Tesseract for Training。输入命令: ..\tesseract.exe num.tif num nobatch box.train

6、接下来是计算字符集,输入如下命令

..\unicharset_extractor.exe num.box

7、接下来我们需要在 temp 文件夹下建一个 font_properties 文件,3.01 版本的 OCR 需要这个文件,该文件的目的是提供输出 时识别出来的字体样式信息,文件的格式为 <fontname> <italic> <bold> <fixed> <serif> <fraktur> timesitalic 1 0 0 1 0 我们可以根据实际情况新建 font_properties,我写的是 num 0 0 0 0 0 意思是普通字体,没有任何格式。 然后执行以下命令 ..\mftraining.exe -F font_properties.txt -U unicharset num.tr

8、Clustering,输入命令 ..\cntraining.exe num.tr

9、此时在 temp 文件夹下已经有很多文件了,需要把 inttemp,Microfeat,normproto,pffmtable,unicharset 这几个文件加上 前缀 num. (注意有个点号),然后输入以下命令 ..\combine_tessdata.exe num. 出来的结果中我们需要确定 type 1, type3, type4, type5 对应的后面数据不能为-1, 这样我们就可以用这个新字典来识别了, 将生成的 num.traineddata 文件就是我们所学要的语言包了。

测试结果: 如果用 eng. traineddata 进行识别的话,对某些字体的数字识别率很低。

如果用自己训练的 num. traineddata 进行识别的话,对某些字体的数字识别率明显提高了。

【参考文章】 : http://my.oschina.net/lixinspace/blog/60124 http://blog.csdn.net/djun100/article/details/25753727 这两篇文章都是比较好的教程 ,


相关文章:
提高Tesseract-ocr识别精度
在此我们利用 Tesserac-ocr 3.02 训练生成新的识别语言库, 我们找到两种 Tesseract-ocr 的训练方法:A.使用 jTessBoxEditor 工具 B.使用 CowBoxer 工具。为了能够...
Tesseract字库训练说明
Tesseract字库训练说明_计算机软件及应用_IT/计算机_专业资料。Tesseract字库训练,...便是最终生成的语言文件,将生成的 my.traineddata 拷贝到 Tesseract-OCR-->...
如何提高Tesseract-OCR的识别精度
如何提高 Tesseract-OCR 的识别精度概述: 本文介绍了提高 Tesseract-OCR 识别精度的步骤及注意事项。 通过对 Tesseract-OCR 的训练能有效提高 Tesseract-OCR 的识别...
Android项目开发实战笔记
Android项目开发实战笔记_计算机软件及应用_IT/计算机_专业资料。Android项目开发...进行组件的实例化 o) p) 增加了监听器接口,并重写了相关的方法 q) r) s)...
Tesseract3.02中文字库训练
Tesseract3.02中文字库训练_计算机软件及应用_IT/计算机_专业资料。[转]Tesseract 3.02 中文字库训练下载 chi_sim.traindata 字库 下载 tesseract-ocr-setup-3.02....
34个最实用的Android精彩案例源码
34个最实用的Android精彩案例源码_计算机软件及应用_IT/计算机_专业资料。网络搜集的34个Android 精彩源码,最实用的源码 34 个 Android 精彩案例源码 0 主要带大家...
Tesseract_3_语言数据的训练方法
.003 -l test batch.nochop makebox 这里仅仅是使用 3 个原始文件作为例子。...识别训练 暂无评价 6页 1下载券 ocr tesseract使用方法 1页 免费 MATLAB...
Android NFC开发实例讲解
Android NFC 开发实例:学生卡数据读 取 2013-01-23 13:35 佚名 cnblogs 我要评论(0) 字号:T | T NFC 功能现在越来越通用了, Google 也为我们准备了详细的...
分享45个android实例源码
分享45个 分享 个 android 实例源码 分享45个 android 实例源码,很好很强大 http://www.apkbus.com/android-20978-1-1.html andriod 闹钟源代码 http://www....
Android移动应用试题(带答案)
Android移动应用试题(带答案)_其它考试_资格考试/认证_教育专区。<<Android 移动...每次调用 Context 类中的 StartService()方法后都会新建一个 Service 实例 C....
更多相关标签: