开源OCR引擎Tesseract
知名的开源OCR引擎Tesseract 3.0版本日前发布,可以在项目网站下载:http://code.google.com/p/tesseract-ocr, 新版本支持中文,中文语言包定义http://code.google.com/p/tesseract-ocr/downloads/detail?name=chi_sim.traineddata.gz。
Tesseract是Ray Smith于1985到1995年间在惠普布里斯托实验室开发的一个OCR引擎,曾经在1995 UNLV精确度测试中名列前茅。但1996年后基本停止了开发。2006年,Google邀请Smith加盟,重启该项目。目前项目的许可证是Apache 2.0。该项目目前支持Windows、Linux和Mac OS等主流平台。但作为一个引擎,它只提供命令行工具。
执行识别图像的命令格式为:
tesseract <imagename> <outputbase> [-l lang] [configfile [[+|-]varfile]...]
其中tesseract是命令;<imagename>是待识别的图片,例如图片 eurotext.tif;<outputbasename>是输出文本文件的名称,默认生成的是你所给定的输出文件名称,加上.txt扩展名;[-l lang]可选的,指定识别图像中的语言。
Tesseract还有相应的.net版本,下载地址如下:http://www.pixel-technology.com/freeware/tessnet2/。另外发现这个用法非常简单,注意还需要下载语言包,另外为了提高验证率,还可以自己进行训练,tesseract-OCR还支持训练功能,以提高(对不同字体的)识别效率或者对新语种的支持。大致就是通过给定的包含已知字符的tiff文件生成相应的box文件,经过手工更正后,训练tesseract-OCR的识别能力。也可以用一些训练工具完成这个过程。
Tesseract是图盲,默认情况下只能看得懂未压缩的TIFF图像,如果直接用tesseract处理其它格式的图片,会报错如下:
Tesseract Open Source OCR Engine
name_to_image_type:Error:Unrecognized image type:code.jpg
IMAGE::read_header:Error:Can’t read this image type:code.jpg
tesseract:Error:Read of file failed:code.jpg
所以我们需要用ImageMagick来转换图片格式,ImageMagick (TM) 是一个免费的创建、编辑、合成图片的软件。它可以读取、转换、写入多种格式的图片。图片切割、颜色替换、各种效果的应用,图片的旋转、组合,文本,直线,多边形,椭圆,曲线,附加到图片伸展旋转。ImageMagick是免费软件:全部源码开放,可以*使用,复制,修改,发布。它遵守GPL许可协议。它可以运行于大多数的操作系统。ImageMagick的大多数功能的使用都来源于命令行工具。通常来说,它可以支持以下程序语言: Perl, C, C++, Python, PHP, Ruby, Java;现成的ImageMagick接口(PerlMagick, Magick++, PythonMagick, MagickWand for PHP, RubyMagick, and JMagick)是可利用的。这使得自动的动态的修改创建图片变为可能。ImageMagick支持至少90种图片格式: A, ART, AVI, AVS, B, BIE, BMP, BMP2, BMP3, C, CACHE, CAPTION, CIN, CIP, CLIP, CLIPBOARD, CMYK, CMYKA, CUR, CUT, DCM, DCX, DNG, DOT, DPS, DPX, EMF, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, FAX, FITS, FPX, FRACTAL, G, G3, GIF, GIF87, GRADIENT, GRAY, HDF, HISTOGRAM, HTM, HTML, ICB, ICO, ICON, JBG, JBIG, JNG, JP2, JPC, JPEG, JPG, JPX, K, LABEL, M, M2V, MAP, MAT, MATTE, MIFF, MNG, MONO, MPC, MPEG, MPG, MSL, MTV, MVG, NULL, O, OTB, P7, PAL, PALM, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PFA, PFB, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG24, PNG32, PNG8, PNM, PPM, PREVIEW, PS, PS2, PS3, PSD, PTIF, PWP, R, RAS, RGB, RGBA, RGBO, RLA, RLE, SCR, SCT, SFW, SGI, SHTML, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, TIF, TIFF, TILE, TIM, TTC, TTF, TXT, UIL, UYVY, VDA, VICAR, VID, VIFF, VST, WBMP, WMF, WMFWIN32, WMZ, WPG, X, XBM, XC, XCF, XPM, XV, XWD, Y, YCbCr, YCbCrA, YUV,具体参考http://www.imagemagick.com.cn/。
ImageMagick .NET的相关项目:
Use MagickNet to convert, compose, and edit images from Windows .NET.
ImageMagickApp is a .NET application written in C# that utilizes the ImageMagick command line to allow conversion of multiple image formats to different formats.
假设需要识别的图片验证码为code.jpg,我们需要做的只有两步:
d:\ImageMagick\convert.exe -compress none -depth 8 -alpha off ./code.gif ./code.tif
D:\\tesseract\\tesseract.exe ./code.tif ./result
结果就在文本文件./result.txt里面了,tesseract会自动地在./result后面添加上后缀名.txt。然后再对两个命令做点解释。
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图层。如果没有此参数,后果同上。
紧跟着就是待转换的图片的文件名,最后是转换后的图片的文件名。