首页 > 代码库 > 使用ImageMagick和Tesseract进行简单数字图像识别
使用ImageMagick和Tesseract进行简单数字图像识别
使用ImageMagick和Tesseract进行简单数字图像识别
由于直接使用 tesseract 进行识别,识别率很低,
ImageMagick 安装、配置及使用:
平台:winXP
1. 安装ImageMagick(ImageMagick website:http://www.imagemagick.org/script/index.php)
下载并安装ImageMagick。 http://www.imagemagick.org/script/binary-releases.php#windows
输入 convert -version 验证是否成功
d:\>convert -versionVersion: ImageMagick 6.8.9-4 Q16 x64 2014-06-22 http://www.imagemagick.orgCopyright: Copyright (C) 1999-2014 ImageMagick Studio LLCFeatures: DPC Modules OpenMPDelegates: bzlib cairo freetype jbig jng jp2 jpeg lcms lqr pangocairo png ps rsvg tiff webp xml zlib
如果命令不能使用把install path加入系统path,以便能调用dll.如D:\Program Files\ocr\ImageMagick-6.8.9-Q16
下面介绍怎么用Tesseract配合ImageMagick进行简单的数字图像识别。
首先Tesseract只能识别bmp,tif,所以先拿ImageMagick转换一下图像。注意得无压缩转换,否则Tesseract报错。
convert -compress none ./S16.gif./S16.tif
然后将图片灰度化-colorspace Gray,或者直接二值化-monochrome成黑白,这样识别率会高一点。
接下来裁剪出想要进行精确识别的部分:-crop widthxheight+x+y
比如-crop 320x40+0+1,从左上角开始坐标为(0,1)处,裁剪出320*40大小的图像。注意参数里是英文字母x,不是乘号*。
还有就是网上搜到的-depth 8和-alpha off参数,实践表明加不加效果不大。
一步完成就像这样:
convert -compress none -depth 8 -alpha off -crop 535x24+2+2 -monochrome ./S16.gif ./S16.tif
convert.exe:ImageMagick套件的一部分,负责图片格式转换,各个参数的意义如下:
- -compress none:转换后的图片不要压缩,如果没有加这一项,后续tesseract处理的时候会报错:read_tif_image:Error:Illegal image format:Compression
- -depth 8:设置转换后图像的色深为8位,也就是bpp为8。如果没有此参数,后果如下:
Tesseract Open Source OCR Engine
check_legal_image_size:Error:Only 1,2,4,5,6,8 bpp are supported:16
Segmentation fault
- -alpha off:在转换后的图像中不要添加alpha图层。如果没有此参数,后果同上。
- -crop 320x40+0+1:从左上角开始坐标为(0,1)处,裁剪出320*40大小的图像。注意参数里是英文字母x,不是乘号*。
- 紧跟着就是待转换的图片的文件名,
- 最后是转换后的图片的文件名。
预处理完之后最好再放大一下,这次的样例放大到500%~600%的识别效率就能令人满意。
convert ./S16.tif -scale 600% ./S16B.tif
然后就可以开始用Tesseract进行识别了。
tesseract ./S16B.tif ./S16B -l eng -psm 7
-l eng是选择语言,-psm 7是说源图像是只在一行上的文字。具体说明看Tesseract的帮助。