环境vs2008 c++
写本文的时候,tess已经4.0,但是因为不再支持vs2008,我只能找到支持我IDE最后一个版本,3.0.2,庆幸它支持识别中文。
为什么不用vs2015,因为他要用到stdint.h(是c99中引进的一个标准C库的文件),我不要,因为升上去,字符集会变化,我代码量太多,改动太大对生产系统有风险,无法在有限的时间完成全量测试。
因为我要用api,分为几步:
1、下载
到了2017年某法规实施后,googlecode早就连不上了,原因大家懂的。
(***)源代码可以通过github下载。https://github.com/tesseract-ocr/tesseract/tree/3.02.02
(***)语言文件可以通过sourceforge下载,https://sourceforge.net/projects/tesseract-ocr-alt/files/?source=navbar
(***)环境安装步骤,可以参照
2、编译
需要leptonica-1.68-win32-lib-include-dirs.zip,因为我只需要调用api,不需要跨IDE编译,所以不写了
3、调用api
这没难度,不写了
init完记得end,否则内存不够你用。
多线程:记得在项目属性中,x86编译记得打开【支持大于 2 GB 的地址(/LARGEADDRESSAWARE)】,否则多线程内存地址不够用,40个线程,瞬间撑爆,异常退出,本机16G内存,所以不是物理内存不足的问题,而是编译时的问题。是不是这个问题可以做个试验,vector<int> vet_test; while(1) {vet_test.push_back(1);} 崩溃时去任务管理器看看内存占用多少,基本在2G边缘。
4、训练
(***)官方指导性文章,强烈建议完整阅读,https://github.com/tesseract-ocr/tesseract/wiki/Training-Tesseract-3.00%E2%80%933.02
(***)中文优秀范例,感谢,给了很大启发,http://www.cnblogs.com/zhongtang/p/5555950.html
(***)中文说明(文中第一部分),http://blog.csdn.net/tuling_research/article/details/41091163
注意:训练时,报错就是错了,一定有问题,不要再继续训练了,无用功。
5、思路
(***)数字,中规中矩的字,用eng训练,修正,导出自己的语言包1。再用语言包1+eng再次验证,修正,导出自己的语言包2。再用语言包2+语言包1+eng再次验证,修正,导出自己的语言包3。。。。。以此类推,直至完美
(***)汉字,中规中矩的字,如果是有限集合的字,用chi_sim解包,利用chi_sim.unicharambigs去修正【一个字拆分成2个字的情况】
(***)自己创造语言?多次尝试失败,搁置。
训练的要点:每次训练的样本必须全量,对于同一个字,样本越多越好,官网说10个比较合适