使用 OCR 识别验证码
2011-01-07 10:18
[ocr]
tesseract-ocr 是一个历史悠久的 OCR 引擎,代码位于 http://code.google.com/p/tesseract-ocr/。现在由 Google 开发。几年间代码有了很多 Google 的风格,也相对成熟稳定了一些。对于简单英文字符有很高的识别率。
在代码顶层目录执行
TESSDATA_PREFIX=./ api/tesseract 1.jpg 1 -l eng
解释一下:
TESSDATA_PREFIX 是环境变量,该目录下有 tessdata/
下面应该有 configs/ eng.traineddata 等
tesseract 是 OCR 识别程序
1.jpg 是需要识别的图像文件
1 会生成 1.txt 的识别结果
-l eng 是指应用训练库 eng.traineddata 进行识别
一般难度的验证码,如
tesseract-ocr 没有关于layout analysis,如果先对图像预处理,会有更高的效果。
如果针对图像训练会有意想不到的效果。但是其wiki里的文档没有说太明白
过程如下:
- 先生成box文件,可能有错误
api/tesseract 1.jpg 1 makebox
api/tesseract 1.jpg 2 makebox
- 使用 python 的编辑器,调整 box 文件内矩形数据的正确性
python tesseractTrainer.py
- 开始训练。
api/tesseract 1.jpg {output} box.train
api/tesseract 2.jpg {output} box.train
...
- 对训练结果进行转换
training/mftraining *.tr
training/cntraining *.tr
training/unicharset_extractor *.box
cp unicharset tessdata/rr.unicharset
cp pffmtable tessdata/rr.pffmtable
cp inttemp tessdata/rr.inttemp
cp normproto tessdata/rr.normproto
- 合并成 rr.traineddata
cd tessdata
../training/combine_tessdata rr.
之后就可以使用-l rr来识别了