【背景】
从:
得知了一个Python库:
PyTesser
http://code.google.com/p/pytesser/
https://pypi.python.org/pypi/PyTesser/0.0.1
所以,打算试试,用其能否解析之前解决不了的,网易163博客中的验证码。
【折腾过程】
1.从
http://code.google.com/p/pytesser/downloads/list
下载得到pytesser_v0.0.1.zip,解压后,看到
pytesser_v0.0.1\README
说是,无需安装,直接解决即可使用。
2.试了试下面代码:
#!/usr/bin/python # -*- coding: utf-8 -*- """ ------------------------------------------------------------------------------- Function: 【记录】尝试使用PyTesser解析网易163博客中的验证码 https://www.crifan.com/try_use_pytesser_decode_netease_163_captcha Autor: Crifan Li Date: 2013-04-02 ------------------------------------------------------------------------------- """ #---------------------------------import--------------------------------------- import sys; sys.path.append("pytesser_v0.0.1"); from PIL import Image; from pytesser import * def pytesser_try_decode_163captcha(): """ try to use PyTesser to decode 163 captcha """ testCaptchaPic = "test_captcha_pic/captcha.gif"; image = Image.open(testCaptchaPic); # Open image object using PIL print image_to_string(image); # Run tesseract.exe on image print image_file_to_string(testCaptchaPic); ############################################################################### if __name__=="__main__": pytesser_try_decode_163captcha();
去运行,结果直接导致,Win7弹出出错的对话框,告诉当前程序停止运行:
python.exe has stopped working
后来发现在当前文件夹下面,生成一个temp.bmp图片文件,是黑色背景的,空的图片。
3.发现其下有那个测试文件:
fnord.tif
所以去试试:
#testCaptchaPic = "test_captcha_pic/captcha.gif"; testCaptchaPic = "pytesser_v0.0.1/fnord.tif"; image = Image.open(testCaptchaPic); # Open image object using PIL print image_to_string(image); # Run tesseract.exe on image print image_file_to_string(testCaptchaPic);
看看结果如何,结果却是和上面错误一样。
4.才注意到,人家说是此PyTesser,用到了:
但是很明显,此处没有安装。
所以先去
http://code.google.com/p/tesseract-ocr/downloads/list
下载得到,tesseract-ocr-setup-3.02.02.exe
双击安装,完毕后,却又发现,说是此
又依赖于Leptonica:
Dependencies and Licenses Leptonica is required. (www.leptonica.com). Tesseract no longer compiles Libtiff is no longer required as a direct dependency. |
所以,貌似又需要去安装Leptonica。
5.找到Leptonica.com的下面页面:
http://leptonica.com/download.html
从中找到了googlecode:
http://code.google.com/p/leptonica/downloads/list
下载得到vs2008-1.68.zip。
但是对于如何使用,却没完全搞懂。
是编译成dll库?还是其他方式,才能使得,tesseract能够引用到此库?
6.后来是看了说明文档:
leptonica_vs2008-1.68/vs2008/doc/quickstart.html
貌似是需要,编译为dll库,然后供tesseract使用?
貌似需要,去看看PyTesser代码,或许才能搞懂,如何调用tesseract以及tesseract如何用到此Leptonica。
后来是看了:
pytesser_v0.0.1\pytesser.py
中的:
tesseract_exe_name = 'tesseract' # Name of executable to be called at command line scratch_image_name = "temp.bmp" # This file must be .bmp or other Tesseract-compatible format scratch_text_name_root = "temp" # Leave out the .txt extension cleanup_scratch_flag = True # Temporary files cleaned up after OCR operation def call_tesseract(input_filename, output_filename): """Calls external tesseract.exe on input file (restrictions on types), outputting output_filename+'txt'""" args = [tesseract_exe_name, input_filename, output_filename] proc = subprocess.Popen(args) retcode = proc.wait() if retcode!=0: errors.check_for_errors()
才知道,PyTesser是调用同路径下的tesseract.exe,去执行,获得相应的结果的。
那看起来,可以自己此处通过手动执行此tesseract.exe,试试效果。
7.结果却没有任何输出:
D:\tmp\tmp_dev_root\python\tutorial_summary\PyTesser_test\pytesser_v0.0.1>tesseract.exe fnord.tif outputfile.bmp D:\tmp\tmp_dev_root\python\tutorial_summary\PyTesser_test\pytesser_v0.0.1> |
也没看到有outputfile.bmp文件生成。
【总结】
够麻烦的。
算了,暂时不弄了。
等以后有兴趣,有空,再说。
转载请注明:在路上 » 【记录】尝试使用PyTesser解析网易163博客中的验证码