用机器学习sklearn+opencv-python过计算型验证码

news2024/11/27 3:46:28

目录

生成计算型验证码图片

用opencv-python处理图片

制作训练数据集

训练模型

识别验证码

总结与提高

源码下载


在本节我们将使用sklearn和opencv-python这两个库过掉计算型验证码,图片示例如下。

生成计算型验证码图片

要识别验证码,我们就需要大量验证码图片用于机器学习,以下是生成计算型验证码图片的完整代码。

from PIL import Image, ImageDraw, ImageFont
import concurrent.futures
from pathlib import Path
import random
import shutil


IMG_WIDTH = 160     # 图片宽度
IMG_HEIGHT = 60     # 图片高度
FONT_SIZE = 30      # 字体大小


def get_random_point():
    """获取随机点坐标"""
    x = random.randint(0, IMG_WIDTH)
    y = random.randint(0, IMG_HEIGHT)
    return x, y


def get_random_color(min_val=0, max_val=255):
    """获取随机颜色"""
    r = random.randint(min_val, max_val)
    g = random.randint(min_val, max_val)
    b = random.randint(min_val, max_val)
    return r, g, b


def draw_bg_noise(img, pen):
    """制造背景噪点"""
    noise_num = IMG_WIDTH * IMG_HEIGHT // 8  # 要绘制的噪点数量
    for i in range(noise_num):
        x, y = get_random_point()
        color = get_random_color(min_val=150, max_val=255)
        pen.point((x, y), color)
    return img


def operator2Chinese(text):
    """将运算符转成中文"""
    return text.replace("+", "加").replace("-", "减").replace("*", "乘").replace("/", "除以")


def Chinese2operator(text):
    """将中文转为运算符"""
    return text.replace("加", "+").replace("减", "-").replace("乘", "*").replace("除以", "/")


def draw_texts(img, pen):
    """绘制文本"""
    number_seed = "0123456789"      # 数字字符池
    operator_seed = "+-*/"          # 运算符号字符池

    # 将数字转为int的目的是去除开头的0
    # number2加上1是为了防止除数为0的情况
    number1 = str(int("".join(random.sample(number_seed, random.randint(1, 3)))))
    number2 = str(int("".join(random.sample(number_seed, random.randint(1, 3)))) + 1)
    operator_char = random.choice(operator_seed)

    font = ImageFont.truetype("Arial", size=random.randint(FONT_SIZE - 5, FONT_SIZE + 5))
    pen.text((5, 15), number1, get_random_color(max_val=150), font)

    font = ImageFont.truetype("Arial", size=random.randint(FONT_SIZE - 5, FONT_SIZE + 5))
    pen.text((65, 15), operator_char, get_random_color(max_val=150), font)

    font = ImageFont.truetype("Arial", size=random.randint(FONT_SIZE - 5, FONT_SIZE + 5))
    pen.text((90, 15), number2, get_random_color(max_val=150), font)

    chars = operator2Chinese(number1+operator_char+number2)
    return img, chars


def generate_captcha(num, output_dir, thread_name=0):
    """
    生成一定数量的验证码图片
    :param num: 生成数量
    :param output_dir: 存放验证码图片的文件夹路径
    :param thread_name: 线程名称
    :return: None
    """
    # 目录存在则删除
    if Path(output_dir).exists():
        shutil.rmtree(output_dir)

    # 创建目录
    Path(output_dir).mkdir()

    for i in range(num):
        img = Image.new("RGB", size=(IMG_WIDTH, IMG_HEIGHT), color="white")
        pen = ImageDraw.Draw(img, mode="RGB")

        img, text = draw_texts(img, pen)
        img = draw_bg_noise(img, pen)

        save_path = f"{output_dir}/{i + 1}-{text}.png"
        img.save(save_path, format="png")
        print(f"Thread {thread_name}: 已生成{i + 1}张验证码")

    print(f"Thread {thread_name}: 验证码图片生成完毕")


def main():
    with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
        for i in range(3):
            executor.submit(generate_captcha, 10000, f"./captcha{i}", i)


if __name__ == "__main__":
    main()

该程序使用Pillow库生成随机的计算型验证码图片,像素为160px*60px,图片上还设置了噪点。图片上的字符数量取决于数字的位数,数字位数最小为1,最大为3,所以图片上字符数量最小为3,最大为7。在main()函数中,我们开启了3个子线程,每一个子线程负责生成10000张验证码并保存在各自的文件夹中。

注:为了提高图像处理的质量,笔者用这行代码get_random_color(max_val=150)将字符随机颜色的最大值设置成了150,这样字符颜色就会比较深,在切割图像时失败概率会减少,方便演示。当然实际验证码肯定会出现颜色比较浅的字符。

注:在保存图片时,笔者将图片名称中的+-*/替换成了中文,因为文件命名中不能包含特殊符号。

用opencv-python处理图片

将验证码图片交给模型识别前的一个重要操作就是图像处理。为了提高识别精读,我们应该将噪点去除,还好我们用opencv-python很容易就能够去除噪点。下方的adjust_img()函数会返回一个二值化后的验证码图片。

# process.py
def adjust_img(img):
    """调整图像"""
    # 图片灰度化
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

    # 高斯模糊
    img_gaussian = cv.GaussianBlur(img_gray, (3, 3), 0)

    # 二值化
    ret, img_threshold = cv.threshold(img_gaussian, 0, 255,
                                      cv.THRESH_BINARY_INV + cv.THRESH_OTSU)

    return img_threshold

高斯模糊可以有效去除图像中的噪点,处理后的效果显示如下。

我们要用sklearn识别单个字符(这样识别难度会小一些),而验证码上是3-7个字符,所以我们应该将验证码图片进行切割,切割后的每张图片只包含一个字符。下方的split_img()函数实现了这个功能。

# process.py
def split_img(img, real_captcha):
    """分割图像"""
    cnts, hiers = cv.findContours(img, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    if len(cnts) != len(real_captcha):
        return False, None

    roi_list = []
    bg_width, bg_height = 40, 40
    for cnt in sorted(cnts, key=lambda x: cv.boundingRect(x)[0]):
        x, y, w, h = cv.boundingRect(cnt)

        # 如果cnt大小大于bg背景大小,则抛弃该验证码
        if w > bg_width or h > bg_height:
            return False, None

        roi = img[y:y+h, x:x+w]
        bg = np.zeros((bg_width, bg_height))

        start_x = (bg_width - w) // 2
        start_y = (bg_height - h) // 2
        bg[start_y:start_y+h, start_x:start_x+w] = roi

        bg = cv.resize(bg, (20, 20))
        bg[bg < 125] = 0
        bg[bg >= 125] = 1
        roi_list.append(bg)

    return True, roi_list

验证码字符位置会有变化,而且字符数量不能确定,所以不应该通过图片均分切割去获取单个字符,而是应该用opencv-python的findContours()方法去寻找各个的字符轮廓并截取。截取出来的字符图像被放进了40*40像素的黑色背景中,确保所有字符图像的大小一致。最后将图像调整为20*20,这样训练数据的特征数也会少一些。

如果有一些字符的颜色比较浅,那在图像二值化处理时,这些字符的像素值就会被设为0,那findContours()方法返回的轮廓数跟验证码上的实际字符数就会不一样,此时就要舍弃该验证码, 不能将其放进训练数据中。如果轮廓宽高大于黑色背景宽高40,那就会导致无法将轮廓放进黑色背景中,最终的字符数量也会跟实际的不一样,这种验证码也就只能先舍弃掉。

笔者通过以下代码将图像中值变成了0和1,这样更有利于机器学习。

bg[bg < 125] = 0
bg[bg >= 125] = 1

切割结果如下所示:

我们要知道的一点是,在图像处理这一步骤中,有少部分验证码图片肯定会不合格,不能拿来放进机器学习数据集中,也无法被正常识别。图像处理的好坏跟识别准确度高低有很大关系。图像处理的完整代码如下所示。

# process.py
import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
from captcha import Chinese2operator


def adjust_img(img):
    """调整图像"""
    # 图片灰度化
    img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

    # 高斯模糊
    img_gaussian = cv.GaussianBlur(img_gray, (3, 3), 0)

    # 二值化
    ret, img_threshold = cv.threshold(img_gaussian, 0, 255,
                                      cv.THRESH_BINARY_INV + cv.THRESH_OTSU)

    return img_threshold


def split_img(img, real_captcha):
    """分割图像"""
    cnts, hiers = cv.findContours(img, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
    if len(cnts) != len(real_captcha):
        return False, None

    roi_list = []
    bg_width, bg_height = 40, 40
    for cnt in sorted(cnts, key=lambda x: cv.boundingRect(x)[0]):
        x, y, w, h = cv.boundingRect(cnt)

        # 如果cnt大小大于bg背景大小,则抛弃该验证码
        if w > bg_width or h > bg_height:
            return False, None

        roi = img[y:y+h, x:x+w]
        bg = np.zeros((bg_width, bg_height))

        start_x = (bg_width - w) // 2
        start_y = (bg_height - h) // 2
        bg[start_y:start_y+h, start_x:start_x+w] = roi

        bg = cv.resize(bg, (20, 20))
        bg[bg < 125] = 0
        bg[bg >= 125] = 1
        roi_list.append(bg)

    return True, roi_list


def main():
    file_path = "captcha0/3-723除以14.png"
    img = cv.imread(file_path)
    img = adjust_img(img)

    real_captcha = Chinese2operator(file_path.split("-")[-1].replace(".png", ""))
    is_ok, roi_list = split_img(img, real_captcha)
    if not is_ok:
        return

    for i, roi in enumerate(roi_list):
        plt.subplot(1, len(roi_list), i+1)
        plt.axis("off")
        plt.imshow(roi, cmap="gray")
    plt.show()


if __name__ == "__main__":
    main()

制作训练数据集

验证码图片有了,图像处理也好了,接下来就是把所有单个数字图像保存为训练数据集,完整代码如下所示。

# data.py
import os
import cv2 as cv
import numpy as np
from pathlib import Path
import concurrent.futures
from captcha import Chinese2operator
from process import adjust_img, split_img


def make_data(captcha_dir, thread_name=0):
    """制作训练数据集"""
    data = []                                       # 特征数据
    target = []                                     # 数据标签
    seed = "0123456789+-*/"                         # 字符池

    for i, filename in enumerate(os.listdir(captcha_dir)):
        print(f"Thread {thread_name}: 正在处理第{i+1}张图片")
        file_path = f"{captcha_dir}/{filename}"
        real_captcha = Chinese2operator(file_path.split("-")[-1].replace(".png", ""))

        img = cv.imread(file_path)
        img = adjust_img(img)

        is_ok, roi_list = split_img(img, real_captcha)
        if not is_ok:
            continue

        for i, roi in enumerate(roi_list):
            data.append(roi.ravel())
            target.append(seed.index(real_captcha[i]))

    data = np.array(data)
    target = np.array(target)

    Path("./data").mkdir(exist_ok=True)
    Path("./target").mkdir(exist_ok=True)
    np.save(f"./data/data{thread_name}.npy", data)
    np.save(f"./target/target{thread_name}.npy", target)

    print(f"Thread {thread_name}: 已保存数据和标签")


def main():
    with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
        for i in range(3):
            executor.submit(make_data, f"./captcha{i}", i)


if __name__ == "__main__":
    main()

该程序开启了3个子线程,每个线程负责一个验证码文件夹中的所有图片。最终结果是将所有单个图片数据以及对应的标签保存在npy格式的文件中。

注:要记得将标签从字符串类型转换成数值类型,笔者这里用字符在seed变量中的索引来表示对应的标签字符。

训练模型

有了数据之后就可以开始训练了。首先,我们应该把各个npy数据加载进来,并正进行整合,请看以下代码。

# train.py
def load_data():
    """加载各个npy数据,返回整合后的数据"""
    data_list = []
    target_list = []
    for i in range(3):
        data_list.append(np.load(f"./data/data{i}.npy"))

    for i in range(3):
        target_list.append(np.load(f"./target/target{i}.npy"))

    X = np.vstack(data_list)
    y = np.hstack(target_list)

    print(X.shape)
    print(y.shape)

    return X, y

训练数据量显示如下:

 通过以下代码可以得知各个字符的数量。

from collections import Counter
Counter(sorted(y))
Counter({0: 7452,
         1: 12334,
         2: 11327,
         3: 11288,
         4: 10706,
         5: 11139,
         6: 11355,
         7: 11637,
         8: 11153,
         9: 11487,
         10: 7150,
         11: 6969,
         12: 7154,
         13: 7000})

接下来,选择最合适的模型,不断调参(这里其实会花费很多时间)。出于演示目的,笔者这里就选择KNN了,请看以下代码。

# train.py
def get_best_estimator(X, y):
    """调整参数,获取最佳的KNN模型"""
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    param_grid = {
        "n_neighbors": [i for i in range(5, 13, 2)]
    }
    grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
    grid_search.fit(X_train, y_train)
    print(grid_search.score(X_test, y_test))

    pred = grid_search.predict(X_test)
    print(classification_report(y_test, pred))

    return grid_search.best_estimator_

在get_best_estimator()函数中,我们用GridSearchCV进行参数选择与模型评估,评分和报告如下所示。

0.9987333067930947

              precision    recall  f1-score   support

           0    0.99577   0.99929   0.99753      1412
           1    1.00000   1.00000   1.00000      2478
           2    0.99956   1.00000   0.99978      2280
           3    1.00000   0.99956   0.99978      2290
           4    0.99954   0.99907   0.99931      2161
           5    1.00000   0.99866   0.99933      2244
           6    0.99863   0.99909   0.99886      2196
           7    0.99957   1.00000   0.99978      2317
           8    0.99956   0.99911   0.99933      2250
           9    1.00000   0.99865   0.99932      2218
          10    0.99930   0.99860   0.99895      1431
          11    0.98880   0.99929   0.99402      1414
          12    0.99649   0.98886   0.99266      1436
          13    1.00000   0.99867   0.99933      1504

    accuracy                        0.99873     27631
   macro avg    0.99837   0.99849   0.99843     27631
weighted avg    0.99874   0.99873   0.99873     27631

模型训练好了之后,我们就可以将它进行保存,请看以下代码。

# train.py
def save_model(best_estimator):
    """保存模型"""
    with open("./model.pkl", "wb") as f:
        pickle.dump(best_estimator, f)

训练部分的完整代码所示如下:

# train.py
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report
import numpy as np
import pickle


def load_data():
    """加载各个npy数据,返回整合后的数据"""
    data_list = []
    target_list = []
    for i in range(3):
        data_list.append(np.load(f"./data/data{i}.npy"))

    for i in range(3):
        target_list.append(np.load(f"./target/target{i}.npy"))

    X = np.vstack(data_list)
    y = np.hstack(target_list)

    print(X.shape)
    print(y.shape)

    return X, y


def get_best_estimator(X, y):
    """调整参数,获取最佳的KNN模型"""
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
    param_grid = {
        "n_neighbors": [i for i in range(5, 13, 2)]
    }
    grid_search = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
    grid_search.fit(X_train, y_train)
    print(grid_search.score(X_test, y_test))

    pred = grid_search.predict(X_test)
    print(classification_report(y_test, pred))

    return grid_search.best_estimator_


def save_model(best_estimator):
    """保存模型"""
    with open("./model.pkl", "wb") as f:
        pickle.dump(best_estimator, f)


def main():
    X, y = load_data()
    best_estimator = get_best_estimator(X, y)
    save_model(best_estimator)


if __name__ == "__main__":
    main()

识别验证码

我们再生成1000张验证码图片用于测试模型的识别能力。首先加载训练好的模型。

def load_model(mode_path):
    """加载模型"""
    with open(mode_path, "rb") as f:
        model = pickle.load(f)
    return model

然后是编写预测代码。

# predict.py
def predict(model, file_path):
    seed = "0123456789+-*/"   # 字符池

    img = cv.imread(file_path)
    img = adjust_img(img)

    # 预测结果和真实结果
    predict_result = ""
    real_captcha = Chinese2operator(file_path.split("-")[-1].replace(".png", ""))

    # 如果图像处理成功,则返回单个数字图像的预测结果和真实结果
    # 如果没成功,则返回0000和真实结果
    is_ok, roi_list = split_img(img, real_captcha)
    if is_ok:
        for i, roi in enumerate(roi_list):
            predict_result += seed[(model.predict(roi.reshape(1, -1))[0])]
        print(f"{file_path}的识别结果为{predict_result},运算结果为{eval(predict_result)}")
        return predict_result, real_captcha
    else:
        print(f"{file_path}图片处理失败")
        return False, None

在predict()函数中,我们首先读取了图片并对图像进行处理和分割,然后调用model.predict()方法进行预测。model.predict()方法返回的是一个索引值,需要对应seed变量获取对应字符。获取到识别结果后,我们直接使用eval()函数计算出结果。如果图像处理失败,则返回False和None,不参与最后的识别精度值计算。

预测结果要和真实结果比对后就可以得到准确度了,请看以下代码。

# predict.py
def get_accuracy(model, captcha_dir):
    """获取验证准确度"""
    all_predict_result = []
    all_real_result = []

    for filename in sorted(os.listdir(captcha_dir)):
        if filename != ".DS_Store":  # Mac电脑上的一种文件,排除掉
            predict_result, real_result = predict(model, f"{captcha_dir}/{filename}")
            if predict_result:
                all_predict_result.append(predict_result)
                all_real_result.append(real_result)

    accuracy = (np.array(all_predict_result) == np.array(all_real_result)).sum() / len(all_predict_result)
    return accuracy

经笔者测试,accuracy的值在0.99左右,模型识别能力很强。

./captcha_verify/1-93乘346.png的识别结果为93*346,运算结果为32178
./captcha_verify/10-406减10.png的识别结果为406-10,运算结果为396
./captcha_verify/100-92乘39.png的识别结果为92*39,运算结果为3588
./captcha_verify/1000-28减72.png的识别结果为28-72,运算结果为-44
./captcha_verify/101-14乘6.png的识别结果为14*6,运算结果为84
./captcha_verify/102-92加626.png的识别结果为92+626,运算结果为718
./captcha_verify/103-15乘3.png的识别结果为15*3,运算结果为45
./captcha_verify/104-89减3.png的识别结果为89-3,运算结果为86
./captcha_verify/105-5加5.png的识别结果为5+5,运算结果为10
./captcha_verify/106-834除以6.png的识别结果为834/6,运算结果为139.0
./captcha_verify/107-5除以58.png的识别结果为5/58,运算结果为0.08620689655172414
./captcha_verify/108-89加565.png的识别结果为89+565,运算结果为654
./captcha_verify/109-948除以1.png的识别结果为948/1,运算结果为948.0
./captcha_verify/11-856乘571.png的识别结果为856*571,运算结果为488776
./captcha_verify/110-90除以2.png的识别结果为90/2,运算结果为45.0
./captcha_verify/111-94减41.png的识别结果为94-41,运算结果为53
./captcha_verify/112-91加4.png的识别结果为91+4,运算结果为95
./captcha_verify/113-721乘466.png的识别结果为721*466,运算结果为335986
./captcha_verify/114-0加24.png的识别结果为0+24,运算结果为24
./captcha_verify/115-46除以174.png的识别结果为46/174,运算结果为0.26436781609195403
./captcha_verify/116-9减53.png的识别结果为9-53,运算结果为-44
./captcha_verify/117-5除以10.png的识别结果为5/10,运算结果为0.5
./captcha_verify/118-0除以29.png的识别结果为0/29,运算结果为0.0
./captcha_verify/119-427加10.png的识别结果为427+10,运算结果为437
./captcha_verify/12-0乘15.png的识别结果为0*15,运算结果为0
./captcha_verify/120-971除以420.png的识别结果为971/420,运算结果为2.3119047619047617
./captcha_verify/121-4乘170.png的识别结果为4*170,运算结果为680
./captcha_verify/122-628乘821.png的识别结果为628*821,运算结果为515588
./captcha_verify/123-60乘402.png的识别结果为60*402,运算结果为24120
./captcha_verify/124-4减75.png的识别结果为4-75,运算结果为-71
./captcha_verify/125-7加470.png的识别结果为7+470,运算结果为477
./captcha_verify/126-35乘7.png的识别结果为35*7,运算结果为245
./captcha_verify/127-2除以8.png的识别结果为2/8,运算结果为0.25
./captcha_verify/128-481加71.png的识别结果为481+71,运算结果为552
./captcha_verify/129-6减672.png的识别结果为6-672,运算结果为-666
./captcha_verify/13-6减9.png的识别结果为6-9,运算结果为-3
./captcha_verify/130-176加215.png的识别结果为176+215,运算结果为391
./captcha_verify/131-3加44.png的识别结果为3+44,运算结果为47
./captcha_verify/132-7减808.png图片处理失败
./captcha_verify/133-803加16.png的识别结果为803+16,运算结果为819
./captcha_verify/134-890减5.png的识别结果为890-5,运算结果为885
./captcha_verify/135-7减5.png的识别结果为7-5,运算结果为2
./captcha_verify/136-3乘6.png的识别结果为3*6,运算结果为18
./captcha_verify/137-547乘50.png的识别结果为547*50,运算结果为27350
./captcha_verify/138-986加52.png的识别结果为986+52,运算结果为1038
./captcha_verify/139-35减121.png的识别结果为35-121,运算结果为-86
./captcha_verify/14-7乘821.png的识别结果为7*821,运算结果为5747
./captcha_verify/140-14除以5.png的识别结果为14/5,运算结果为2.8
./captcha_verify/141-18乘13.png的识别结果为18*13,运算结果为234
./captcha_verify/142-25加9.png的识别结果为25+9,运算结果为34
./captcha_verify/143-841减87.png的识别结果为841-87,运算结果为754
./captcha_verify/144-649加894.png图片处理失败
./captcha_verify/145-103乘6.png图片处理失败
./captcha_verify/146-7除以6.png的识别结果为7/6,运算结果为1.1666666666666667
./captcha_verify/147-5除以31.png的识别结果为5/31,运算结果为0.16129032258064516
./captcha_verify/148-65加68.png的识别结果为65+68,运算结果为133
./captcha_verify/149-95加59.png的识别结果为95+59,运算结果为154
./captcha_verify/15-9减185.png的识别结果为9-185,运算结果为-176
./captcha_verify/150-28减1.png的识别结果为28-1,运算结果为27
./captcha_verify/151-635减81.png的识别结果为635-81,运算结果为554
./captcha_verify/152-490除以833.png的识别结果为490/833,运算结果为0.5882352941176471
./captcha_verify/153-54加2.png图片处理失败
./captcha_verify/154-1加2.png的识别结果为1+2,运算结果为3
./captcha_verify/155-546减69.png的识别结果为546-69,运算结果为477
./captcha_verify/156-2乘55.png的识别结果为2*55,运算结果为110
./captcha_verify/157-2乘3.png的识别结果为2*3,运算结果为6
./captcha_verify/158-41减681.png的识别结果为41-681,运算结果为-640
./captcha_verify/159-308除以5.png的识别结果为308/5,运算结果为61.6
./captcha_verify/16-7除以1.png的识别结果为7/1,运算结果为7.0
./captcha_verify/160-8加735.png的识别结果为8+735,运算结果为743
./captcha_verify/161-893乘32.png的识别结果为893*32,运算结果为28576
./captcha_verify/162-7除以57.png的识别结果为7/57,运算结果为0.12280701754385964
./captcha_verify/163-4减19.png的识别结果为4-19,运算结果为-15
./captcha_verify/164-0除以51.png的识别结果为0/51,运算结果为0.0
./captcha_verify/165-64除以5.png的识别结果为64/5,运算结果为12.8
./captcha_verify/166-3乘4.png的识别结果为3*4,运算结果为12
./captcha_verify/167-892除以7.png的识别结果为892/7,运算结果为127.42857142857143
./captcha_verify/168-325除以50.png的识别结果为325/50,运算结果为6.5
./captcha_verify/169-813减66.png的识别结果为813-66,运算结果为747
./captcha_verify/17-24减4.png的识别结果为24-4,运算结果为20
./captcha_verify/170-813除以9.png的识别结果为813/9,运算结果为90.33333333333333
./captcha_verify/171-6乘531.png的识别结果为6*531,运算结果为3186
./captcha_verify/172-697减822.png的识别结果为697-822,运算结果为-125
./captcha_verify/173-6乘58.png的识别结果为6*58,运算结果为348
./captcha_verify/174-0加87.png图片处理失败
./captcha_verify/175-4加49.png的识别结果为4+49,运算结果为53
./captcha_verify/176-5乘597.png的识别结果为5*597,运算结果为2985
./captcha_verify/177-97乘32.png的识别结果为97*32,运算结果为3104
./captcha_verify/178-4乘926.png的识别结果为4*926,运算结果为3704
./captcha_verify/179-865乘1.png的识别结果为865*1,运算结果为865
./captcha_verify/18-0加5.png的识别结果为0+5,运算结果为5
./captcha_verify/180-9乘60.png的识别结果为9*60,运算结果为540
./captcha_verify/181-83加376.png的识别结果为83+376,运算结果为459
./captcha_verify/182-158除以7.png的识别结果为158/7,运算结果为22.571428571428573
./captcha_verify/183-6除以742.png的识别结果为6/742,运算结果为0.008086253369272238
./captcha_verify/184-7乘4.png的识别结果为7*4,运算结果为28
./captcha_verify/185-671减8.png的识别结果为671-8,运算结果为663
./captcha_verify/186-92乘8.png的识别结果为92*8,运算结果为736
./captcha_verify/187-6除以916.png的识别结果为6/916,运算结果为0.006550218340611353
./captcha_verify/188-7加8.png的识别结果为7+8,运算结果为15
./captcha_verify/189-6加3.png的识别结果为6+3,运算结果为9
./captcha_verify/19-68乘8.png的识别结果为68*8,运算结果为544
./captcha_verify/190-840加380.png图片处理失败
./captcha_verify/191-3加903.png图片处理失败
./captcha_verify/192-804减99.png图片处理失败
./captcha_verify/193-71减10.png的识别结果为71-10,运算结果为61
./captcha_verify/194-824加493.png的识别结果为824+493,运算结果为1317
./captcha_verify/195-4减62.png的识别结果为4-62,运算结果为-58
./captcha_verify/196-2乘33.png的识别结果为2*33,运算结果为66
./captcha_verify/197-93加1.png的识别结果为93+1,运算结果为94
./captcha_verify/198-1除以30.png的识别结果为1/30,运算结果为0.03333333333333333
./captcha_verify/199-84减454.png的识别结果为84-454,运算结果为-370
./captcha_verify/2-164乘77.png的识别结果为164*77,运算结果为12628
./captcha_verify/20-17乘62.png的识别结果为17*62,运算结果为1054
./captcha_verify/200-8除以7.png的识别结果为8/7,运算结果为1.1428571428571428
./captcha_verify/201-18加295.png的识别结果为18+295,运算结果为313
./captcha_verify/202-90减844.png图片处理失败
./captcha_verify/203-37除以3.png的识别结果为37/3,运算结果为12.333333333333334
./captcha_verify/204-436减10.png的识别结果为436-10,运算结果为426
./captcha_verify/205-967乘74.png的识别结果为967*74,运算结果为71558
./captcha_verify/206-0除以1.png的识别结果为0/1,运算结果为0.0
./captcha_verify/207-37除以174.png的识别结果为37/174,运算结果为0.21264367816091953
./captcha_verify/208-590除以3.png的识别结果为590/3,运算结果为196.66666666666666
./captcha_verify/209-20乘387.png的识别结果为20*387,运算结果为7740
./captcha_verify/21-105除以3.png的识别结果为105/3,运算结果为35.0
./captcha_verify/210-3除以457.png的识别结果为3/457,运算结果为0.006564551422319475
./captcha_verify/211-6减82.png的识别结果为6-82,运算结果为-76
./captcha_verify/212-4乘175.png的识别结果为4*175,运算结果为700
./captcha_verify/213-23除以10.png的识别结果为23/10,运算结果为2.3
./captcha_verify/214-7加15.png的识别结果为7+15,运算结果为22
./captcha_verify/215-57乘58.png的识别结果为57*58,运算结果为3306
./captcha_verify/216-914除以97.png的识别结果为914/97,运算结果为9.422680412371134
./captcha_verify/217-238减544.png图片处理失败
./captcha_verify/218-4乘468.png的识别结果为4*468,运算结果为1872
./captcha_verify/219-4除以9.png的识别结果为4/9,运算结果为0.4444444444444444
./captcha_verify/22-1除以55.png的识别结果为1/55,运算结果为0.01818181818181818
./captcha_verify/220-759加654.png的识别结果为759+654,运算结果为1413
./captcha_verify/221-691乘82.png的识别结果为691*82,运算结果为56662
./captcha_verify/222-5减6.png的识别结果为5-6,运算结果为-1
./captcha_verify/223-29除以313.png图片处理失败
./captcha_verify/224-561减7.png的识别结果为561-7,运算结果为554
./captcha_verify/225-2加395.png的识别结果为2+395,运算结果为397
./captcha_verify/226-49除以168.png的识别结果为49/168,运算结果为0.2916666666666667
./captcha_verify/227-65加969.png的识别结果为65+969,运算结果为1034
./captcha_verify/228-45乘464.png的识别结果为45*464,运算结果为20880
./captcha_verify/229-809乘7.png的识别结果为809*7,运算结果为5663
./captcha_verify/23-843乘244.png的识别结果为843*244,运算结果为205692
./captcha_verify/230-67除以70.png的识别结果为67/70,运算结果为0.9571428571428572
./captcha_verify/231-7乘31.png的识别结果为7*31,运算结果为217
./captcha_verify/232-71减63.png的识别结果为71-63,运算结果为8
./captcha_verify/233-2除以48.png的识别结果为2/48,运算结果为0.041666666666666664
./captcha_verify/234-32减381.png的识别结果为32-381,运算结果为-349
./captcha_verify/235-31乘71.png的识别结果为31*71,运算结果为2201
./captcha_verify/236-358加96.png的识别结果为358*96,运算结果为34368
./captcha_verify/237-0除以757.png的识别结果为0/757,运算结果为0.0
./captcha_verify/238-7减8.png的识别结果为7-8,运算结果为-1
./captcha_verify/239-478减3.png的识别结果为478-3,运算结果为475
./captcha_verify/24-0加796.png的识别结果为0+796,运算结果为796
./captcha_verify/240-8减42.png的识别结果为8-42,运算结果为-34
./captcha_verify/241-640除以459.png的识别结果为640/459,运算结果为1.3943355119825709
./captcha_verify/242-702加502.png的识别结果为702+502,运算结果为1204
./captcha_verify/243-15加317.png的识别结果为15+317,运算结果为332
./captcha_verify/244-51乘761.png的识别结果为51*761,运算结果为38811
./captcha_verify/245-5除以93.png的识别结果为5/93,运算结果为0.053763440860215055
./captcha_verify/246-903加216.png的识别结果为903+216,运算结果为1119
./captcha_verify/247-49除以9.png的识别结果为49/9,运算结果为5.444444444444445
./captcha_verify/248-0减63.png的识别结果为0-63,运算结果为-63
./captcha_verify/249-329加7.png的识别结果为329+7,运算结果为336
./captcha_verify/25-758乘2.png的识别结果为758*2,运算结果为1516
./captcha_verify/250-69加5.png的识别结果为69+5,运算结果为74
./captcha_verify/251-0乘37.png的识别结果为0*37,运算结果为0
./captcha_verify/252-2乘271.png的识别结果为2*271,运算结果为542
./captcha_verify/253-529减986.png的识别结果为529-986,运算结果为-457
./captcha_verify/254-91加82.png的识别结果为91+82,运算结果为173
./captcha_verify/255-748加29.png的识别结果为748+29,运算结果为777
./captcha_verify/256-9减105.png的识别结果为9-105,运算结果为-96
./captcha_verify/257-846减10.png的识别结果为846-10,运算结果为836
./captcha_verify/258-29减539.png的识别结果为29-539,运算结果为-510
./captcha_verify/259-71乘386.png的识别结果为71*386,运算结果为27406
./captcha_verify/26-1加4.png的识别结果为1+4,运算结果为5
./captcha_verify/260-64减41.png图片处理失败
./captcha_verify/261-5除以74.png的识别结果为5/74,运算结果为0.06756756756756757
./captcha_verify/262-0加919.png的识别结果为0+919,运算结果为919
./captcha_verify/263-0加430.png的识别结果为0+430,运算结果为430
./captcha_verify/264-57减9.png的识别结果为57-9,运算结果为48
./captcha_verify/265-64加618.png的识别结果为64+618,运算结果为682
./captcha_verify/266-30除以61.png图片处理失败
./captcha_verify/267-7减59.png的识别结果为7-59,运算结果为-52
./captcha_verify/268-3减15.png的识别结果为3-15,运算结果为-12
./captcha_verify/269-19加70.png的识别结果为19+70,运算结果为89
./captcha_verify/27-3除以39.png的识别结果为3/39,运算结果为0.07692307692307693
./captcha_verify/270-48减2.png的识别结果为48-2,运算结果为46
./captcha_verify/271-415乘6.png的识别结果为415*6,运算结果为2490
./captcha_verify/272-1加9.png的识别结果为1+9,运算结果为10
./captcha_verify/273-8乘11.png的识别结果为8*11,运算结果为88
./captcha_verify/274-1加8.png的识别结果为1+8,运算结果为9
./captcha_verify/275-38加93.png的识别结果为38+93,运算结果为131
./captcha_verify/276-5除以622.png的识别结果为5/622,运算结果为0.008038585209003215
./captcha_verify/277-9乘51.png的识别结果为9*51,运算结果为459
./captcha_verify/278-803加952.png的识别结果为803+952,运算结果为1755
./captcha_verify/279-9加38.png的识别结果为9+38,运算结果为47
./captcha_verify/28-35加79.png的识别结果为35+79,运算结果为114
./captcha_verify/280-287减2.png的识别结果为287-2,运算结果为285
./captcha_verify/281-198乘763.png的识别结果为198*763,运算结果为151074
./captcha_verify/282-724除以7.png的识别结果为724/7,运算结果为103.42857142857143
./captcha_verify/283-13加26.png的识别结果为13+26,运算结果为39
./captcha_verify/284-586乘8.png图片处理失败
./captcha_verify/285-1加10.png的识别结果为1+10,运算结果为11
./captcha_verify/286-390加694.png图片处理失败
./captcha_verify/287-92加39.png的识别结果为92+39,运算结果为131
./captcha_verify/288-706乘50.png的识别结果为706*50,运算结果为35300
./captcha_verify/289-8乘249.png的识别结果为8*249,运算结果为1992
./captcha_verify/29-241乘5.png的识别结果为241*5,运算结果为1205
./captcha_verify/290-71减1.png的识别结果为71-1,运算结果为70
./captcha_verify/291-7加2.png的识别结果为7+2,运算结果为9
./captcha_verify/292-4减47.png的识别结果为4-47,运算结果为-43
./captcha_verify/293-9乘542.png的识别结果为9*542,运算结果为4878
./captcha_verify/294-63减82.png的识别结果为63-82,运算结果为-19
./captcha_verify/295-730加14.png的识别结果为730+14,运算结果为744
./captcha_verify/296-71除以9.png的识别结果为71/9,运算结果为7.888888888888889
./captcha_verify/297-208除以7.png的识别结果为208/7,运算结果为29.714285714285715
./captcha_verify/298-756减51.png的识别结果为756-51,运算结果为705
./captcha_verify/299-50乘6.png的识别结果为50*6,运算结果为300
./captcha_verify/3-89加3.png的识别结果为89+3,运算结果为92
./captcha_verify/30-70乘84.png的识别结果为70*84,运算结果为5880
./captcha_verify/300-62减92.png的识别结果为62-92,运算结果为-30
./captcha_verify/301-239减294.png的识别结果为239-294,运算结果为-55
./captcha_verify/302-93减1.png的识别结果为93-1,运算结果为92
./captcha_verify/303-318减66.png的识别结果为318-66,运算结果为252
./captcha_verify/304-48除以6.png的识别结果为48/6,运算结果为8.0
./captcha_verify/305-65减457.png的识别结果为65-457,运算结果为-392
./captcha_verify/306-65除以7.png的识别结果为65/7,运算结果为9.285714285714286
./captcha_verify/307-38乘979.png的识别结果为38*979,运算结果为37202
./captcha_verify/308-13乘59.png的识别结果为13*59,运算结果为767
./captcha_verify/309-307加9.png的识别结果为307+9,运算结果为316
./captcha_verify/31-69除以6.png的识别结果为69/6,运算结果为11.5
./captcha_verify/310-5加908.png的识别结果为5+908,运算结果为913
./captcha_verify/311-3加61.png的识别结果为3+61,运算结果为64
./captcha_verify/312-3除以411.png的识别结果为3/411,运算结果为0.0072992700729927005
./captcha_verify/313-2乘898.png的识别结果为2*898,运算结果为1796
./captcha_verify/314-823减2.png的识别结果为823-2,运算结果为821
./captcha_verify/315-1减622.png的识别结果为1-622,运算结果为-621
./captcha_verify/316-9加38.png的识别结果为9+38,运算结果为47
./captcha_verify/317-1减5.png的识别结果为1-5,运算结果为-4
./captcha_verify/318-75减98.png的识别结果为75-98,运算结果为-23
./captcha_verify/319-51除以938.png的识别结果为51/938,运算结果为0.054371002132196165
./captcha_verify/32-514乘8.png的识别结果为514*8,运算结果为4112
./captcha_verify/320-0减2.png的识别结果为0-2,运算结果为-2
./captcha_verify/321-24除以73.png的识别结果为24/73,运算结果为0.3287671232876712
./captcha_verify/322-36除以505.png的识别结果为36/505,运算结果为0.07128712871287128
./captcha_verify/323-34乘7.png图片处理失败
./captcha_verify/324-37加2.png的识别结果为37+2,运算结果为39
./captcha_verify/325-1除以491.png的识别结果为1/491,运算结果为0.002036659877800407
./captcha_verify/326-809减2.png的识别结果为809-2,运算结果为807
./captcha_verify/327-56乘6.png的识别结果为56*6,运算结果为336
./captcha_verify/328-8乘87.png的识别结果为8*87,运算结果为696
./captcha_verify/329-9除以761.png的识别结果为9/761,运算结果为0.011826544021024968
./captcha_verify/33-6乘50.png的识别结果为6*50,运算结果为300
./captcha_verify/330-32加2.png的识别结果为32+2,运算结果为34
./captcha_verify/331-361减60.png的识别结果为361-60,运算结果为301
./captcha_verify/332-25除以18.png的识别结果为25/18,运算结果为1.3888888888888888
./captcha_verify/333-1除以6.png的识别结果为1/6,运算结果为0.16666666666666666
./captcha_verify/334-538乘926.png的识别结果为538*926,运算结果为498188
./captcha_verify/335-793加3.png的识别结果为793+3,运算结果为796
./captcha_verify/336-24加85.png的识别结果为24+85,运算结果为109
./captcha_verify/337-824减550.png的识别结果为824-550,运算结果为274
./captcha_verify/338-7乘160.png的识别结果为7*160,运算结果为1120
./captcha_verify/339-72减5.png的识别结果为72-5,运算结果为67
./captcha_verify/34-427除以3.png的识别结果为427/3,运算结果为142.33333333333334
./captcha_verify/340-4乘17.png的识别结果为4*17,运算结果为68
./captcha_verify/341-9加133.png的识别结果为9+133,运算结果为142
./captcha_verify/342-53加476.png的识别结果为53+476,运算结果为529
./captcha_verify/343-68除以244.png的识别结果为68/244,运算结果为0.2786885245901639
./captcha_verify/344-385除以5.png的识别结果为385/5,运算结果为77.0
./captcha_verify/345-736乘1.png的识别结果为736*1,运算结果为736
./captcha_verify/346-216乘10.png图片处理失败
./captcha_verify/347-27除以65.png的识别结果为27/65,运算结果为0.4153846153846154
./captcha_verify/348-6加110.png的识别结果为6+110,运算结果为116
./captcha_verify/349-465乘5.png的识别结果为465*5,运算结果为2325
./captcha_verify/35-0乘66.png的识别结果为0*66,运算结果为0
./captcha_verify/350-8加876.png的识别结果为8+876,运算结果为884
./captcha_verify/351-0减150.png的识别结果为0-150,运算结果为-150
./captcha_verify/352-72除以43.png的识别结果为72/43,运算结果为1.6744186046511629
./captcha_verify/353-38加655.png的识别结果为38+655,运算结果为693
./captcha_verify/354-195减1.png的识别结果为195-1,运算结果为194
./captcha_verify/355-8除以82.png的识别结果为8/82,运算结果为0.0975609756097561
./captcha_verify/356-2加651.png的识别结果为2+651,运算结果为653
./captcha_verify/357-14加6.png的识别结果为14+6,运算结果为20
./captcha_verify/358-76减10.png的识别结果为76-10,运算结果为66
./captcha_verify/359-4乘10.png的识别结果为4*10,运算结果为40
./captcha_verify/36-7加3.png的识别结果为7+3,运算结果为10
./captcha_verify/360-349除以3.png的识别结果为349/3,运算结果为116.33333333333333
./captcha_verify/361-59减96.png的识别结果为59-96,运算结果为-37
./captcha_verify/362-83加6.png的识别结果为83+6,运算结果为89
./captcha_verify/363-50除以48.png的识别结果为50/48,运算结果为1.0416666666666667
./captcha_verify/364-105除以16.png的识别结果为105/16,运算结果为6.5625
./captcha_verify/365-39乘9.png的识别结果为39*9,运算结果为351
./captcha_verify/366-194乘3.png的识别结果为194*3,运算结果为582
./captcha_verify/367-3除以76.png的识别结果为3/76,运算结果为0.039473684210526314
./captcha_verify/368-61减4.png的识别结果为61-4,运算结果为57
./captcha_verify/369-12乘13.png的识别结果为12*13,运算结果为156
./captcha_verify/37-31减2.png的识别结果为31-2,运算结果为29
./captcha_verify/370-150除以32.png的识别结果为150/32,运算结果为4.6875
./captcha_verify/371-94乘95.png图片处理失败
./captcha_verify/372-517乘17.png的识别结果为517*17,运算结果为8789
./captcha_verify/373-1减3.png的识别结果为1-3,运算结果为-2
./captcha_verify/374-6除以40.png的识别结果为6/40,运算结果为0.15
./captcha_verify/375-238乘5.png的识别结果为238*5,运算结果为1190
./captcha_verify/376-9乘9.png的识别结果为9*9,运算结果为81
./captcha_verify/377-9除以680.png的识别结果为9/680,运算结果为0.013235294117647059
./captcha_verify/378-62加35.png的识别结果为62+35,运算结果为97
./captcha_verify/379-376减408.png的识别结果为376-408,运算结果为-32
./captcha_verify/38-3乘198.png的识别结果为3*198,运算结果为594
./captcha_verify/380-983乘79.png的识别结果为983*79,运算结果为77657
./captcha_verify/381-73除以1.png的识别结果为73/1,运算结果为73.0
./captcha_verify/382-4乘5.png的识别结果为4*5,运算结果为20
./captcha_verify/383-78减93.png的识别结果为78-93,运算结果为-15
./captcha_verify/384-24加10.png的识别结果为24+10,运算结果为34
./captcha_verify/385-3加60.png的识别结果为3+60,运算结果为63
./captcha_verify/386-70除以483.png的识别结果为70/483,运算结果为0.14492753623188406
./captcha_verify/387-3减518.png的识别结果为3-518,运算结果为-515
./captcha_verify/388-8加330.png的识别结果为8+330,运算结果为338
./captcha_verify/389-4除以3.png的识别结果为4/3,运算结果为1.3333333333333333
./captcha_verify/39-8减3.png的识别结果为8-3,运算结果为5
./captcha_verify/390-17乘51.png的识别结果为17*51,运算结果为867
./captcha_verify/391-56乘715.png的识别结果为56*715,运算结果为40040
./captcha_verify/392-50乘5.png的识别结果为50*5,运算结果为250
./captcha_verify/393-379加5.png的识别结果为379+5,运算结果为384
./captcha_verify/394-4加362.png的识别结果为4+362,运算结果为366
./captcha_verify/395-4乘828.png的识别结果为4*828,运算结果为3312
./captcha_verify/396-410加30.png的识别结果为410+30,运算结果为440
./captcha_verify/397-2加1.png的识别结果为2+1,运算结果为3
./captcha_verify/398-2乘75.png的识别结果为2*75,运算结果为150
./captcha_verify/399-893减75.png的识别结果为893-75,运算结果为818
./captcha_verify/4-59除以10.png的识别结果为59/10,运算结果为5.9
./captcha_verify/40-0减3.png的识别结果为0-3,运算结果为-3
./captcha_verify/400-50减25.png的识别结果为50-25,运算结果为25
./captcha_verify/401-3除以32.png的识别结果为3/32,运算结果为0.09375
./captcha_verify/402-972减58.png的识别结果为972-58,运算结果为914
./captcha_verify/403-7乘10.png的识别结果为7*10,运算结果为70
./captcha_verify/404-4减64.png的识别结果为4-64,运算结果为-60
./captcha_verify/405-548除以490.png的识别结果为548/490,运算结果为1.1183673469387756
./captcha_verify/406-3加10.png的识别结果为3+10,运算结果为13
./captcha_verify/407-5加35.png的识别结果为5+35,运算结果为40
./captcha_verify/408-45乘7.png的识别结果为45*7,运算结果为315
./captcha_verify/409-24乘1.png的识别结果为24*1,运算结果为24
./captcha_verify/41-2加92.png的识别结果为2+92,运算结果为94
./captcha_verify/410-2乘1.png的识别结果为2*1,运算结果为2
./captcha_verify/411-8加4.png的识别结果为8+4,运算结果为12
./captcha_verify/412-498乘19.png的识别结果为498*19,运算结果为9462
./captcha_verify/413-829乘128.png的识别结果为829*128,运算结果为106112
./captcha_verify/414-5加3.png的识别结果为5+3,运算结果为8
./captcha_verify/415-6乘32.png的识别结果为6*32,运算结果为192
./captcha_verify/416-2乘963.png的识别结果为2*963,运算结果为1926
./captcha_verify/417-298减29.png的识别结果为298-29,运算结果为269
./captcha_verify/418-4加1.png的识别结果为4+1,运算结果为5
./captcha_verify/419-9乘4.png的识别结果为9*4,运算结果为36
./captcha_verify/42-3乘5.png的识别结果为3*5,运算结果为15
./captcha_verify/420-17乘16.png的识别结果为17*16,运算结果为272
./captcha_verify/421-26减183.png的识别结果为26-183,运算结果为-157
./captcha_verify/422-43减646.png的识别结果为43-646,运算结果为-603
./captcha_verify/423-789乘477.png图片处理失败
./captcha_verify/424-80乘420.png的识别结果为80*420,运算结果为33600
./captcha_verify/425-4乘80.png的识别结果为4*80,运算结果为320
./captcha_verify/426-83减57.png的识别结果为83-57,运算结果为26
./captcha_verify/427-7乘55.png的识别结果为7*55,运算结果为385
./captcha_verify/428-9加969.png的识别结果为9+969,运算结果为978
./captcha_verify/429-690乘975.png的识别结果为690*975,运算结果为672750
./captcha_verify/43-9乘759.png的识别结果为9*759,运算结果为6831
./captcha_verify/430-7除以3.png的识别结果为7/3,运算结果为2.3333333333333335
./captcha_verify/431-19除以10.png的识别结果为19/10,运算结果为1.9
./captcha_verify/432-1加59.png的识别结果为1+59,运算结果为60
./captcha_verify/433-517减6.png的识别结果为517-6,运算结果为511
./captcha_verify/434-7乘55.png的识别结果为7*55,运算结果为385
./captcha_verify/435-90乘9.png的识别结果为90*9,运算结果为810
./captcha_verify/436-78乘807.png的识别结果为78*807,运算结果为62946
./captcha_verify/437-24除以5.png的识别结果为24/5,运算结果为4.8
./captcha_verify/438-14乘20.png的识别结果为14*20,运算结果为280
./captcha_verify/439-460乘7.png的识别结果为460*7,运算结果为3220
./captcha_verify/44-93加891.png的识别结果为93+891,运算结果为984
./captcha_verify/440-7乘2.png的识别结果为7*2,运算结果为14
./captcha_verify/441-35加1.png的识别结果为35+1,运算结果为36
./captcha_verify/442-3乘57.png的识别结果为3*57,运算结果为171
./captcha_verify/443-21减36.png的识别结果为21-36,运算结果为-15
./captcha_verify/444-812乘10.png的识别结果为812*10,运算结果为8120
./captcha_verify/445-478加21.png的识别结果为478+21,运算结果为499
./captcha_verify/446-7除以30.png的识别结果为7/30,运算结果为0.23333333333333334
./captcha_verify/447-89乘747.png的识别结果为89*747,运算结果为66483
./captcha_verify/448-51加54.png图片处理失败
./captcha_verify/449-12乘3.png的识别结果为12*3,运算结果为36
./captcha_verify/45-5除以540.png图片处理失败
./captcha_verify/450-748乘10.png的识别结果为748*10,运算结果为7480
./captcha_verify/451-5除以4.png的识别结果为5/4,运算结果为1.25
./captcha_verify/452-7乘807.png的识别结果为7*807,运算结果为5649
./captcha_verify/453-3加8.png的识别结果为3+8,运算结果为11
./captcha_verify/454-79除以9.png的识别结果为79/9,运算结果为8.777777777777779
./captcha_verify/455-65除以4.png的识别结果为65/4,运算结果为16.25
./captcha_verify/456-96乘90.png的识别结果为96*90,运算结果为8640
./captcha_verify/457-739加85.png的识别结果为739+85,运算结果为824
./captcha_verify/458-1减330.png的识别结果为1-330,运算结果为-329
./captcha_verify/459-19减24.png的识别结果为19-24,运算结果为-5
./captcha_verify/46-19加69.png的识别结果为19+69,运算结果为88
./captcha_verify/460-297加214.png的识别结果为297+214,运算结果为511
./captcha_verify/461-871乘92.png的识别结果为871*92,运算结果为80132
./captcha_verify/462-249除以8.png的识别结果为249/8,运算结果为31.125
./captcha_verify/463-12减183.png的识别结果为12-183,运算结果为-171
./captcha_verify/464-69除以17.png的识别结果为69/17,运算结果为4.0588235294117645
./captcha_verify/465-4乘6.png的识别结果为4*6,运算结果为24
./captcha_verify/466-218减9.png的识别结果为218-9,运算结果为209
./captcha_verify/467-0减86.png的识别结果为0-86,运算结果为-86
./captcha_verify/468-9乘97.png的识别结果为9*97,运算结果为873
./captcha_verify/469-41减766.png的识别结果为41-766,运算结果为-725
./captcha_verify/47-8乘26.png的识别结果为8*26,运算结果为208
./captcha_verify/470-93减8.png的识别结果为93-8,运算结果为85
./captcha_verify/471-95乘38.png的识别结果为95*38,运算结果为3610
./captcha_verify/472-681加408.png的识别结果为681+408,运算结果为1089
./captcha_verify/473-82加79.png的识别结果为82+79,运算结果为161
./captcha_verify/474-85加73.png的识别结果为85+73,运算结果为158
./captcha_verify/475-9加655.png的识别结果为9+655,运算结果为664
./captcha_verify/476-90乘48.png的识别结果为90*48,运算结果为4320
./captcha_verify/477-53乘688.png的识别结果为53*688,运算结果为36464
./captcha_verify/478-76减2.png的识别结果为76-2,运算结果为74
./captcha_verify/479-3加8.png的识别结果为3+8,运算结果为11
./captcha_verify/48-52乘30.png的识别结果为52*30,运算结果为1560
./captcha_verify/480-71减9.png的识别结果为71-9,运算结果为62
./captcha_verify/481-5加27.png的识别结果为5+27,运算结果为32
./captcha_verify/482-21减9.png的识别结果为21-9,运算结果为12
./captcha_verify/483-3加90.png的识别结果为3+90,运算结果为93
./captcha_verify/484-24减4.png的识别结果为24-4,运算结果为20
./captcha_verify/485-634除以539.png图片处理失败
./captcha_verify/486-98减404.png的识别结果为98-404,运算结果为-306
./captcha_verify/487-4加651.png的识别结果为4+651,运算结果为655
./captcha_verify/488-206加22.png的识别结果为206+22,运算结果为228
./captcha_verify/489-95乘47.png的识别结果为95*47,运算结果为4465
./captcha_verify/49-567加1.png的识别结果为567+1,运算结果为568
./captcha_verify/490-581加731.png的识别结果为581+731,运算结果为1312
./captcha_verify/491-185加93.png的识别结果为185+93,运算结果为278
./captcha_verify/492-6除以648.png的识别结果为6/648,运算结果为0.009259259259259259
./captcha_verify/493-915加52.png的识别结果为915+52,运算结果为967
./captcha_verify/494-219加104.png的识别结果为219+104,运算结果为323
./captcha_verify/495-516乘8.png的识别结果为516*8,运算结果为4128
./captcha_verify/496-79减26.png的识别结果为79-26,运算结果为53
./captcha_verify/497-3除以14.png的识别结果为3/14,运算结果为0.21428571428571427
./captcha_verify/498-73加9.png的识别结果为73+9,运算结果为82
./captcha_verify/499-5除以65.png的识别结果为5/65,运算结果为0.07692307692307693
./captcha_verify/5-69加1.png的识别结果为69+1,运算结果为70
./captcha_verify/50-9加25.png的识别结果为9+25,运算结果为34
./captcha_verify/500-34除以6.png的识别结果为34/6,运算结果为5.666666666666667
./captcha_verify/501-69加520.png的识别结果为69+520,运算结果为589
./captcha_verify/502-430乘8.png的识别结果为430*8,运算结果为3440
./captcha_verify/503-3减54.png的识别结果为3-54,运算结果为-51
./captcha_verify/504-1乘9.png的识别结果为1*9,运算结果为9
./captcha_verify/505-7加252.png的识别结果为7+252,运算结果为259
./captcha_verify/506-653除以8.png的识别结果为653/8,运算结果为81.625
./captcha_verify/507-52除以3.png的识别结果为52/3,运算结果为17.333333333333332
./captcha_verify/508-209减7.png的识别结果为209-7,运算结果为202
./captcha_verify/509-9加363.png的识别结果为9+363,运算结果为372
./captcha_verify/51-597除以82.png的识别结果为597/82,运算结果为7.280487804878049
./captcha_verify/510-4减1.png的识别结果为4-1,运算结果为3
./captcha_verify/511-8除以2.png的识别结果为8/2,运算结果为4.0
./captcha_verify/512-3加2.png的识别结果为3+2,运算结果为5
./captcha_verify/513-253除以805.png的识别结果为253/805,运算结果为0.3142857142857143
./captcha_verify/514-894乘399.png的识别结果为894*399,运算结果为356706
./captcha_verify/515-816减84.png的识别结果为816-84,运算结果为732
./captcha_verify/516-6加11.png的识别结果为6+11,运算结果为17
./captcha_verify/517-83除以438.png的识别结果为83/438,运算结果为0.18949771689497716
./captcha_verify/518-862乘8.png的识别结果为862*8,运算结果为6896
./captcha_verify/519-72除以92.png的识别结果为72/92,运算结果为0.782608695652174
./captcha_verify/52-71除以38.png的识别结果为71/38,运算结果为1.868421052631579
./captcha_verify/520-527加387.png的识别结果为527+387,运算结果为914
./captcha_verify/521-65除以6.png的识别结果为65/6,运算结果为10.833333333333334
./captcha_verify/522-4加6.png的识别结果为4+6,运算结果为10
./captcha_verify/523-427加54.png的识别结果为427+54,运算结果为481
./captcha_verify/524-2乘10.png的识别结果为2*10,运算结果为20
./captcha_verify/525-3乘14.png图片处理失败
./captcha_verify/526-679加572.png的识别结果为679+572,运算结果为1251
./captcha_verify/527-736除以562.png的识别结果为736/562,运算结果为1.309608540925267
./captcha_verify/528-874加5.png的识别结果为874+5,运算结果为879
./captcha_verify/529-5减1.png的识别结果为5-1,运算结果为4
./captcha_verify/53-86加30.png的识别结果为86+30,运算结果为116
./captcha_verify/530-1除以98.png的识别结果为1/98,运算结果为0.01020408163265306
./captcha_verify/531-3加8.png的识别结果为3+8,运算结果为11
./captcha_verify/532-26减85.png的识别结果为26-85,运算结果为-59
./captcha_verify/533-84加61.png图片处理失败
./captcha_verify/534-6减732.png的识别结果为6-732,运算结果为-726
./captcha_verify/535-21加68.png的识别结果为21+68,运算结果为89
./captcha_verify/536-4乘60.png的识别结果为4*60,运算结果为240
./captcha_verify/537-9减9.png的识别结果为9-9,运算结果为0
./captcha_verify/538-12乘1.png的识别结果为12*1,运算结果为12
./captcha_verify/539-0除以974.png图片处理失败
./captcha_verify/54-89加44.png的识别结果为89+44,运算结果为133
./captcha_verify/540-65加9.png的识别结果为65+9,运算结果为74
./captcha_verify/541-78乘851.png的识别结果为78*851,运算结果为66378
./captcha_verify/542-9加733.png的识别结果为9+733,运算结果为742
./captcha_verify/543-51除以848.png的识别结果为51/848,运算结果为0.060141509433962265
./captcha_verify/544-891加1.png的识别结果为891+1,运算结果为892
./captcha_verify/545-401除以6.png图片处理失败
./captcha_verify/546-508减422.png的识别结果为508-422,运算结果为86
./captcha_verify/547-8减58.png的识别结果为8-58,运算结果为-50
./captcha_verify/548-12加597.png的识别结果为12+597,运算结果为609
./captcha_verify/549-8乘8.png的识别结果为8*8,运算结果为64
./captcha_verify/55-0除以33.png的识别结果为0/33,运算结果为0.0
./captcha_verify/550-47加3.png的识别结果为47+3,运算结果为50
./captcha_verify/551-689加2.png的识别结果为689+2,运算结果为691
./captcha_verify/552-425乘616.png的识别结果为425*616,运算结果为261800
./captcha_verify/553-724乘7.png的识别结果为724*7,运算结果为5068
./captcha_verify/554-4减53.png的识别结果为4-53,运算结果为-49
./captcha_verify/555-482加104.png的识别结果为482+104,运算结果为586
./captcha_verify/556-0加5.png的识别结果为0+5,运算结果为5
./captcha_verify/557-3乘5.png的识别结果为3*5,运算结果为15
./captcha_verify/558-62减971.png的识别结果为62-971,运算结果为-909
./captcha_verify/559-7加9.png的识别结果为7+9,运算结果为16
./captcha_verify/56-1加55.png的识别结果为1+55,运算结果为56
./captcha_verify/560-80减183.png的识别结果为80-183,运算结果为-103
./captcha_verify/561-152除以298.png的识别结果为152/298,运算结果为0.5100671140939598
./captcha_verify/562-3乘7.png的识别结果为3*7,运算结果为21
./captcha_verify/563-2除以766.png的识别结果为2/766,运算结果为0.0026109660574412533
./captcha_verify/564-908减74.png的识别结果为908-74,运算结果为834
./captcha_verify/565-401减77.png的识别结果为401-77,运算结果为324
./captcha_verify/566-0减14.png的识别结果为0-14,运算结果为-14
./captcha_verify/567-17加3.png的识别结果为17+3,运算结果为20
./captcha_verify/568-4除以16.png的识别结果为4/16,运算结果为0.25
./captcha_verify/569-86除以103.png的识别结果为86/103,运算结果为0.8349514563106796
./captcha_verify/57-684加525.png的识别结果为684+525,运算结果为1209
./captcha_verify/570-859乘38.png图片处理失败
./captcha_verify/571-35乘82.png的识别结果为35*82,运算结果为2870
./captcha_verify/572-7减972.png的识别结果为7-972,运算结果为-965
./captcha_verify/573-509除以821.png的识别结果为509/821,运算结果为0.6199756394640682
./captcha_verify/574-8减463.png的识别结果为8-463,运算结果为-455
./captcha_verify/575-421减32.png图片处理失败
./captcha_verify/576-1加71.png的识别结果为1+71,运算结果为72
./captcha_verify/577-149加5.png的识别结果为149+5,运算结果为154
./captcha_verify/578-5加69.png的识别结果为5+69,运算结果为74
./captcha_verify/579-93减8.png的识别结果为93-8,运算结果为85
./captcha_verify/58-59加32.png的识别结果为59+32,运算结果为91
./captcha_verify/580-27减793.png的识别结果为27-793,运算结果为-766
./captcha_verify/581-3加390.png的识别结果为3+390,运算结果为393
./captcha_verify/582-1除以590.png的识别结果为1/590,运算结果为0.001694915254237288
./captcha_verify/583-7减92.png的识别结果为7-92,运算结果为-85
./captcha_verify/584-69加870.png的识别结果为69+870,运算结果为939
./captcha_verify/585-0乘744.png的识别结果为0*744,运算结果为0
./captcha_verify/586-941除以376.png图片处理失败
./captcha_verify/587-80减568.png的识别结果为80-568,运算结果为-488
./captcha_verify/588-25除以5.png的识别结果为25/5,运算结果为5.0
./captcha_verify/589-7乘6.png的识别结果为7*6,运算结果为42
./captcha_verify/59-4除以421.png的识别结果为4/421,运算结果为0.009501187648456057
./captcha_verify/590-13除以7.png的识别结果为13/7,运算结果为1.8571428571428572
./captcha_verify/591-829减9.png的识别结果为829-9,运算结果为820
./captcha_verify/592-2乘9.png的识别结果为2*9,运算结果为18
./captcha_verify/593-48减61.png的识别结果为48-61,运算结果为-13
./captcha_verify/594-23除以70.png的识别结果为23/70,运算结果为0.32857142857142857
./captcha_verify/595-93减296.png的识别结果为93-296,运算结果为-203
./captcha_verify/596-982加86.png图片处理失败
./captcha_verify/597-70减36.png的识别结果为70-36,运算结果为34
./captcha_verify/598-768乘268.png的识别结果为768*268,运算结果为205824
./captcha_verify/599-5乘51.png的识别结果为5*51,运算结果为255
./captcha_verify/6-45除以68.png的识别结果为45/68,运算结果为0.6617647058823529
./captcha_verify/60-673除以139.png的识别结果为673/139,运算结果为4.841726618705036
./captcha_verify/600-27减82.png的识别结果为27-82,运算结果为-55
./captcha_verify/601-923除以27.png图片处理失败
./captcha_verify/602-5加702.png的识别结果为5+702,运算结果为707
./captcha_verify/603-71减4.png的识别结果为71-4,运算结果为67
./captcha_verify/604-109减5.png的识别结果为109-5,运算结果为104
./captcha_verify/605-3乘835.png的识别结果为3*835,运算结果为2505
./captcha_verify/606-8减1.png的识别结果为8-1,运算结果为7
./captcha_verify/607-8加21.png的识别结果为8+21,运算结果为29
./captcha_verify/608-1乘573.png的识别结果为1*573,运算结果为573
./captcha_verify/609-7加8.png的识别结果为7+8,运算结果为15
./captcha_verify/61-38乘622.png的识别结果为38*622,运算结果为23636
./captcha_verify/610-16加7.png的识别结果为16+7,运算结果为23
./captcha_verify/611-16乘37.png的识别结果为16*37,运算结果为592
./captcha_verify/612-87除以385.png的识别结果为87/385,运算结果为0.22597402597402597
./captcha_verify/613-0减4.png的识别结果为0-4,运算结果为-4
./captcha_verify/614-675除以6.png图片处理失败
./captcha_verify/615-759减10.png的识别结果为759-10,运算结果为749
./captcha_verify/616-4乘6.png的识别结果为4*6,运算结果为24
./captcha_verify/617-40减426.png的识别结果为40-426,运算结果为-386
./captcha_verify/618-572加2.png的识别结果为572+2,运算结果为574
./captcha_verify/619-564减9.png图片处理失败
./captcha_verify/62-23除以13.png的识别结果为23/13,运算结果为1.7692307692307692
./captcha_verify/620-75减7.png的识别结果为75-7,运算结果为68
./captcha_verify/621-9乘94.png的识别结果为9*94,运算结果为846
./captcha_verify/622-628除以903.png的识别结果为628/903,运算结果为0.6954595791805094
./captcha_verify/623-407加5.png的识别结果为407+5,运算结果为412
./captcha_verify/624-35加63.png的识别结果为35+63,运算结果为98
./captcha_verify/625-27乘3.png的识别结果为27*3,运算结果为81
./captcha_verify/626-190除以5.png的识别结果为190/5,运算结果为38.0
./captcha_verify/627-6减635.png的识别结果为6-635,运算结果为-629
./captcha_verify/628-912加270.png的识别结果为912+270,运算结果为1182
./captcha_verify/629-65加10.png的识别结果为65+10,运算结果为75
./captcha_verify/63-1乘175.png的识别结果为1*175,运算结果为175
./captcha_verify/630-172加7.png的识别结果为172+7,运算结果为179
./captcha_verify/631-1加24.png的识别结果为1+24,运算结果为25
./captcha_verify/632-680减490.png的识别结果为680-490,运算结果为190
./captcha_verify/633-60乘4.png的识别结果为60*4,运算结果为240
./captcha_verify/634-68除以7.png的识别结果为68/7,运算结果为9.714285714285714
./captcha_verify/635-617减80.png的识别结果为617-80,运算结果为537
./captcha_verify/636-8加44.png的识别结果为8+44,运算结果为52
./captcha_verify/637-349减40.png图片处理失败
./captcha_verify/638-3除以699.png的识别结果为3/699,运算结果为0.004291845493562232
./captcha_verify/639-49乘399.png的识别结果为49*399,运算结果为19551
./captcha_verify/64-7减750.png的识别结果为7-750,运算结果为-743
./captcha_verify/640-6乘99.png的识别结果为6*99,运算结果为594
./captcha_verify/641-6减76.png的识别结果为6-76,运算结果为-70
./captcha_verify/642-26乘37.png的识别结果为26*37,运算结果为962
./captcha_verify/643-5减64.png的识别结果为5-64,运算结果为-59
./captcha_verify/644-586乘73.png的识别结果为586*73,运算结果为42778
./captcha_verify/645-3减7.png的识别结果为3-7,运算结果为-4
./captcha_verify/646-4加590.png的识别结果为4+590,运算结果为594
./captcha_verify/647-729加290.png的识别结果为729+290,运算结果为1019
./captcha_verify/648-32加5.png的识别结果为32+5,运算结果为37
./captcha_verify/649-6除以94.png的识别结果为6/94,运算结果为0.06382978723404255
./captcha_verify/65-963乘5.png的识别结果为963*5,运算结果为4815
./captcha_verify/650-18加72.png的识别结果为18+72,运算结果为90
./captcha_verify/651-508减428.png的识别结果为508-428,运算结果为80
./captcha_verify/652-179减99.png的识别结果为179-99,运算结果为80
./captcha_verify/653-29除以237.png的识别结果为29/237,运算结果为0.12236286919831224
./captcha_verify/654-934加4.png的识别结果为934+4,运算结果为938
./captcha_verify/655-64加155.png图片处理失败
./captcha_verify/656-435除以986.png的识别结果为435/986,运算结果为0.4411764705882353
./captcha_verify/657-47减7.png的识别结果为47-7,运算结果为40
./captcha_verify/658-83除以91.png的识别结果为83/91,运算结果为0.9120879120879121
./captcha_verify/659-40除以672.png的识别结果为40/672,运算结果为0.05952380952380952
./captcha_verify/66-9乘258.png的识别结果为9*258,运算结果为2322
./captcha_verify/660-609乘31.png的识别结果为609*31,运算结果为18879
./captcha_verify/661-125加92.png的识别结果为125+92,运算结果为217
./captcha_verify/662-45除以432.png的识别结果为45/432,运算结果为0.10416666666666667
./captcha_verify/663-18除以99.png的识别结果为18/99,运算结果为0.18181818181818182
./captcha_verify/664-90除以4.png的识别结果为90/4,运算结果为22.5
./captcha_verify/665-891除以199.png的识别结果为891/199,运算结果为4.477386934673367
./captcha_verify/666-8除以10.png的识别结果为8/10,运算结果为0.8
./captcha_verify/667-164乘28.png的识别结果为164*28,运算结果为4592
./captcha_verify/668-3减9.png的识别结果为3-9,运算结果为-6
./captcha_verify/669-74加8.png的识别结果为74+8,运算结果为82
./captcha_verify/67-981除以5.png的识别结果为981/5,运算结果为196.2
./captcha_verify/670-794除以10.png的识别结果为794/10,运算结果为79.4
./captcha_verify/671-7加5.png的识别结果为7+5,运算结果为12
./captcha_verify/672-75乘68.png的识别结果为75*68,运算结果为5100
./captcha_verify/673-68减7.png的识别结果为68-7,运算结果为61
./captcha_verify/674-614乘8.png的识别结果为614*8,运算结果为4912
./captcha_verify/675-1加569.png的识别结果为1+569,运算结果为570
./captcha_verify/676-75加10.png的识别结果为75+10,运算结果为85
./captcha_verify/677-1减5.png的识别结果为1-5,运算结果为-4
./captcha_verify/678-5除以6.png图片处理失败
./captcha_verify/679-26加760.png的识别结果为26+760,运算结果为786
./captcha_verify/68-623加81.png的识别结果为623+81,运算结果为704
./captcha_verify/680-8加144.png的识别结果为8+144,运算结果为152
./captcha_verify/681-36除以16.png的识别结果为36/16,运算结果为2.25
./captcha_verify/682-75减547.png图片处理失败
./captcha_verify/683-50减7.png的识别结果为50-7,运算结果为43
./captcha_verify/684-67加85.png的识别结果为67+85,运算结果为152
./captcha_verify/685-96乘2.png的识别结果为96*2,运算结果为192
./captcha_verify/686-486乘541.png的识别结果为486*541,运算结果为262926
./captcha_verify/687-298乘97.png的识别结果为298*97,运算结果为28906
./captcha_verify/688-1减313.png的识别结果为1-313,运算结果为-312
./captcha_verify/689-56加38.png的识别结果为56+38,运算结果为94
./captcha_verify/69-7减16.png的识别结果为7-16,运算结果为-9
./captcha_verify/690-874除以9.png的识别结果为874/9,运算结果为97.11111111111111
./captcha_verify/691-50减9.png的识别结果为50-9,运算结果为41
./captcha_verify/692-76乘10.png的识别结果为76*10,运算结果为760
./captcha_verify/693-924除以72.png图片处理失败
./captcha_verify/694-2乘897.png的识别结果为2*897,运算结果为1794
./captcha_verify/695-571减5.png的识别结果为571-5,运算结果为566
./captcha_verify/696-48除以833.png的识别结果为48/833,运算结果为0.057623049219687875
./captcha_verify/697-150加95.png的识别结果为150+95,运算结果为245
./captcha_verify/698-4除以639.png的识别结果为4/639,运算结果为0.006259780907668232
./captcha_verify/699-563加18.png的识别结果为563+18,运算结果为581
./captcha_verify/7-3乘410.png的识别结果为3*410,运算结果为1230
./captcha_verify/70-49加10.png的识别结果为49+10,运算结果为59
./captcha_verify/700-83加8.png的识别结果为83+8,运算结果为91
./captcha_verify/701-1除以257.png的识别结果为1/257,运算结果为0.0038910505836575876
./captcha_verify/702-8除以840.png的识别结果为8/840,运算结果为0.009523809523809525
./captcha_verify/703-618除以783.png的识别结果为618/783,运算结果为0.789272030651341
./captcha_verify/704-596加362.png的识别结果为596+362,运算结果为958
./captcha_verify/705-64加6.png的识别结果为64+6,运算结果为70
./captcha_verify/706-31除以3.png的识别结果为31/3,运算结果为10.333333333333334
./captcha_verify/707-6加7.png的识别结果为6+7,运算结果为13
./captcha_verify/708-329加7.png的识别结果为329+7,运算结果为336
./captcha_verify/709-457乘94.png的识别结果为457*94,运算结果为42958
./captcha_verify/71-591减46.png的识别结果为591-46,运算结果为545
./captcha_verify/710-3乘988.png的识别结果为3*988,运算结果为2964
./captcha_verify/711-70除以87.png的识别结果为70/87,运算结果为0.8045977011494253
./captcha_verify/712-367乘74.png的识别结果为367*74,运算结果为27158
./captcha_verify/713-2乘55.png的识别结果为2*55,运算结果为110
./captcha_verify/714-409减6.png的识别结果为409-6,运算结果为403
./captcha_verify/715-208减5.png的识别结果为208-5,运算结果为203
./captcha_verify/716-98除以4.png的识别结果为98/4,运算结果为24.5
./captcha_verify/717-359减9.png的识别结果为359-9,运算结果为350
./captcha_verify/718-2乘11.png的识别结果为2*11,运算结果为22
./captcha_verify/719-13乘270.png的识别结果为13*270,运算结果为3510
./captcha_verify/72-643减636.png图片处理失败
./captcha_verify/720-473减66.png的识别结果为473-66,运算结果为407
./captcha_verify/721-6加76.png的识别结果为6+76,运算结果为82
./captcha_verify/722-802除以355.png的识别结果为802/355,运算结果为2.259154929577465
./captcha_verify/723-6加59.png的识别结果为6+59,运算结果为65
./captcha_verify/724-6加10.png的识别结果为6+10,运算结果为16
./captcha_verify/725-7加6.png的识别结果为7+6,运算结果为13
./captcha_verify/726-134加841.png图片处理失败
./captcha_verify/727-60乘46.png的识别结果为60-46,运算结果为14
./captcha_verify/728-872加649.png的识别结果为872+649,运算结果为1521
./captcha_verify/729-398减6.png的识别结果为398-6,运算结果为392
./captcha_verify/73-587减54.png的识别结果为587-54,运算结果为533
./captcha_verify/730-80减37.png的识别结果为80-37,运算结果为43
./captcha_verify/731-34减16.png的识别结果为34-16,运算结果为18
./captcha_verify/732-5乘75.png的识别结果为5*75,运算结果为375
./captcha_verify/733-6乘98.png的识别结果为6*98,运算结果为588
./captcha_verify/734-802加754.png图片处理失败
./captcha_verify/735-980加73.png的识别结果为980+73,运算结果为1053
./captcha_verify/736-53除以124.png的识别结果为53/124,运算结果为0.4274193548387097
./captcha_verify/737-6减10.png的识别结果为6-10,运算结果为-4
./captcha_verify/738-3除以99.png的识别结果为3/99,运算结果为0.030303030303030304
./captcha_verify/739-56乘88.png的识别结果为56*88,运算结果为4928
./captcha_verify/74-32减524.png的识别结果为32-524,运算结果为-492
./captcha_verify/740-15除以10.png的识别结果为15/10,运算结果为1.5
./captcha_verify/741-4加88.png的识别结果为4+88,运算结果为92
./captcha_verify/742-456除以3.png的识别结果为456/3,运算结果为152.0
./captcha_verify/743-673乘84.png图片处理失败
./captcha_verify/744-3加52.png的识别结果为3+52,运算结果为55
./captcha_verify/745-48乘6.png的识别结果为48*6,运算结果为288
./captcha_verify/746-47乘55.png的识别结果为47*55,运算结果为2585
./captcha_verify/747-614加410.png的识别结果为614+410,运算结果为1024
./captcha_verify/748-89除以7.png的识别结果为89/7,运算结果为12.714285714285714
./captcha_verify/749-9乘3.png的识别结果为9*3,运算结果为27
./captcha_verify/75-1乘5.png的识别结果为1*5,运算结果为5
./captcha_verify/750-17乘942.png的识别结果为17*942,运算结果为16014
./captcha_verify/751-52除以3.png的识别结果为52/3,运算结果为17.333333333333332
./captcha_verify/752-7加3.png的识别结果为7+3,运算结果为10
./captcha_verify/753-5乘3.png的识别结果为5*3,运算结果为15
./captcha_verify/754-9乘10.png的识别结果为9*10,运算结果为90
./captcha_verify/755-98加137.png的识别结果为98+137,运算结果为235
./captcha_verify/756-60加32.png的识别结果为60+32,运算结果为92
./captcha_verify/757-684乘26.png的识别结果为684*26,运算结果为17784
./captcha_verify/758-291除以3.png的识别结果为291/3,运算结果为97.0
./captcha_verify/759-0减31.png的识别结果为0-31,运算结果为-31
./captcha_verify/76-38乘46.png的识别结果为38*46,运算结果为1748
./captcha_verify/760-924乘544.png的识别结果为924*544,运算结果为502656
./captcha_verify/761-17减1.png的识别结果为17-1,运算结果为16
./captcha_verify/762-238除以9.png的识别结果为238/9,运算结果为26.444444444444443
./captcha_verify/763-348减28.png图片处理失败
./captcha_verify/764-7乘481.png的识别结果为7*481,运算结果为3367
./captcha_verify/765-90减211.png的识别结果为90-211,运算结果为-121
./captcha_verify/766-42加1.png的识别结果为42+1,运算结果为43
./captcha_verify/767-41乘14.png的识别结果为41*14,运算结果为574
./captcha_verify/768-1加954.png的识别结果为1+954,运算结果为955
./captcha_verify/769-14减328.png的识别结果为14-328,运算结果为-314
./captcha_verify/77-92加2.png的识别结果为92+2,运算结果为94
./captcha_verify/770-6减4.png的识别结果为6-4,运算结果为2
./captcha_verify/771-827加9.png的识别结果为827+9,运算结果为836
./captcha_verify/772-65乘206.png的识别结果为65*206,运算结果为13390
./captcha_verify/773-4加908.png的识别结果为4+908,运算结果为912
./captcha_verify/774-826乘17.png的识别结果为826*17,运算结果为14042
./captcha_verify/775-31加4.png的识别结果为31+4,运算结果为35
./captcha_verify/776-6除以10.png的识别结果为6/10,运算结果为0.6
./captcha_verify/777-0加2.png的识别结果为0+2,运算结果为2
./captcha_verify/778-24加1.png的识别结果为24+1,运算结果为25
./captcha_verify/779-52除以571.png图片处理失败
./captcha_verify/78-7加464.png图片处理失败
./captcha_verify/780-74乘35.png的识别结果为74*35,运算结果为2590
./captcha_verify/781-503乘486.png的识别结果为503*486,运算结果为244458
./captcha_verify/782-2减4.png的识别结果为2-4,运算结果为-2
./captcha_verify/783-5加7.png的识别结果为5+7,运算结果为12
./captcha_verify/784-598加14.png图片处理失败
./captcha_verify/785-5加264.png的识别结果为5+264,运算结果为269
./captcha_verify/786-3减518.png的识别结果为3-518,运算结果为-515
./captcha_verify/787-896减717.png的识别结果为896-717,运算结果为179
./captcha_verify/788-165加468.png的识别结果为165+468,运算结果为633
./captcha_verify/789-7除以62.png图片处理失败
./captcha_verify/79-548加37.png图片处理失败
./captcha_verify/790-1乘8.png的识别结果为1*8,运算结果为8
./captcha_verify/791-53减2.png的识别结果为53-2,运算结果为51
./captcha_verify/792-38除以43.png的识别结果为38/43,运算结果为0.8837209302325582
./captcha_verify/793-9减7.png的识别结果为9-7,运算结果为2
./captcha_verify/794-0加522.png的识别结果为0+522,运算结果为522
./captcha_verify/795-10除以2.png的识别结果为10/2,运算结果为5.0
./captcha_verify/796-26减2.png的识别结果为26-2,运算结果为24
./captcha_verify/797-57除以84.png的识别结果为57/84,运算结果为0.6785714285714286
./captcha_verify/798-5加290.png的识别结果为5+290,运算结果为295
./captcha_verify/799-6减1.png的识别结果为6-1,运算结果为5
./captcha_verify/8-961减41.png的识别结果为961-41,运算结果为920
./captcha_verify/80-12加459.png的识别结果为12+459,运算结果为471
./captcha_verify/800-365加51.png的识别结果为365+51,运算结果为416
./captcha_verify/801-412除以98.png的识别结果为412/98,运算结果为4.204081632653061
./captcha_verify/802-9乘65.png的识别结果为9*65,运算结果为585
./captcha_verify/803-3乘9.png的识别结果为3*9,运算结果为27
./captcha_verify/804-57减9.png的识别结果为57-9,运算结果为48
./captcha_verify/805-84除以36.png图片处理失败
./captcha_verify/806-0减954.png的识别结果为0-954,运算结果为-954
./captcha_verify/807-3乘316.png的识别结果为3*316,运算结果为948
./captcha_verify/808-629除以33.png的识别结果为629/33,运算结果为19.060606060606062
./captcha_verify/809-963乘5.png的识别结果为963*5,运算结果为4815
./captcha_verify/81-87加33.png的识别结果为87+33,运算结果为120
./captcha_verify/810-42加11.png的识别结果为42+11,运算结果为53
./captcha_verify/811-78乘904.png的识别结果为78*904,运算结果为70512
./captcha_verify/812-95除以26.png的识别结果为95/26,运算结果为3.6538461538461537
./captcha_verify/813-159减4.png的识别结果为159-4,运算结果为155
./captcha_verify/814-5加75.png的识别结果为5+75,运算结果为80
./captcha_verify/815-213减74.png的识别结果为213-74,运算结果为139
./captcha_verify/816-5减4.png的识别结果为5-4,运算结果为1
./captcha_verify/817-5除以33.png的识别结果为5/33,运算结果为0.15151515151515152
./captcha_verify/818-680加680.png的识别结果为680+680,运算结果为1360
./captcha_verify/819-73乘346.png图片处理失败
./captcha_verify/82-385减7.png的识别结果为385-7,运算结果为378
./captcha_verify/820-983除以707.png的识别结果为983/707,运算结果为1.3903818953323903
./captcha_verify/821-6乘30.png的识别结果为6*30,运算结果为180
./captcha_verify/822-952乘68.png的识别结果为952*68,运算结果为64736
./captcha_verify/823-4减138.png的识别结果为4-138,运算结果为-134
./captcha_verify/824-274乘44.png的识别结果为274*44,运算结果为12056
./captcha_verify/825-406加38.png的识别结果为406+38,运算结果为444
./captcha_verify/826-0除以76.png的识别结果为0/76,运算结果为0.0
./captcha_verify/827-19加864.png的识别结果为19+864,运算结果为883
./captcha_verify/828-23加95.png的识别结果为23+95,运算结果为118
./captcha_verify/829-1乘4.png的识别结果为1*4,运算结果为4
./captcha_verify/83-78除以54.png的识别结果为78/54,运算结果为1.4444444444444444
./captcha_verify/830-0加4.png的识别结果为0+4,运算结果为4
./captcha_verify/831-129除以2.png的识别结果为129/2,运算结果为64.5
./captcha_verify/832-53加2.png的识别结果为53+2,运算结果为55
./captcha_verify/833-9加544.png图片处理失败
./captcha_verify/834-84减94.png的识别结果为84-94,运算结果为-10
./captcha_verify/835-763减8.png的识别结果为763-8,运算结果为755
./captcha_verify/836-2除以39.png的识别结果为2/39,运算结果为0.05128205128205128
./captcha_verify/837-605除以966.png的识别结果为605/966,运算结果为0.6262939958592133
./captcha_verify/838-908减24.png的识别结果为908-24,运算结果为884
./captcha_verify/839-17除以10.png的识别结果为17/10,运算结果为1.7
./captcha_verify/84-7除以97.png的识别结果为7/97,运算结果为0.07216494845360824
./captcha_verify/840-7除以24.png的识别结果为7/24,运算结果为0.2916666666666667
./captcha_verify/841-23除以5.png的识别结果为23/5,运算结果为4.6
./captcha_verify/842-506加76.png的识别结果为506+76,运算结果为582
./captcha_verify/843-280减43.png的识别结果为280-43,运算结果为237
./captcha_verify/844-19加6.png的识别结果为19+6,运算结果为25
./captcha_verify/845-2减131.png的识别结果为2-131,运算结果为-129
./captcha_verify/846-96乘10.png的识别结果为96*10,运算结果为960
./captcha_verify/847-7减274.png的识别结果为7-274,运算结果为-267
./captcha_verify/848-36除以24.png的识别结果为36/24,运算结果为1.5
./captcha_verify/849-603除以8.png的识别结果为603/8,运算结果为75.375
./captcha_verify/85-7减35.png的识别结果为7-35,运算结果为-28
./captcha_verify/850-41除以9.png图片处理失败
./captcha_verify/851-9除以376.png的识别结果为9/376,运算结果为0.023936170212765957
./captcha_verify/852-16加215.png的识别结果为16+215,运算结果为231
./captcha_verify/853-6加68.png的识别结果为6+68,运算结果为74
./captcha_verify/854-7减92.png的识别结果为7-92,运算结果为-85
./captcha_verify/855-90除以3.png的识别结果为9/13,运算结果为0.6923076923076923
./captcha_verify/856-92减24.png的识别结果为92-24,运算结果为68
./captcha_verify/857-421加83.png的识别结果为421+83,运算结果为504
./captcha_verify/858-8除以37.png图片处理失败
./captcha_verify/859-413乘898.png的识别结果为413*898,运算结果为370874
./captcha_verify/86-5除以391.png的识别结果为5/391,运算结果为0.01278772378516624
./captcha_verify/860-75除以2.png的识别结果为75/2,运算结果为37.5
./captcha_verify/861-675加406.png的识别结果为675+406,运算结果为1081
./captcha_verify/862-542乘284.png图片处理失败
./captcha_verify/863-802乘649.png的识别结果为802*649,运算结果为520498
./captcha_verify/864-8乘4.png的识别结果为8*4,运算结果为32
./captcha_verify/865-9除以4.png的识别结果为9/4,运算结果为2.25
./captcha_verify/866-6加36.png的识别结果为6+36,运算结果为42
./captcha_verify/867-51乘2.png的识别结果为51*2,运算结果为102
./captcha_verify/868-409加2.png的识别结果为409+2,运算结果为411
./captcha_verify/869-45加2.png的识别结果为45+2,运算结果为47
./captcha_verify/87-8减82.png的识别结果为8-82,运算结果为-74
./captcha_verify/870-97乘541.png图片处理失败
./captcha_verify/871-6加68.png的识别结果为6+68,运算结果为74
./captcha_verify/872-412减1.png的识别结果为412-1,运算结果为411
./captcha_verify/873-0减696.png的识别结果为0-696,运算结果为-696
./captcha_verify/874-6乘648.png的识别结果为6*648,运算结果为3888
./captcha_verify/875-7乘2.png的识别结果为7*2,运算结果为14
./captcha_verify/876-2减48.png的识别结果为2-48,运算结果为-46
./captcha_verify/877-8加239.png的识别结果为8+239,运算结果为247
./captcha_verify/878-381加7.png的识别结果为381+7,运算结果为388
./captcha_verify/879-23加280.png的识别结果为23+280,运算结果为303
./captcha_verify/88-710除以750.png的识别结果为710/750,运算结果为0.9466666666666667
./captcha_verify/880-928乘4.png的识别结果为928*4,运算结果为3712
./captcha_verify/881-90加97.png的识别结果为90+97,运算结果为187
./captcha_verify/882-46加26.png的识别结果为46+26,运算结果为72
./captcha_verify/883-259除以99.png的识别结果为259/99,运算结果为2.6161616161616164
./captcha_verify/884-32减3.png的识别结果为32-3,运算结果为29
./captcha_verify/885-95乘484.png的识别结果为95*484,运算结果为45980
./captcha_verify/886-326除以7.png的识别结果为326/7,运算结果为46.57142857142857
./captcha_verify/887-91加30.png的识别结果为91+30,运算结果为121
./captcha_verify/888-54加72.png的识别结果为54+72,运算结果为126
./captcha_verify/889-92除以10.png的识别结果为92/10,运算结果为9.2
./captcha_verify/89-95乘2.png图片处理失败
./captcha_verify/890-439乘25.png的识别结果为439*25,运算结果为10975
./captcha_verify/891-53乘3.png的识别结果为53*3,运算结果为159
./captcha_verify/892-908除以9.png的识别结果为908/9,运算结果为100.88888888888889
./captcha_verify/893-837减41.png的识别结果为837-41,运算结果为796
./captcha_verify/894-65加296.png的识别结果为65+296,运算结果为361
./captcha_verify/895-91减9.png的识别结果为91-9,运算结果为82
./captcha_verify/896-4减11.png的识别结果为4-11,运算结果为-7
./captcha_verify/897-864加6.png的识别结果为864+6,运算结果为870
./captcha_verify/898-4乘393.png的识别结果为4*393,运算结果为1572
./captcha_verify/899-561减498.png的识别结果为561-498,运算结果为63
./captcha_verify/9-460加26.png的识别结果为460+26,运算结果为486
./captcha_verify/90-19除以81.png的识别结果为19/81,运算结果为0.2345679012345679
./captcha_verify/900-746减491.png的识别结果为746-491,运算结果为255
./captcha_verify/901-0加7.png的识别结果为0+7,运算结果为7
./captcha_verify/902-5乘739.png的识别结果为5*739,运算结果为3695
./captcha_verify/903-693乘630.png的识别结果为693*630,运算结果为436590
./captcha_verify/904-67乘209.png的识别结果为67*209,运算结果为14003
./captcha_verify/905-3加288.png的识别结果为3+288,运算结果为291
./captcha_verify/906-28乘763.png的识别结果为28*763,运算结果为21364
./captcha_verify/907-23减25.png的识别结果为23-25,运算结果为-2
./captcha_verify/908-47加6.png的识别结果为47+6,运算结果为53
./captcha_verify/909-30加1.png的识别结果为30+1,运算结果为31
./captcha_verify/91-82乘2.png的识别结果为82*2,运算结果为164
./captcha_verify/910-3除以6.png的识别结果为3/6,运算结果为0.5
./captcha_verify/911-879乘71.png的识别结果为879*71,运算结果为62409
./captcha_verify/912-176减38.png的识别结果为176-38,运算结果为138
./captcha_verify/913-896减672.png的识别结果为896-672,运算结果为224
./captcha_verify/914-365乘72.png的识别结果为365*72,运算结果为26280
./captcha_verify/915-29除以96.png图片处理失败
./captcha_verify/916-2除以6.png的识别结果为2/6,运算结果为0.3333333333333333
./captcha_verify/917-97乘7.png的识别结果为97*7,运算结果为679
./captcha_verify/918-4除以3.png的识别结果为4/3,运算结果为1.3333333333333333
./captcha_verify/919-68除以822.png的识别结果为68/822,运算结果为0.0827250608272506
./captcha_verify/92-746加9.png的识别结果为746+9,运算结果为755
./captcha_verify/920-704乘802.png的识别结果为704*802,运算结果为564608
./captcha_verify/921-6减3.png的识别结果为6-3,运算结果为3
./captcha_verify/922-618加86.png的识别结果为618+86,运算结果为704
./captcha_verify/923-60减10.png的识别结果为60-10,运算结果为50
./captcha_verify/924-9除以599.png的识别结果为9/599,运算结果为0.015025041736227046
./captcha_verify/925-21加1.png的识别结果为21+1,运算结果为22
./captcha_verify/926-8乘21.png的识别结果为8*21,运算结果为168
./captcha_verify/927-37减5.png的识别结果为37-5,运算结果为32
./captcha_verify/928-325减585.png的识别结果为325-585,运算结果为-260
./captcha_verify/929-940加9.png的识别结果为940+9,运算结果为949
./captcha_verify/93-54加28.png图片处理失败
./captcha_verify/930-91减83.png的识别结果为91-83,运算结果为8
./captcha_verify/931-0除以1.png的识别结果为0/1,运算结果为0.0
./captcha_verify/932-945除以66.png的识别结果为945/66,运算结果为14.318181818181818
./captcha_verify/933-53加725.png的识别结果为53+725,运算结果为778
./captcha_verify/934-75除以3.png的识别结果为75/3,运算结果为25.0
./captcha_verify/935-1除以4.png的识别结果为1/4,运算结果为0.25
./captcha_verify/936-65加91.png的识别结果为65+91,运算结果为156
./captcha_verify/937-138加4.png的识别结果为138+4,运算结果为142
./captcha_verify/938-586加175.png的识别结果为586+175,运算结果为761
./captcha_verify/939-2加402.png的识别结果为2+402,运算结果为404
./captcha_verify/94-97乘5.png的识别结果为97*5,运算结果为485
./captcha_verify/940-0除以824.png的识别结果为0/824,运算结果为0.0
./captcha_verify/941-7减35.png的识别结果为7-35,运算结果为-28
./captcha_verify/942-7减60.png的识别结果为7-60,运算结果为-53
./captcha_verify/943-7减6.png的识别结果为7-6,运算结果为1
./captcha_verify/944-37减390.png的识别结果为37-390,运算结果为-353
./captcha_verify/945-3乘1.png的识别结果为3*1,运算结果为3
./captcha_verify/946-5除以752.png的识别结果为5/752,运算结果为0.006648936170212766
./captcha_verify/947-51除以8.png的识别结果为51/8,运算结果为6.375
./captcha_verify/948-95乘21.png的识别结果为95*21,运算结果为1995
./captcha_verify/949-9减8.png的识别结果为9-8,运算结果为1
./captcha_verify/95-627加7.png的识别结果为627+7,运算结果为634
./captcha_verify/950-329乘99.png的识别结果为329*99,运算结果为32571
./captcha_verify/951-91除以5.png的识别结果为91/5,运算结果为18.2
./captcha_verify/952-8加469.png的识别结果为8+469,运算结果为477
./captcha_verify/953-5除以14.png的识别结果为5/14,运算结果为0.35714285714285715
./captcha_verify/954-480加7.png的识别结果为480+7,运算结果为487
./captcha_verify/955-9乘7.png的识别结果为9*7,运算结果为63
./captcha_verify/956-579加76.png的识别结果为579+76,运算结果为655
./captcha_verify/957-6减9.png的识别结果为6-9,运算结果为-3
./captcha_verify/958-271除以10.png的识别结果为271/10,运算结果为27.1
./captcha_verify/959-864减8.png的识别结果为864-8,运算结果为856
./captcha_verify/96-87乘31.png的识别结果为87*31,运算结果为2697
./captcha_verify/960-802加397.png的识别结果为802+397,运算结果为1199
./captcha_verify/961-7加32.png的识别结果为7+32,运算结果为39
./captcha_verify/962-63乘10.png图片处理失败
./captcha_verify/963-2乘9.png的识别结果为2*9,运算结果为18
./captcha_verify/964-912除以59.png的识别结果为912/59,运算结果为15.457627118644067
./captcha_verify/965-1减88.png的识别结果为1-88,运算结果为-87
./captcha_verify/966-4乘2.png的识别结果为4*2,运算结果为8
./captcha_verify/967-8乘71.png的识别结果为8*71,运算结果为568
./captcha_verify/968-96除以592.png的识别结果为96/592,运算结果为0.16216216216216217
./captcha_verify/969-725除以3.png的识别结果为725/3,运算结果为241.66666666666666
./captcha_verify/97-24加36.png图片处理失败
./captcha_verify/970-9加57.png的识别结果为9+57,运算结果为66
./captcha_verify/971-32加7.png的识别结果为32+7,运算结果为39
./captcha_verify/972-86除以48.png的识别结果为86/48,运算结果为1.7916666666666667
./captcha_verify/973-5乘5.png的识别结果为5*5,运算结果为25
./captcha_verify/974-6加4.png的识别结果为6+4,运算结果为10
./captcha_verify/975-43乘41.png的识别结果为43*41,运算结果为1763
./captcha_verify/976-8减453.png的识别结果为8-453,运算结果为-445
./captcha_verify/977-564除以6.png的识别结果为564/6,运算结果为94.0
./captcha_verify/978-47减72.png的识别结果为47-72,运算结果为-25
./captcha_verify/979-19减282.png的识别结果为19-282,运算结果为-263
./captcha_verify/98-7乘95.png的识别结果为7*95,运算结果为665
./captcha_verify/980-50除以5.png的识别结果为50/5,运算结果为10.0
./captcha_verify/981-10减537.png的识别结果为10-537,运算结果为-527
./captcha_verify/982-8减37.png的识别结果为8-37,运算结果为-29
./captcha_verify/983-5减170.png的识别结果为5-170,运算结果为-165
./captcha_verify/984-68乘30.png的识别结果为68*30,运算结果为2040
./captcha_verify/985-903乘146.png的识别结果为903*146,运算结果为131838
./captcha_verify/986-1加6.png的识别结果为1+6,运算结果为7
./captcha_verify/987-0乘563.png图片处理失败
./captcha_verify/988-17减638.png的识别结果为17-638,运算结果为-621
./captcha_verify/989-93除以125.png的识别结果为93/125,运算结果为0.744
./captcha_verify/99-4乘74.png的识别结果为4*74,运算结果为296
./captcha_verify/990-16乘19.png的识别结果为16*19,运算结果为304
./captcha_verify/991-94除以1.png的识别结果为94/1,运算结果为94.0
./captcha_verify/992-0减97.png的识别结果为0-97,运算结果为-97
./captcha_verify/993-7加74.png的识别结果为7+74,运算结果为81
./captcha_verify/994-6乘96.png的识别结果为6*96,运算结果为576
./captcha_verify/995-326乘269.png的识别结果为326*269,运算结果为87694
./captcha_verify/996-409除以29.png的识别结果为409/29,运算结果为14.10344827586207
./captcha_verify/997-9加296.png的识别结果为9+296,运算结果为305
./captcha_verify/998-7除以1.png的识别结果为7/1,运算结果为7.0
./captcha_verify/999-453除以3.png的识别结果为453/3,运算结果为151.0
0.9968051118210862

predict.py完整代码如下所示:

# predict.py
import os
import pickle
import cv2 as cv
import numpy as np
from process import adjust_img, split_img
from captcha import generate_captcha, Chinese2operator


def load_model(mode_path):
    """加载模型"""
    with open(mode_path, "rb") as f:
        model = pickle.load(f)
    return model


def predict(model, file_path):
    seed = "0123456789+-*/"   # 字符池

    img = cv.imread(file_path)
    img = adjust_img(img)

    # 预测结果和真实结果
    predict_result = ""
    real_captcha = Chinese2operator(file_path.split("-")[-1].replace(".png", ""))

    # 如果图像处理成功,则返回单个数字图像的预测结果和真实结果
    # 如果没成功,则返回0000和真实结果
    is_ok, roi_list = split_img(img, real_captcha)
    if is_ok:
        for i, roi in enumerate(roi_list):
            predict_result += seed[(model.predict(roi.reshape(1, -1))[0])]
        print(f"{file_path}的识别结果为{predict_result},运算结果为{eval(predict_result)}")
        return predict_result, real_captcha
    else:
        print(f"{file_path}图片处理失败")
        return False, None


def get_accuracy(model, captcha_dir):
    """获取验证准确度"""
    all_predict_result = []
    all_real_result = []

    for filename in sorted(os.listdir(captcha_dir)):
        if filename != ".DS_Store":  # Mac电脑上的一种文件,排除掉
            predict_result, real_result = predict(model, f"{captcha_dir}/{filename}")
            if predict_result:
                all_predict_result.append(predict_result)
                all_real_result.append(real_result)

    accuracy = (np.array(all_predict_result) == np.array(all_real_result)).sum() / len(all_predict_result)
    return accuracy


def main():
    captcha_dir = "./captcha_verify"
    generate_captcha(1000, captcha_dir)
    model = load_model("./model.pkl")
    accuracy = get_accuracy(model, captcha_dir)
    print(accuracy)


if __name__ == "__main__":
    main()

总结与提高

在本节我们用Pillow库生成了计算型验证码图片,相较于纯数字或数字+字母验证码,计算型验证码识别难度要高一点,主要原因在于计算型验证码上的字符数量不一,导致图像切割难度会增加很多。虽然识别出字符后还要计算,但其实字符只要被识别出来的话,计算也就不是什么问题。

当然,本节使用的验证码图片在干扰度上还不是特别强,没有加入线条干扰,如果加上线条的话,难度会大很多,因为在图像处理时,很可能会把运算符也给磨平了,导致识别出来的轮廓数量不对。模型也有可能会把一些干扰线条识别成1或者除号/了。

总之,在识别验证码的时候,我们要多观察,尽量找出一些能够提高图像切割的特点和规律,这样训练集的质量就会提高,模型识别精度也就会提高了。

源码下载

链接:https://pan.baidu.com/s/1H7bS2DTFChY9Ub5QrEBxow  

密码:bwmw

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

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

相关文章

【计算机图形学】裁剪算法(Cohen-Sutherland算法 中值分割算法 Liang-Barsky算法)

一 实验目的 编写直线段、多边形裁剪算法熟悉Cohen-Sutherland算法、中值分割算法和Liang-Barsky算法的裁剪二 实验算法理论分析Cohen-Sutherland算法&#xff1a; 中值分割算法&#xff1a; 与CS算法一样&#xff0c;首先对直线段端点进行编码&#xff0c;并把线段与窗口的关…

java创建线程的方法

线程是程序的一种操作单元&#xff0c;在程序中&#xff0c;一个线程和另一个线程是同时存在的。它是一个程序的一部分&#xff0c;但是他又是独立的&#xff0c;它不会影响到另一个线程的执行。但是多个线程同时运行时&#xff0c;会对系统资源造成一定的消耗。 线程之间的竞争…

[Linux] 基础IO

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文…

SQL Server用户定义的函数(UDF)使用详解

SQL Server用户定义的函数一、背景知识1.1、用户定义函数的优点1.2、函数类型1.3、指引1.4、函数中的有效语句1.5、架构绑定函数1.6、指定参数二、创建用户定义函数2.1、限制和权限2.2、标量函数示例&#xff08;标量 UDF&#xff09;2.3、表值函数示例2.3.1、内联表值函数 &am…

leetcode26.删除数组中的重复项

1.原题目链接&#xff1a;力扣 2.题目&#xff1a; 3. 思路&#xff1a;使用两个指针:src与dst,刚开始均指向起始位置&#xff0c;如果src的值与dst值相同&#xff0c;src,如果src的值与dst的值不相同&#xff0c;dst,src的值赋值给dst,src,即两个指针比较&#xff0c;值不相同…

图像去模糊:MIMO-UNet 模型详解

本内容主要介绍实现图像去模糊的 MIMO-UNet 模型。 论文&#xff1a;Rethinking Coarse-to-Fine Approach in Single Image Deblurring 代码&#xff08;官方&#xff09;&#xff1a;https://github.com/chosj95/MIMO-UNet 1. 背景 由于深度学习的成功&#xff0c;基于卷…

docker搭建linux网络代理

docker搭建linux网络代理 1.准备 config.yaml 配置文件&#xff08;含订阅节点、规则&#xff0c;一般机场或者本地配置中含有&#xff09; 在root下创建文件夹命名为clash。上传配置好的config.yaml至clash文件夹。 2.配置 端口: port: 7890 ; socks-port: 7891 运行局域网…

Python网络爬虫之HTTP原理

写爬虫之前&#xff0c;我们还需要了解一些基础知识&#xff0c;如HTTP原理、网页的基础知识、爬虫的基本原理、Cookies的基本原理等。本文中&#xff0c;我们就对这些基础知识做一个简单的总结。 &#x1f31f;HTTP 基本原理 在本文中&#xff0c;我们会详细了解 HTTP的基本原…

医学图像分割之MedNeXt

论文&#xff1a;MedNeXt: Transformer-driven Scaling of ConvNets for Medical Image Segmentation ConvNeXt网络是一种借鉴Transformer的思想进行了改进实现的全卷积网络&#xff0c;其通过全卷积网络和逆向残差瓶颈单元的设计&#xff0c;可以实现比较大的空间感受野。本文…

【MySQL】聚合查询

目录 1、前言 2、插入查询结果 3、聚合查询 3.1 聚合函数 3.1.1 count 3.1.2 sum 3.1.3 avg 3.1.4 max 和 min 4、GROUP BY 子句 5、HAVING 关键字 1、前言 前面的内容已经把基础的增删改查介绍的差不多了&#xff0c;也介绍了表的相关约束&#xff0c; 从本期开始…

windows将exe或者bat封装成系统服务进行管理

NSSM介绍 NSSM(the Non-Sucking Service Manager)是Windows环境下一款免安装的服务管理软件&#xff0c;它可以将应用封装成服务&#xff0c;使之像windows服务可以设置自动启动等。并且可以监控程序运行状态&#xff0c;程序异常中断后自动启动&#xff0c;实现守护进程的功能…

和利时:自主可控 安全高效

4月13—15日&#xff0c;由易派客电子商务有限公司、中国石油和石油化工设备工业协会、北京长城电子商务有限公司共同主办的2023第二届易派客工业品展览会在苏州国际博览中心成功召开。本次展会以“绿色智造融通赋能”为主题&#xff0c;杭州和利时自动化有限公司&#xff08;简…

Cesium:Particle Systems粒子系统

官网文档,点击此处查看。 粒子系统简述 粒子系统是一种用于模拟复杂物理效果的图形学技术,它是一系列小图片的集合,当这些小图片被放在一起查看时,会形成一种更为模糊的对象,例如:火苗、烟、天气或者烟花。 粒子系统效果在电影和游中是十分普遍的。例如:飞机失…

Spark 之 解析json的复杂和嵌套数据结构

本文主要使用以下几种方法&#xff1a; 1&#xff0c;get_json_object()&#xff1a;从一个json 字符串中根据指定的json 路径抽取一个json 对象 2&#xff0c;from_json()&#xff1a;从一个json 字符串中按照指定的schema格式抽取出来作为DataFrame的列 3&#xff0c;to_j…

【洋桃一号板】STM32F103CBT6标准库函数驱动TM1640点亮数码管

一、今天介绍如何使用STM32F103CBT6驱动TM1640点亮数码管&#xff0c;硬件用的洋桃开发板&#xff0c;点亮后效果如下&#xff0c;六个数码管依次显示0.1.2.3.4.5.6.7 硬件原理图如下&#xff0c;只用到了单片机的两个IO口即可实现上图的效果&#xff0c;该开发板上用的是PA11…

chapter-3 -数据库数据模型

以下内容来源于MOOC学习—原课程请见&#xff1a;数据库原理与应用 考研复习 概述 关系及关系模式 笛卡尔积 定义在一组域上的有序对的集合&#xff0c; 域是一组具有相同类型的集合&#xff0c;比如自然数&#xff0c;长度小于n的字符串结合等【比如int age】 从n个域的每…

Linux工具make与makefile

Linux项目自动化构建工具-make/Makefile 目录Linux项目自动化构建工具-make/Makefile引言1、make && makefile2、make执行步骤2.1 依赖关系2.2 依赖方法3、项目清理4、伪目标 .PHONY5、文件的三个时间6、make的工作原理7、Linux下的第一个小程序认识缓冲区进度条①函数…

T5模型简单介绍

目录 一、概要 二、深入扩展 2.1 两个要素 2.2 预训练方法 一、概要 谷歌公司的研究人员提出的 T5&#xff08;Text-to-Text Transfer Transformer&#xff0c;有5个T开头的单词&#xff0c;所以叫做T5&#xff09;模型采用了一种与前述模型截然不同的策略&#xff1a;将不…

RUAS论文阅读笔记

这是CVPR2021的一篇暗光增强的论文 Retinex增强和去噪部分 第一部分的核心公式是一种retinex公式&#xff08;用于暗图增强的retinex公式有几种类型&#xff0c;虽然本质一样但是对于各个分量的定义不一样&#xff09;&#xff1a;yx⊗tyx\otimes tyx⊗t&#xff0c;其中x是正…

Trie|并查集|堆|

目录 初始化 插入 查询 合并集合 连通块中点的数量 堆排序 模拟堆 Trie树是用来快速存储和查找字符串集合的数据结构 #include<iostream> using namespace std; const int N 100010; int son[N][26];//本题为小写因为字母&#xff0c;每个节点最多有26个子节点…