Tesseract-OCR 字符识别---样本训练

原创 2012年12月25日 22:08:21

        Tesseract是一个开源的OCR(Optical Character Recognition,光学字符识别)引擎,可以识别多种格式的图像文件并将其转换成文本,目前已支持60多种语言(包括中文)。 Tesseract最初由HP公司开发,后来由Google维护,目前发布在Googel Project上。地址为http://code.google.com/p/tesseract-ocr/


使用默认的语言库识别


1.安装Tesseract

        从http://code.google.com/p/tesseract-ocr/downloads/list下载Tesseract,目前版本为Tesseract3.02。因为只是测试使用,这里直接下载winodws下的安装文件tesseract-ocr-setup-3.02.02.exe。安装成功后会在相应磁盘上生成一个Tesseract-OCR目录。通过目录下的tesseract.exe程序就可以对图像字符进行识别了。
2.准备一副待识别的图像,这里用画图工具随便写了一串数字,保存为number.jpg,如下图所示:
        

3.  打开命令行,定位到Tesseract-OCR目录,输入命令:

 tesseract.exe number.jpg result -l eng

     其中result表示输出结果文件txt名称,eng表示用以识别的语言文件为英文。

3.  打开Tesseract-OCR目录下的result.txt文件,看到识别的结果为7542315857,有3个字符识别错误,识别率还不是很高,那有没有什么方法来提供识别率呢?

      其实Tesseract提供了一套训练样本的方法,用以生成自己所需的识别语言库。下面介绍一下具体训练样本的方法。


     


训练样本


关于如何训练样本,Tesseract-OCR官网有详细的介绍http://code.google.com/p/tesseract-ocr/wiki/TrainingTesseract3。这里通过一个简单的例子来介绍一下如何进行样本训练。

1.下载工具jTessBoxEditor. http://sourceforge.net/projects/vietocr/files/jTessBoxEditor/,这个工具是用来训练样本用的,由于该工具是用JAVA开发的,需要安装JAVA虚拟机才能运行。

2. 获取样本图像。用画图工具绘制了5张0-9的文样本图像(当然样本越多越好),如下图所示:

  

  


3.合并样本图像。运行jTessBoxEditor工具,在点击菜单栏中Tools--->Merge TIFF。在弹出的对话框中选择样本图像(按Shift选择多张),合并成num.font.exp0.tif文件。4.生成Box File文件。打开命令行,执行命令:
  tesseract.exe num.font.exp0.tif num.font.exp0 batch.nochop makebox

  生成的BOX文件为num.font.exp0.box,BOX文件为Tessercat识别出的文字和其坐标。

注:Make Box File的命令格式为:

  tesseract [lang].[fontname].exp[num].tif [lang].[fontname].exp[num] batch.nochop makebox

其中lang为语言名称,fontname为字体名称,num为序号,可以随便定义。

5.文字校正。运行jTessBoxEditor工具,打开num.font.exp0.tif文件(必须将上一步生成的.box和.tif样本文件放在同一目录),如下图所示。可以看出有些字符识别的不正确,可以通过该工具手动对每张图片中识别错误的字符进行校正。校正完成后保存即可。




6.定义字体特征文件。Tesseract-OCR3.01以上的版本在训练之前需要创建一个名称为font_properties的字体特征文件。

font_properties不含有BOM头,文件内容格式如下:

<fontname> <italic> <bold> <fixed> <serif> <fraktur>

其中fontname为字体名称,必须与[lang].[fontname].exp[num].box中的名称保持一致。<italic> 、<bold> 、<fixed> 、<serif>、 <fraktur>的取值为1或0,表示字体是否具有这些属性。

这里在样本图片所在目录下创建一个名称为font_properties的文件,用记事本打开,输入以下下内容:

font 0 0 0 0 0
这里全取值为0,表示字体不是粗体、斜体等等。

7.生成语言文件。在样本图片所在目录下创建一个批处理文件,输入如下内容。

rem 执行改批处理前先要目录下创建font_properties文件

echo Run Tesseract for Training..
tesseract.exe num.font.exp0.tif num.font.exp0 nobatch box.train

echo Compute the Character Set..
unicharset_extractor.exe num.font.exp0.box
mftraining -F font_properties -U unicharset -O num.unicharset num.font.exp0.tr

echo Clustering..
cntraining.exe num.font.exp0.tr

echo Rename Files..
rename normproto num.normproto
rename inttemp num.inttemp
rename pffmtable num.pffmtable
rename shapetable num.shapetable 

echo Create Tessdata..
combine_tessdata.exe num.

将批处理通过命令行执行。执行后的结果如下:


需确认打印结果中的Offset 1、3、4、5、13这些项不是-1。这样,一个新的语言文件就生成了。

num.traineddata便是最终生成的语言文件,将生成的num.traineddata拷贝到Tesseract-OCR-->tessdata目录下。可以用它来进行字符识别了。


使用训练后的语言库识别


用训练后的语言库识别number.jpg文件, 打开命令行,定位到Tesseract-OCR目录,输入命令:

tesseract.exe number.jpg result -l eng

识别结果如如图所示,可以看到识别率提高了不少。通过自定义训练样本,可以进行图形验证码、车牌号码识别等。感兴趣的朋友可以研究研究。


tesseract 3.02 训练字库全解

tesseract 3.02https://code.google.com/p/tesseract-ocr/downloads/list
  • mengfick
  • mengfick
  • 2014-07-23 00:51:39
  • 3870

Tesseract-OCR字符训练工具及方法

最近参加了一个人工智能的竞赛,主要完成的工作是扫描识别广告排、包装盒上的文字,包括中文、英文、和数字,后续会有些编辑、翻译的功能。 先看几张要识别的样张: 第一张是比较正...
  • shaozhenged
  • shaozhenged
  • 2016-10-08 14:55:42
  • 8720

如何训练Tesseract 4.0

原文:https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesseract-4.00 tesseract 4.0之后开始使用...
  • huobanjishijian
  • huobanjishijian
  • 2017-07-27 17:38:26
  • 7165

tesseract_ocr 字符识别基础及训练字库、合并字库

最近公司让我做文字串识别,通过查阅资料,谷歌的开源框架 tesseract-ocr可以帮助我们进行识别,他可以识别多种语言(一些常用的语言),多种图片格式,非常强大。 首先体验一下tesseract的...
  • why200981317
  • why200981317
  • 2015-09-08 15:09:29
  • 21387

Python2.7利用Tesseract进行中英文图像识别

背景环境:  win8.1  64位   python2.7.13   本以为会很简单,结果在配置环境这块上花了很多时间,踩了几个坑,最后自己看英文文档和log才解决问题。 打开网...
  • cjvs9k
  • cjvs9k
  • 2018-01-12 15:47:13
  • 1065

Tesseract:训练

Tesseract:训练 05 May 2015 目录 资源文件资源文件的训练 数据准备图像与BOX文件生成字符集文件与字体信息文件生成特征文件生成聚集[可选]添加配置文件...
  • chudongfang2015
  • chudongfang2015
  • 2016-07-15 18:39:03
  • 2536

tesseract-ocr 第四课 如何训练新语言

2013-03-30 16:40:23|  分类: 机器学习、mining|举报|字号 订阅      ...
  • oMingZi12345678
  • oMingZi12345678
  • 2016-07-20 14:10:11
  • 4006

Tesseract-OCR 训练中文

为了提高Tesseract库的中文识别率,可以对它进行中文字的训练。 1.首先安装Tesseract。这里注意要安装,因为安装的程序里面包含其他训练用到的程序,编译版本没有这些工具。 2....
  • yongshi6
  • yongshi6
  • 2016-03-01 18:35:37
  • 6892

Windows下Tesseract4.0识别与中文手写字体训练

一 、 tesseract 4.0 安装及使用 1. tesseract 4.0 安装 安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tes...
  • dcrmg
  • dcrmg
  • 2017-10-14 12:37:52
  • 6337

Tesseract-ocr训练字库方法图解

  • 2017年03月20日 11:29
  • 282KB
  • 下载
收藏助手
不良信息举报
您举报文章:Tesseract-OCR 字符识别---样本训练
举报原因:
原因补充:

(最多只允许输入30个字)