IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> python ddddocr识别验证码 -> 正文阅读

[C++知识库]python ddddocr识别验证码

pip install ddddocr
import ddddocr
import requests
import re


class RegularCalculation:
    __div = re.compile(r"(\d+\.?\d*/-\d+\.?\d*)|(\d+\.?\d*/\d+\.?\d*)")  # 查找除法运算

    __mul = re.compile(r"(\d+\.?\d*\*-\d+\.?\d*)|(\d+\.?\d*\*\d+\.?\d*)")  # 查找乘法运算

    __add = re.compile(r"(-?\d+\.?\d*\+-\d+\.?\d*)|(-?\d+\.?\d*\+\d+\.?\d*)")  # 查找加法运算

    __sub = re.compile(r"(-?\d+\.?\d*--\d+\.?\d*)|(-?\d+\.?\d*-\d+\.?\d*)")  # 查找减法运算

    def division(self, value):
        """计算除法"""
        exp = re.split(r'/', self.__div.search(value).group())  # 将除法表达式拆分成列表
        return value.replace(self.__div.search(value).group(), str(float(exp[0]) / float(exp[1])))  # 计算并用结果替换列表中表达式

    def multiplication(self, value):
        """计算乘法"""
        exp = re.split(r'\*', self.__mul.search(value).group())  # 将乘法表达式拆分成列表
        return value.replace(self.__mul.search(value).group(), str(float(exp[0]) * float(exp[1])))  # 计算并用结果替换列表中表达式

    def addition(self, value):
        """计算加法"""
        exp = re.split(r'\+', self.__add.search(value).group())  # 将加法表达式拆分成列表
        return value.replace(self.__add.search(value).group(), str(float(exp[0]) + float(exp[1])))  # 计算并用结果替换列表中表达式

    def subtraction(self, value):
        """计算减法"""
        exp = self.__sub.search(value).group()  # 去除减法表达式
        if exp.startswith('-'):  # 如果表达式形如:-2.2-1.2;需变换为:-(2.2+1.2)
            exp = exp.replace('-', '+')  # 将-号替换为+号;+2.2+1.2
            res = self.addition(exp).replace('+', '-')  # 调用Add运算,将返回值+3.4变为-3.4
        else:
            exp = re.split(r'-', exp)
            res = str(float(exp[0]) - float(exp[1]))
        return value.replace(self.__sub.search(value).group(), res)


class VerificationCode:

    def __init__(self):
        head = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
        }

        res_img = requests.get('验证码地址', headers=head)
        with open('test.png', 'wb') as f:
            f.write(res_img.content)

    @staticmethod
    def verification_code():
        ocr = ddddocr.DdddOcr()
        with open("test.png", 'rb') as f:
            img_bytes = f.read()
        res = ocr.classification(img_bytes)
        print(res)
        try:
            if '+' in res:
                result = RegularCalculation().addition(res)
            elif '-' in res:
                result = RegularCalculation().subtraction(res)
            elif 'x' in res:
                result = RegularCalculation().multiplication(res.replace('x', '*'))
            else:
                result = RegularCalculation().division(res)
        except Exception as e:
            result = '计算出错'
            print(e)
        print(result.split('.')[0])


if __name__ == '__main__':
    test = VerificationCode()
    test.verification_code()

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-08 10:29:29  更:2021-09-08 10:31:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:38:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码