Tesseract-oct识别中文及训练

这几天研究了一下tesseract 的图片文字识别,识别率还是很高的,能达到95%的样子。

1.下载tesseract-ocr-setup-3.01-1.exe安装包,安装好后会在目录下面有个tessdata的目录,里面放的是语言字库文件,在后面训练出来的语言库也要放在这里面。其他就是我们要使用的应用程序。

2.安装好的工具只能识别英文,要识别中文就得在http://tesseract-ocr.googlecode.com/files/chi_sim.traineddata.gz下载中文字库文件。解压后chi_sim.traineddata。需把它放在安装包的tessdata目录下面。

3.使用tesseract识别图片文字:

1>.打开命令行界面,进入到tesseract.exe目录,输入命令tesseract.exe   xxx.jpg  result  -l  chi_sim 。执行正确后会在你的程序目录下面出现一个result.txt文件,打开这个txt文件和图片上的文字比对正取率。可以知道识别率的高低。

  2>.识别的图片是有要求的,图片上的文字要求简明,字迹清晰,标准字体、清晰无干扰的图片文字。

  3>.对于图片文字干扰大的,不予识别,

  4>.文字上面有盖章等覆盖的不予识别。

          5>.对图片上面文字部分倾斜小于10度以上的,识别率非常低,要求倾斜度越小识别率越高,

          6>.手写字不能识别,需标准的打印字体。

4.对于一些识别出现问题的文字,我们可以通过训练来识别。

1>.需要的工具有,jTessBoxEditor,这个工具用来编辑训练文件的,自行下载。需要说明的是这个工具是Java写成的,运行需要安装jre。怎样安装自行查找方法。

2>.一张用来训练的tif格式的图片。这个可以使用jTessBoxEditor 来转换。打开jTessBoxEditor 工具,选择tools->Merge Tiff 就可以制作成tif的格式。

可以见面的步骤:

1.通过合并10张如上图的图片合并为一张tiff格式的图片,如何合并呢?通过jTessBoxEditorMerge Tiff 来完成,不过他的小缺点就是只能合并多张tiff格式的,如果你的图片是jpg的,需要先转换。生成后的tiff图片叫做orderNo.tif

2.Make Box Files。在orderNo.tif所在的目录下打开一个命令行,输入:

E:\Tesseract-ocr\tesseract.exe orderNo.tif orderNobatch.nochop makebox

来生成一个box文件,该文件记录了tesseract识别出来的每一个字和其位置坐标。

3.使用jTessBoxEditor打开orderNo.tif文件,需要记住的是第2步生成的orderNo.box要和这个orderNo.tif文件同在一个目录下。逐个校正文字,后保存。

4.Run Tesseract for Training。输入命令:

E:\Tesseract-ocr\tesseract.exe orderNo.tif orderNo nobatchbox.train

5.Compute the Character Set。输入命令:

E:\Tesseract-ocr\unicharset_extractor.exe orderNo.box

6.新建文件“font_properties”。如果是3.01版本,那么需要在目录下新建一个名字为“font_properties”的文件,并且输入文本 :

orderNo 0 0 0 0 0

大致意思就是说orderNo这个语言的字体为普通字体。

并执行命令:

E:\Tesseract-ocr\mftraining.exe -F font_properties -Uunicharset orderNo.tr

7.Clustering。输入命令:

E:\Tesseract-ocr\cntraining.exe orderNo.tr

8.此时,在目录下应该生成若干个文件了,把unicharset,inttemp, normproto, pfftable这四个文件加上前缀“orderNo.”。然后输入命令:

E:\Tesseract-ocr\combine_tessdata.exe orderNo.

会显示一个结果如:

Combining tessdata files 
TessdataManager combined tesseract data files. 
Offset for type 0 is -1 
Offset for type 1 is 108 
Offset for type 2 is -1 
Offset for type 3 is 1660 
Offset for type 4 is 327545 
Offset for type 5 is 327781 
Offset for type 6 is -1 
Offset for type 7 is -1 
Offset for type 8 is -1 
Offset for type 9 is -1 
Offset for type 10 is -1 
Offset for type 11 is -1 
Offset for type 12 is
1

必须确定的是第2456行的数据不是-1,那么一个新的字典就算生成了。

此时目录下“orderNo.traineddata”的文件拷贝到tesseract程序目录下的“tessdata”目录。

以后就可以使用该该字典来识别了,例如:

tesseract.exe test.jpg resultl orderNo

到这里就完成了训练。可以查看识别率了。


你可能感兴趣的:(学习)