python图片识别验证码软件_python识别图片验证码

http://robertgawron.blogspot.hk/2010/11/almost-all-sites-use-images-with-text.html

图片的识别主要有,去色,减噪,去线,分割,二值化,提取特征码

这里比较方便的是使用tesseract

1,准备库

apt-get install python-imaging

pip install Pillow

apt-get install tesseract-ocr

apt-get -f iinstall

wget https://python-tesseract.googlecode.com/files/python-tesseract_0.8-1.5_i386.deb

dpkg -i python-tesseract_0.8-1.5_i386.deb

2,图片处理

这里用到Pillow代替PIL,import改成

from PIL import Image,ImageFilter

用法 XXX.py XX.jpg 100

import sys

import Image

import ImageFilter

def prepare_image(img):

"""Transform image to greyscale and blur it"""

img = img.filter(ImageFilter.SMOOTH_MORE)

img = img.filter(ImageFilter.SMOOTH_MORE)

if 'L' != img.mode:

img = img.convert('L')

return img

def remove_noise(img, pass_factor):

for column in range(img.size[0]):

for line in range(img.size[1]):

value = remove_noise_by_pixel(img, column, line, pass_factor)

img.putpixel((column, line), value)

return img

def remove_noise_by_pixel(img, column, line, pass_factor):

if img.getpixel((column, line)) < pass_factor:

return (0)

return (255)

if __name__=="__main__":

input_image = sys.argv[1]

output_image = 'out_' + input_image

pass_factor = int(sys.argv[2])

img = Image.open(input_image)

img = prepare_image(img)

img = remove_noise(img, pass_factor)

img.save(output_image)

3,识别

这里用到开源OCR库tesseract

开源的软件免费,但相对的说明文件就不足,只有自己查代码

因为验证码一般只有一行,这个

api.SetPageSegMode(tesseract.PSM_AUTO)

改成

api.SetPageSegMode(7)

import tesseract

api = tesseract.TessBaseAPI()

api.Init(".","eng",tesseract.OEM_DEFAULT)

api.SetVariable("tessedit_char_whitelist", "0123456789abcdefghijklmnopqrstuvwxyz")

api.SetPageSegMode(tesseract.PSM_AUTO)

mImgFile = "eurotext.jpg"

mBuffer=open(mImgFile,"rb").read()

result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api)

print "result(ProcessPagesBuffer)=",result

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/259716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ_1253胜利的大逃亡

这道题使用BFS做的&#xff0c;刚开始有点不太理解为什么使用队列&#xff0c;一旦遇到可以到达终点的节点就立即返回&#xff0c;找到最短时间&#xff0c;最后明白了&#xff0c;因为在队列里的所有节点一定比队头节点 的时间长。下面是具体代码&#xff1a; #include<std…

博客搬家算法伪码

已有平台&#xff1a;CSDN博客、51CTO、博客园、WordPress不同平台的博客&#xff0c;数据解析方式不一样&#xff0c;数据抓取和存储都是类似的。1.确定博客首页地址a.平台地址比如&#xff0c;CSDN的博客地址是 http://blog.csdn.net/b.账号fansunionCSDN某个用户的地址是&am…

用js做分页,点击下一页时,直接跳到了最后一页——Number()的妙用

Number()的妙用 Number()是javascript中将字符型转换为数值型的函数&#xff1b;问题描述&#xff1a;做分页&#xff0c;用js实现&#xff0c;获取当前页面的值&#xff0c;然后js自加1&#xff0c;可是点击下一页时&#xff0c;直接跳到最后一页。选择跳转到某页的时候&#…

让Apache支持Wap网站

日前搭建一台Wap网站&#xff0c;环境为RedHat EL5ApachePHPMysql&#xff0c;要求支持wml文件。现将涉及到的配置修改记录如下&#xff1a;1、修改Apache的httpd.conf文件&#xff0c;增加如下内容。AddType application/x-httpd-php .wmlAddType text/vnd.wap.wml .wml;chars…

vue传中文标点_vue项目引入第三方高德地图实现标点定位

vue项目中&#xff0c;高德地图使用。引入vue中。异步导入vue中。gaoDe(key) {window.onApiLoaded function () {var map new AMap.Map(container, {resizeEnable: true,center: [113.951955, 22.530825],zoom: 16});}var url https://webapi.amap.com/maps? v1.4.15&k…

CVE-2014-4877 wget: FTP Symlink Arbitrary Filesystem Access

目录 1. 漏洞基本描述 2. 漏洞带来的影响 3. 漏洞攻击场景重现 4. 漏洞的利用场景 5. 漏洞原理分析 6. 漏洞修复方案 7. 攻防思考 1. 漏洞基本描述 0x1: Wget简介 wget是一个从网络上自动下载文件的自由工具&#xff0c;支持通过HTTP、HTTPS、FTP三个最常见的TCP/IP协议下载&am…

java判断某个字符串是否是数字

&#xff08;一&#xff09;利用正则表达式判断某个字符串是否是数字 public static boolean isNumeric(String s) {// 正则表达式return (s.matches("\\d*") && Pattern.compile("[0-9]*").matcher(s).matches());} &#xff08;二&#xff09;利…

mysql-nt.exe w3wp.exe cpu 100%_w3wp.exe(IIS ) CPU 占用 100% 的常见原因及解决办法

对于IIS管理员来说&#xff0c;经常会碰到Web服务器CPU占用100%的情况&#xff0c;以下是个人的日常工作总结和一些解决办法&#xff0c;主要用来剖析w3wp.exe(IIS )占用CPU 100%的一些原因 和解决方案&#xff0c;希望能对你有所帮助w3wp.exe的解释:全名&#xff0c;IIS Appli…

TOP结果详解

2019独角兽企业重金招聘Python工程师标准>>> TOP前5行 top - 16:24:25 up 284 days, 4:59, 1 user, load average: 0.10, 0.05, 0.01 top 当前时间、系统启动时间、当前系统登录用户数目、平均负载&#xff08;1分钟,10分钟,15分钟&#xff09;。平均负载&#x…

BZOJ3236 [Ahoi2013]作业

昨天晚上做的。。。差错一直查到今天 最后没办法问管理员要了数据才知道原来ans数组开小了233&#xff0c;简直沙茶 这道题不就是裸的莫队嘛 ||| 只要用树状数组维护当前的两种个数即可。 1 /**************************************************************2 Problem: 3…

mysql ddl dml 导出_MySQL:DDL和DML语句,弄明白了吗?

语句分类DDL&#xff08;Data Definition Languages&#xff09;语句&#xff1a;即数据库定义语句&#xff0c;用来创建数据库中的表、索引、视图、存储过程、触发器等&#xff0c;常用的语句关键字有&#xff1a;CREATE,ALTER,DROP,TRUNCATE,COMMENT,RENAME。增删改表的结构D…

敏捷水手——单体法到微服务之旅

\本文要点\\探究持续四年多的渐进式改革是什么样子&#xff1b;\\t探索为什么在变革软件和组织设计时要遵循康威定律&#xff1b;\\t看看如何将领导力应用到不同的团队、领域和层级&#xff1b;\\t举例说明变革管理如何依赖于理念和一贯的长远目标&#xff1b;\\t了解从职能型团…

SQLCMD的介绍

SQLCMD的介绍 原文:SQLCMD的介绍文章转载自&#xff1a;http://blog.sina.com.cn/s/blog_3eec0ced0100mhm2.html最近经常用到超过80M *.sql文件的导入问题。上网找了一下&#xff0c;发现超过80M的文件是不能在查询分析器中执行的。找了些解决方案&#xff0c;个人感觉最简单的…

Windows下用命令行导出导入MySQL数据库

方法1&#xff1a;添加“系统环境变量”。我的电脑&#xff1e;属性&#xff1e;高级&#xff1e;环境变量&#xff0c;在“系统变量”栏目下找到 path 双击编辑。先添加&#xff1b;&#xff08;分号&#xff09;&#xff0c;再添加MySQL安装目录下bin文件夹&#xff08;包含m…

python模拟鼠标拖动滑块_如何通过拖动滑块来控制Kivy滚动视图?

是的&#xff0c;你可以这样做&#xff1a;在ScrollView中有一个scroll_类型属性&#xff0c;因此通过设置它&#xff0c;您可以实现您想要的功能。在如果设置scroll_type[bars]&#xff0c;则可能需要更改bar_width属性&#xff0c;因为它的默认值为2&#xff0c;而且它太小&a…

怎样下载C/C++的免费、开源且跨平台IDE——Code::Blocks

进入Code::Blocks的官网&#xff0c;官网地址为&#xff1a;http://www.codeblocks.org/home。进入后如下图所示&#xff1a; 点击“Home”菜单&#xff0c;跳转到IDE的下载界面&#xff1a; 有几种模式可供选择&#xff0c;我选择的第一种&#xff0c;Download the binary rel…

网站吞吐量

http://www.blogjava.net/neverend/archive/2011/01/25/343514.html转载于:https://www.cnblogs.com/sevensole7/archive/2013/06/05/3118966.html

外链引入css有哪些方式_HTML+CSS基础(三) CSS的引入方式和CSS选择器

一、CSS概念&#xff1a;什么是CSS,CSS说白了就是给页面添加样式,让整个页面变的好看起来的一种东西,用来定义网页外观&#xff0c;如字体、背景、颜色等二、在页面中使用css的3种常用方式1.行内样式就是在一个标签内使用 style 属性,仅为某一个标签添加样式例如文字2.内嵌式就…

混合部署

http://horse87.blog.51cto.com/2633686/1628179转载于:https://blog.51cto.com/12341672/1893792

Logistic回归 python实现

Logistic回归 算法优缺点&#xff1a; 1.计算代价不高&#xff0c;易于理解和实现2.容易欠拟合&#xff0c;分类精度可能不高3.适用数据类型&#xff1a;数值型和标称型 算法思想&#xff1a; 其实就我的理解来说&#xff0c;logistic回归实际上就是加了个sigmoid函数的线性回归…