pytesseract的简单验证码的识别-python

验证码一直作为识别人类和机器的工具。作为广为使用的限制机器访问的利器。识别验证码基本上有三个方案。 一:人眼识别,手动输入   二:Tesseract对简单验证码的识别。  三:半自动的云打码平台,帮你24小时识别验证码。


第一种最简单啦,只需要将验证码图片提取下来,自己手动识别就行,但是效率低下,繁琐。对于需要经常大量识别验证码的情况,更本不可取。


今天就来讲下第二种。对于简单验证码的自动识别。 基于python 3.6   ,Windows系统
所需工具: 
PIL  (python图片处理库)
pytesseract (python库,用于调用Tesseract 引擎进行验证码识别)
Tesseract-OCR (一个验证码识别引擎,google开源项目)
安装:
pip3 install pillow ( pillow 是windows下的PIL库的精简版,使用方法同PIL一样)
pip3 install pytesseract 
下载Tesseract-OCR 引擎windows安装版,网址:
http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-3.05.01dev-20170510.exe
默认选线安装即可。安装位置可自定义,假设为:H:\Program Files\Tesseract-OCR


好的,然后直接在python中就可使用了
import pytesseract
from PIL import Image


img = Image.open('C:\\Users\Administrator\Desktop\\test-european.jpg')
s = pytesseract.image_to_string(img)
print(s)


如果你自定义了安装位置,则会报错,找不到文件,解决方法如下:
 1 . 到python安装文件下找到 site-packages/pytesseract/pytesseract.py  修改里面内容:
# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
# tesseract_cmd = 'tesseract'
tesseract_cmd = 'H:\Program Files\Tesseract-OCR\\tesseract.exe'
指定Tesseract 识别引擎的绝对路径。


2 . 除了Tesseract 引擎位置,还需要tessdata文件夹里的数据。自定义 tessdata文件夹路径:还是在pytesseract.py 文件中修改:
command = [tesseract_cmd, input_filename, output_filename_base]
my_env = {"TESSDATA_PREFIX":"H:\Program Files\Tesseract-OCR\\tessdata"}  #自定义的文件夹路径


if lang is not None:
command += ['-l', lang]


if boxes:
command += ['batch.nochop', 'makebox']


if config:
command += shlex.split(config)
# 将文件夹路径传递给对象,覆盖原路径
proc = subprocess.Popen(command,env=my_env , stderr=subprocess.PIPE)


OK,这样再次运行就可以得到识别后的结果,但是此引擎的只适用于简单验证码,复杂一点的验证码,可以借助PIL库进行图片处理,比如切块,去噪,二值化等等。
  但对于一些特别复杂的验证码,这个方案就没办法了。论识别率的话,最高的只有云打码平台了,毕竟也是靠人眼识别。另外,机器学习或许可以一试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值