Python图像(字母数字)识别
本文只针对数字或字母验证码识别
准备工具
- 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图像(字母数字)识别相关推荐
- 利用深度学习(CNN)进行验证码(字母+数字)识别
利用深度学习(CNN)进行验证码(字母+数字)识别_helen1313的专栏-CSDN博客 本文方法针对的验证码为定长验证码,不包含中文. 本文的思路是:1. 使用keras中预训练好的模型,在pyt ...
- python 手写数字识别 封装GUI,手写板获取鼠标写字轨迹信息
python 手写数字识别知识不用多说,本文用深度学习Python库Keras实现深度学习入门教程mnist手写数字识别.mnist手写数字识别是机器学习和深度学习领域的"hello wor ...
- halcon车牌字母数字识别
halcon车牌字母数字识别 dev_close_window () read_image (Image, 'F:/Download/images/车牌.jpg') get_image_size (I ...
- 【印刷字符识别】基于matlab OCR印刷字母+数字识别【含Matlab源码 1861期】
⛄一.OCR简介 OCR技术是光学字符识别的缩写, 是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息, 再利用文字识别技术将图像信息转化为可以使用的计算机输入技术. ...
- Python手写数字识别+GUI界面+手写板设计
摘要 手写数字识别是模式识别中一个非常重要和活跃的研究领域,数字识别也不是一项孤立的技术,他涉及的问题是模式识别的其他领域都无法回避的:应用上,作为一种信息处理手段,字符识别有广阔的应用背景和巨大的市 ...
- python手写数字识别教学_python实现基于SVM手写数字识别功能
本文实例为大家分享了SVM手写数字识别功能的具体代码,供大家参考,具体内容如下 1.SVM手写数字识别 识别步骤: (1)样本图像的准备. (2)图像尺寸标准化:将图像大小都标准化为8*8大小. (3 ...
- python手写数字识别实验报告_Python代码实现简单的MNIST手写数字识别(适合初学者看)...
补充:由于很多同学找我要原数据集和代码,所以我上传到了资源里,https://download..net/download/zugexiaodui/10913834 初学机器学习,第一步是做一个简单的 ...
- python手写数字识别实验报告_python神经网络编程实现手写数字识别
本文实例为大家分享了python实现手写数字识别的具体代码,供大家参考,具体内容如下 import numpy import scipy.special #import matplotlib.pypl ...
- 【数字识别】基于模板匹配实现OCR印刷字母+数字识别含Matlab源码
1 简介 OCR技术是光学字符识别的缩写, 是通过扫描等光学输入方式将各种票据.报刊.书籍.文稿及其它印刷品的文字转化为图像信息, 再利用文字识别技术将图像信息转化为可以使用的计算机输入技术.由于其应 ...
- python手写数字识别实验报告_机器学习python实战之手写数字识别
看了上一篇内容之后,相信对K近邻算法有了一个清晰的认识,今天的内容--手写数字识别是对上一篇内容的延续,这里也是为了自己能更熟练的掌握k-NN算法. 我们有大约2000个训练样本和1000个左右测试样 ...
最新文章
- 实现页面打开后滚动到最底端的效果(转)
- mysql数据库事件不执行_如何查看mysql事件是否执行
- C++ 语法都不会怎么写代码? 03
- React开发(226):默认方法返回一个新的参数两个括号
- shell基础(上)
- qt中记录数据的一次接收处理方法
- R语言基础入门(3)之数据类型与相应运算1
- 真正的商用量子电脑!IBM推 Q System One
- Linux防止暴力破解密码脚本
- 现代web数据传输技术及数据格式
- 【HDU5409】CRB and Graph 边双联通 子树最值
- 转:nginx allow 多个ip ipv4的网段表示方法解析
- SCI收录的期刊查询
- Axure中移动的绝对位置
- 学python为何不好找工作呢?
- 递归算法实例应用(四)
- 64位微型计算机系统是指内存,大学计算机基础试题及答案第二章
- 为什么说冯诺依曼结构是现代计算机的基础,为什么现代计算机被称为冯·诺依曼结构计算机??...
- GMS刷机步骤兼测试手法
- 威睿数据中心虚拟化解决方案