Python 的OCR机制分析验证码


在用QTP做automation的时候总会遇到烦人的验证码,尝试从技术角度出发去解决,不知为什么QTP10之后对OCR的识别能力有所下降,无奈考虑其他的办法

今天搜索了大量的网站,终于有了一些小成就,不过还是只能识别一些简单的验证码,当验证码中的干扰素多的情况下识别能力还是不够给力

以下为代码+测试片段:

  1. from PIL import Image  
  2. from pytesser import *  
  3.   
  4. def captcha(inputPic):  
  5.       
  6.     img = Image.open(inputPic) # Your image here!   
  7.     img = img.convert("RGBA")  
  8.   
  9.     pixdata = img.load()  
  10.   
  11.     # Make the letters bolder for easier recognition   
  12.   
  13.     for y in xrange(img.size[1]):  
  14.         for x in xrange(img.size[0]):  
  15.              if pixdata[x, y][0] < 90:  
  16.                  pixdata[x, y] = (000255)  
  17.   
  18.     for y in xrange(img.size[1]):  
  19.         for x in xrange(img.size[0]):  
  20.              if pixdata[x, y][1] < 136:  
  21.                  pixdata[x, y] = (000255)  
  22.   
  23.     for y in xrange(img.size[1]):  
  24.         for x in xrange(img.size[0]):  
  25.             if pixdata[x, y][2] > 0:  
  26.                 pixdata[x, y] = (255255255255)  
  27.   
  28.     img.save("c:\\input-black.gif""GIF")  
  29.   
  30.     #   Perform OCR using tesseract-ocr library   
  31.     return image_file_to_string('c:\\input-black.gif')  
  32.   
  33. if __name__ == '__main__':  
  34.     print captcha('c:\\untitled.bmp')  

注:需要依赖于PIL和pyTesser

PIL:http://www.pythonware.com/products/pil/

pyTesser:http://code.google.com/p/pytesser/

相关内容