关于中文识别,效果不错并且开源的应该就是Tesseract-OCR了,在Mac下试用了一下,参考了网络上其他人的一些资源,在这里分享一下。
Quick Start
准备工作
- 下载Tesseract-OCR引擎,到github下查看安装过程,Tesseract-OCR WebSize
- 下载chi_sim.traindata字库,没有这个默认不能识别中文。
- 下载JTessBoxEditor,用来训练字库。
开始识别
进入要识别的目录下,键入命令:
1 | tesseract <picture_file> <output_file_name> -l chi_sim |
如果源图是电脑上的生成的,如HTML / PS等在这里效果会不错,但是如果你的源图是拍摄所得,那么效果就不太理想了,因此在这里自己训练字库文件。
训练
将原图转换成tif格式的图片文件,用于后面生成box文件。
tif文件的命名格式
. .exp .tif eg: fiveplus.normal.exp0.tif
- lang: 语言
- fontname: 字体(normal即可)
- num: 下标
生成box文件
1
tesseract fiveplus.normal.exp0.jpg fiveplus.normal.exp0 -l chi_sim batch.nochop makebox
box文件与tif需要在相同目录下。
打开JTessBoxEditor纠正错误,并训练
打开tif文件,开始矫正数据,包括x, y, width, height, char
开始训练
1
tesseract fiveplus.normal.exp0.jpg fiveplus.normal.exp0 nobatch box.train unicharset_extractor fiveplus.normal.exp0.box
新建一个font_properties文件,写入 normal 0 0 0 0 0 表示默认字体。
继续运行:
1
2
3
4
5shapeclustering -F font_properties -U unicharset fiveplus.normal.exp0.tr
mftraining -F font_properties -U unicharset -O unicharset fiveplus.normal.exp0.tr
cntraining fiveplus.normal.exp0.tr然后我们合并生成的5个文件:
1
combine_tessdata normal.
得到文件:normal.traineddata
开始测试结果
1
tesseract <picture_file> <output_file> -l normal
结束
自己训练过后的字库识别效果会好很多,之后就是怎么把多个字库合并成一个字库了,因为不可能一次训练完所有的图片文字的,字库文件是一个叠加过程,在线上环境中我们只需要不停的更新这个字库文件就好了。