本文只针对数字或字母验证码识别

准备工具

  • tesseract-ocr-w64-setup-v4.1.0.20190314.exe
  • pip install pytesseract
  • pip install pillow
  • 中文包

tesseract-ocr和中文包的下载连接: 链接:链接:https://pan.baidu.com/s/1r_LZKRXBT2Ffp7QrYQwOSA?pwd=junm
提取码:junm

安装好tesseract,记住安装的所在位置

如D:\Program Files\Tesseract-OCR

解压中文包的压缩包

解压中文包的压缩包,将压缩包里面格式为.traineddata的文件复制在安装目录里边tessdata的文件夹下,如D:\Program Files\Tesseract-OCR\tessdata这下面就行了。

配置tesseract的环境变量

第一个:
TESSDATA_PREFIX —> 你安装的路径,比如 D:\Program Files\Tesseract-OCR
第二个: 在path里面新建一个
你安装的路径,比如 D:\Program Files\Tesseract-OCR

查看版本

win+R输入cmd打开命令行工具,输入tesseract -v

查看一安装好的语言包

win+R输入cmd打开命令行工具,输入tesseract --list-langs

修改pytesseract.py文件,指定tesseract.exe安装路径

# CHANGE THIS IF TESSERACT IS NOT IN YOUR PATH, OR IS NAMED DIFFERENTLY
tesseract_cmd = 'C:\\Program Files (x86)\\Tesseract-OCR\\tesseract.exe‘
#就是你安装的位置

代码实例

import pytesseract
from PIL import Image
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECchromedriver_path = "C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe"  # chromedriver的路径
# 创建chrome参数对象
options = webdriver.ChromeOptions()
options.add_argument('--no-sandbox')
options.add_argument('--start-maximized')
options.add_argument('--disable-gpu')
options.add_argument('--hide-scrollbars')
options.add_argument('test-type')
options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors","enable-automation"])
driver = webdriver.Chrome(options=options, executable_path=chromedriver_path)
driver.get('http://www.alihba.fun/jiaoyanma/jiaoyanma.php')def screen(screenXpath):img = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, screenXpath)))driver.save_screenshot("allscreen.png")  # 对整个浏览器页面进行截图left = img.location['x']+26top = img.location['y']+10right = img.location['x'] + img.size['width']+53bottom = img.location['y'] + img.size['height']+10print(left,top,right,bottom)im = Image.open('allscreen.png')im = im.crop((left, top, right, bottom))  # 对浏览器截图进行裁剪im.save('jietu.png')print("截图完成")# driver.quit()def Identify():image = Image.open("./jietu.png")code = pytesseract.image_to_string(image,lang="eng", config="--psm 6")  #lang的值可以根据安装的语言选择,也不是都可以用,一般看的是验证码类型就可以了。print("识别出验证码为:   ",code)def main():screenXpath = '//*[@id="captcha_img"]'screen(screenXpath)sleep(5)Identify()if __name__ == '__main__':main()


-psm 参数

0:定向脚本监测(OSD)
1: 使用OSD自动分页
2 :自动分页,但是不使用OSD或OCR(Optical Character Recognition,光学字符识别)
3 :全自动分页,但是没有使用OSD(默认)
4 :假设可变大小的一个文本列。
5 :假设垂直对齐文本的单个统一块。
6 :假设一个统一的文本块。
7 :将图像视为单个文本行。
8 :将图像视为单个词。
9 :将图像视为圆中的单个词。
10 :将图像视为单个字符。

通过测试,如果验证码全为数字,准确率比较高,字母识别的准确率稍低

最后可以关注一下我个人微信公众号,不定期更新一些好用的资源以及生活上的点点滴滴~~

Python图像(字母数字)识别相关推荐

  1. 利用深度学习(CNN)进行验证码(字母+数字)识别

    利用深度学习(CNN)进行验证码(字母+数字)识别_helen1313的专栏-CSDN博客 本文方法针对的验证码为定长验证码,不包含中文. 本文的思路是:1. 使用keras中预训练好的模型,在pyt ...

  2. python 手写数字识别 封装GUI,手写板获取鼠标写字轨迹信息

    python 手写数字识别知识不用多说,本文用深度学习Python库Keras实现深度学习入门教程mnist手写数字识别.mnist手写数字识别是机器学习和深度学习领域的"hello wor ...

  3. halcon车牌字母数字识别

    halcon车牌字母数字识别 dev_close_window () read_image (Image, 'F:/Download/images/车牌.jpg') get_image_size (I ...

  4. 【印刷字符识别】基于matlab OCR印刷字母+数字识别【含Matlab源码 1861期】

    ⛄一.OCR简介 OCR技术是光学字符识别的缩写, 是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息, 再利用文字识别技术将图像信息转化为可以使用的计算机输入技术. ...

  5. Python手写数字识别+GUI界面+手写板设计

    摘要 手写数字识别是模式识别中一个非常重要和活跃的研究领域,数字识别也不是一项孤立的技术,他涉及的问题是模式识别的其他领域都无法回避的:应用上,作为一种信息处理手段,字符识别有广阔的应用背景和巨大的市 ...

  6. python手写数字识别教学_python实现基于SVM手写数字识别功能

    本文实例为大家分享了SVM手写数字识别功能的具体代码,供大家参考,具体内容如下 1.SVM手写数字识别 识别步骤: (1)样本图像的准备. (2)图像尺寸标准化:将图像大小都标准化为8*8大小. (3 ...

  7. python手写数字识别实验报告_Python代码实现简单的MNIST手写数字识别(适合初学者看)...

    补充:由于很多同学找我要原数据集和代码,所以我上传到了资源里,https://download..net/download/zugexiaodui/10913834 初学机器学习,第一步是做一个简单的 ...

  8. python手写数字识别实验报告_python神经网络编程实现手写数字识别

    本文实例为大家分享了python实现手写数字识别的具体代码,供大家参考,具体内容如下 import numpy import scipy.special #import matplotlib.pypl ...

  9. 【数字识别】基于模板匹配实现OCR印刷字母+数字识别含Matlab源码

    1 简介 OCR技术是光学字符识别的缩写, 是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息, 再利用文字识别技术将图像信息转化为可以使用的计算机输入技术.由于其应 ...

  10. python手写数字识别实验报告_机器学习python实战之手写数字识别

    看了上一篇内容之后,相信对K近邻算法有了一个清晰的认识,今天的内容--手写数字识别是对上一篇内容的延续,这里也是为了自己能更熟练的掌握k-NN算法. 我们有大约2000个训练样本和1000个左右测试样 ...

最新文章

  1. 实现页面打开后滚动到最底端的效果(转)
  2. mysql数据库事件不执行_如何查看mysql事件是否执行
  3. C++ 语法都不会怎么写代码? 03
  4. React开发(226):默认方法返回一个新的参数两个括号
  5. shell基础(上)
  6. qt中记录数据的一次接收处理方法
  7. R语言基础入门(3)之数据类型与相应运算1
  8. 真正的商用量子电脑!IBM推 Q System One
  9. Linux防止暴力破解密码脚本
  10. 现代web数据传输技术及数据格式
  11. 【HDU5409】CRB and Graph 边双联通 子树最值
  12. 转:nginx allow 多个ip ipv4的网段表示方法解析
  13. SCI收录的期刊查询
  14. Axure中移动的绝对位置
  15. 学python为何不好找工作呢?
  16. 递归算法实例应用(四)
  17. 64位微型计算机系统是指内存,大学计算机基础试题及答案第二章
  18. 为什么说冯诺依曼结构是现代计算机的基础,为什么现代计算机被称为冯·诺依曼结构计算机??...
  19. GMS刷机步骤兼测试手法
  20. 威睿数据中心虚拟化解决方案

热门文章

  1. xp系统怎么telnet服务器,xp操作系统如何开启telnet服务?
  2. 物联网PaaS平台大盘点
  3. C/S架构系统的自动更新功能设计与实现(四)
  4. U盘引导启动LINUX
  5. 基于ObjectArx的AutoCAD二次开发的基础入门
  6. 三、电容屏原理(2)
  7. 如何使用工时表软件跟踪时间和成本?
  8. 答疑解惑:软件定义存储常见问题
  9. 海思hi3516移动侦测代码并显示输出
  10. DevExpress控件手册