一.、环境

centos7.x

python3.x

开始用的python2.x,安装好后运行语法错误....

二、安装依赖包

1. 安装参考连接:https://blog.csdn.net/xavier_muse/article/details/104210452

2. 安装过程中报错解决:

问题1:No module named yum

解决:

(1) whereis python 查看系统安装python,如果是有多个版本时


    (2)vim /usr/bin/yum,修改第一行 #!/usr/bin/python2.7


还是不行,根据实际情况百度

三、使用示例

上代码,main为入口函数,这个识别算是稍微准确的,也可以试着使用百度云,腾讯云等的文字识别,免费版的感觉不太好用,仅供参考

# -*- coding: utf-8 -*-
import json
import sys
import random
import time
import traceback
import requests
import pytesseractfrom datetime import datetime
from PIL import Image# 获取图片中像素点数量最多的像素
def get_threshold(image):pixel_dict = defaultdict(int)# 像素及该像素出现次数的字典rows, cols = image.sizefor i in range(rows):for j in range(cols):pixel = image.getpixel((i, j))pixel_dict[pixel] += 1count_max = max(pixel_dict.values())  # 获取像素出现出多的次数pixel_dict_reverse = {v: k for k, v in pixel_dict.items()}threshold = pixel_dict_reverse[count_max]  # 获取出现次数最多的像素点return threshold# 按照阈值进行二值化处理
# threshold: 像素阈值
def get_bin_table(threshold):# 获取灰度转二值的映射tabletable = []for i in range(256):rate = 0.1  # 在threshold的适当范围内进行处理if threshold * (1 - rate) <= i <= threshold * (1 + rate):table.append(1)else:table.append(0)return table# 去掉二值化处理后的图片中的噪声点
def cut_noise(image):rows, cols = image.size  # 图片的宽度和高度change_pos = []  # 记录噪声点位置# 遍历图片中的每个点,除掉边缘for i in range(1, rows - 1):for j in range(1, cols - 1):# pixel_set用来记录该店附近的黑色像素的数量pixel_set = []# 取该点的邻域为以该点为中心的九宫格for m in range(i - 1, i + 2):for n in range(j - 1, j + 2):if image.getpixel((m, n)) != 1:  # 1为白色,0位黑色pixel_set.append(image.getpixel((m, n)))# 如果该位置的九宫内的黑色数量小于等于4,则判断为噪声if len(pixel_set) <= 4:change_pos.append((i, j))# 对相应位置进行像素修改,将噪声处的像素置为1(白色)for pos in change_pos:image.putpixel(pos, 1)return image  # 返回修改后的图片# 识别图片中的数字加字母
# 传入参数为图片路径,返回结果为:识别结果
def OCR_lmj(img_path):image = Image.open(img_path)  # 打开图片文件imgry = image.convert('L')  # 转化为灰度图# 获取图片中的出现次数最多的像素,即为该图片的背景max_pixel = get_threshold(imgry)# 将图片进行二值化处理# 注意,是否使用二值化要看具体情况,有些图片二值化之后,可能关键信息会丢失,反而识别不出来table = get_bin_table(threshold=max_pixel)out = imgry.point(table, '1')# 去掉图片中的噪声(孤立点)out = cut_noise(out)# 保存图片# out.save('E://figures/img_gray.jpg')# 仅识别图片中的数字# text = pytesseract.image_to_string(out, config='digits')# 识别图片中的数字和字母text = pytesseract.image_to_string(out)# 去掉识别结果中的特殊字符exclude_char_list = ' .:\\|\'\"?![],()~@#$%^&*_+-={};<>/¥'text = ''.join([x for x in text if x not in exclude_char_list])# print(text)return textdef main(image_path):'''单张图片识别'''recognizition = OCR_lmj(image_path)return recognizition

python识别图片验证码,踩坑亲测相关推荐

  1. 教程 | 用Python识别图片验证码中的文字

    作者 | 老表 来源 | 简说Python(ID:xksnh888xksnh888) [导语]在今天这篇文章中,作者分享给大家一个有趣又干货满满的 Python 项目.通过这份教程,大家不仅又多了一个 ...

  2. 易语言python识别图片验证码_TensorFlow实战:验证码识别 (少样本高精度)

    项目地址:https://github.com/kerlomz/captcha_trainer 1. 前言本项目适用于Python3.6,GPU>=NVIDIA GTX1050Ti,原maste ...

  3. python 识别图形验证码_python爬虫20 | 小帅b教你如何用python识别图片验证码

    当你在爬取某些网站的时候 对于你的一些频繁请求 对方会阻碍你 常见的方式就是使用验证码 验证码的主要功能 就是区分你是人还是鬼(机器人) 人 想法设法的搞一些手段来对付技术 而 技术又能对付人们的想法 ...

  4. python爬虫20 | 小帅b教你如何使用python识别图片验证码

    当你在爬取某些网站的时候 对于你的一些频繁请求 对方会阻碍你 常见的方式就是使用验证码 验证码的主要功能 就是区分你是人还是鬼(机器人) 人 想法设法的搞一些手段来对付技术 而 技术又能对付人们的想法 ...

  5. python怎么识别图片验证码_python爬虫20 | 小帅b教你如何使用python识别图片验证码...

    当你在爬取某些网站的时候 对于你的一些频繁请求 对方会阻碍你 常见的方式就是使用验证码 验证码的主要功能 就是区分你是人还是鬼(机器人) 人 想法设法的搞一些手段来对付技术 而 技术又能对付人们的想法 ...

  6. 易语言python识别图片验证码_图片识别-打码平台-打码网站-识别验证码-图鉴网络科技有限公司...

    Android脚本 Import "Cjson.lua" Import "ttddm.lua" Import "ShanHai.lua" / ...

  7. python 识别图形验证码_Python图片验证码降噪处理实例!此乃识别验证码神技!...

    图片验证码算是网络数据采集上的一道拦路虎,虽然有诸多公开的ORC接口.云打码平台,一旦大规模应用起来,还是内部写程序进行识别处理比较好. 而自己写代码进行识别的话,又有很多种方案,比如最近火热的神经网 ...

  8. 用Python模拟识别图片验证码并发送手机验证码

    1.导语 大家好,好久不见.又到每日分享Python小技能的时候了.最近因为疫情影响,所以更新内容比较慢-今天周一,就来更新一波,心血来潮,是时候上线经营了.其实也没想到有啥好分享的,不如分享一些干货 ...

  9. python—简单数据抓取四(利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站、利用百度云的ocr识别自如租房网价格图片获取到自如网的价格)

    学习目标: python学习二十四 -简单数据抓取四 学习内容: 1.利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站 2.利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据 1.利 ...

最新文章

  1. MYSQL体系结构-来自期刊
  2. 一天star量破千,300行代码,特斯拉AI总监Karpathy写了个GPT的Pytorch训练库
  3. LVS/HAProxy/Nginx负载均衡对比
  4. 题目1483:求最大最小数
  5. easyui 1.4.2 Tab刷新图标重复问题
  6. http post请求 参数放在路径后面 java_「思唯网络学院」网络基本概念之HTTP协议...
  7. build-blocker-plugin
  8. BIM工程信息管理系统-详细设计
  9. 网页设计与制作(HTML+CSS)
  10. Java设计模式学习总结
  11. Towards Characterizing the Behavior of LiDARs in Snowy Conditions
  12. for和if嵌套使用
  13. 仿最新BiliBili客户端(已开源)
  14. 模型预测控制(MPC)——动态矩阵控制(DMC)
  15. Matlab plotyy画2个纵坐标不同的图
  16. JavaScript 正则表达式匹配汉字
  17. 2019美和易思第十一期班主任选拔培训(贵州+重庆区域)拉开帷幕
  18. 第3章 使用SQL*Plus
  19. Qt5下Qxlsx模块安装及使用
  20. 【vue分页功能】vue element 分页组件简简单单实现分页功能详细教学

热门文章

  1. Array.Sort()排序的原理
  2. Web搜索引擎工作原理和体系结构
  3. 景观生态学原理| 3 景观格局与分析
  4. SpringBoot+Vue项目校园防疫管理系统
  5. A Review on Deep Learning Applications in Prognostics and Health Management (翻译)
  6. 云服务器物理机在,一个云服务器会在两个物理机上吗
  7. E.A. Guillemin 吉耶曼统一古典电路理论的人
  8. Electron-vue开发桌面应用调用TSCLIB.dll(tsc标签打印机连接库)
  9. DTFT、DFS、DFT和FFT的关系 离散数字信号处理 数字角频率和模拟角频率
  10. 计算机系统的体系结构论文,计算机系统结构参考文献