# 算数验证码识别（运算符为中文：加、减、乘）

[En]

The situation encountered in the work that needs to crack the arithmetic verification code

[En]

Step 1: download the pictures in batch and save them to the local folder

def getImg():
i = 0
while i < 10:
html = requests.get('https://cmegsb.cma.org.cn/national_project/CheckCodeImageServlet', verify=False)
image = Image.open(BytesIO(html.content))
image.save('img_test/%s.jpg' % i)
i += 1
print(i)

def begin():
# 图片链接路径
path = r"D:\img_test"
import muggle_ocr
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
threshold_values = [115, 150, 127, 90, 120, 130, 135, 145, 155, 160, 180]
for threshold in threshold_values:
total = len(os.listdir(path))
errorCount = 0
for index, i in enumerate(os.listdir(path)):
right_str = i.split("_")[0]
print('%s / %s' % (index + 1, total), i + "->" + right_str)
yzm = cv2.imread(path + '\\' + i)  # 读图片
yzm = cv2.cvtColor(yzm, cv2.COLOR_BGR2GRAY)  # cv2 方法灰度化
# 二值化
thresh, yzm = cv2.threshold(yzm, threshold, 255, cv2.THRESH_BINARY)
# yzm:表示需要操作的数组
# threshold:表示阈值 （根据验证码图片特性 可选值：90、115、120、127、130、135、150、155、160、180）、常用【115、150、127】--- 这些都是我一个一个的测试出来的
# 255 表示最大值
# 降噪
yzm = cv2.morphologyEx(yzm, cv2.MORPH_CLOSE, np.ones(shape=(1, 1)))
# 保存灰度化的图片
cv2.imwrite('new_img.png', yzm)
img = open('new_img.png', 'rb').read()
text = sdk.predict(image_bytes=img)
if ('乘' in text or '减' in text or '加' in text) and (str(text).replace(' ', '').endswith('=?')):
# 判断是否为 正常值
b = text.replace('=', '').replace('?', '')
a = b.split('乘') if '乘' in text else b.split('加') if '加' in text else b.split('减')
a1 = a[0]
a2 = a[1]
try:
a1 = int(a1)
a2 = int(a2)
print('%s / %s' % (index + 1, total), threshold, ' 正常code: ', text)
print(a1, a2, type(a1), type(a2))
_id = hashlib.md5(str(datetime.datetime.now()).encode('utf-8')).hexdigest()
try:
# 用 a、b 代替 =、?

new_path = './img_save/%s_%s.png' % (text.replace('?', 'b').replace('=', 'a'), _id)
os.rename(path + '\\' + i, new_path)
try:
os.remove(path + '\\' + i)
except:
pass
except Exception as e:
errorCount += 1
except:
errorCount += 1
else:
errorCount += 1
print('运行结束：threshold: %s  共 %s 个, 成功：%s ， 失败：%s' % (threshold, total, total - errorCount, errorCount))

[En]

Therefore, I use this identification, filter out the valid CAPTCHA, and then mark it as a training set.

[En]

After training with this, the recognition rate is more than 95%.

Original: https://blog.csdn.net/huagangwang/article/details/125658421
Author: lewis@110
Title: 算数验证码识别（运算符为中文：加、减、乘）

(0)

### 大家都在看

• #### 京东智联云&贪心科技：图卷积神经网络在推荐系统的应用

人工智能 2023年6月10日
0134
• #### 计算机视觉+人工智能面试笔试总结——深度学习基础

抵扣说明： 1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。 Original: https:…

人工智能 2023年5月28日
0118
• #### csv文件python读取报错编码错误问题终极完美解决

&#x7528;jupyter notebook&#x8FDE;&#x63A5;&#x670D;&#x52A1;&#x5668;&a…

人工智能 2023年7月7日
0124
• #### GAN的评价指标——KID解读（内含FID）

人工智能 2023年5月26日
0314
• #### 什么是数据挖掘？数据挖掘的目标是什么？

数据挖掘绪论 什么是数据挖掘 数据挖掘要解决的问题是什么？ 数据挖掘的任务 * 预测建模 关联分析 聚类分析 异常检测 什么是数据挖掘 并非所有的信息发现任务都被视为数据挖掘。例如…

人工智能 2023年6月19日
0133

作为一名深度学习的小白，最近在做LSTM预测股票问题，发现训练集的shuffle必须为true而测试集的shuffle必须为false。如果训练集的shuffle不设置为true的…

人工智能 2023年6月16日
0179
• #### Jenkins一站成魔【1】传统安装与说明

Jenkins一站成魔【1】传统安装与说明Jenkins一站成魔【2】传统项目CI/CDJenkins一站成魔【3】Docker平台CI/CDJenkins一站成魔【4】K8S平台…

人工智能 2023年6月27日
0136
• #### 论文学习：基于多Agent的联合作战任务调度方法研究

目录 1.作战使命-任务-动作关系图 2.任务调度的意义 3.作战任务清单所包含的内容 4.多Agent系统任务调度的研究工作总结 5.Agent模型 6.多Agent系统 7.A…

人工智能 2023年6月1日
0166
• #### 猿创征文｜程序猿乘风破浪 Python Pygame 原创小游戏【源码+解析】

第一次参加猿创征文活动，肯定要 来一波大的！Σ(⊙▽⊙”a！！！ 在夏天结束不久之际，让我们再来一波冲浪，感受夏日阳光下程序员的刻苦钻研精神，和无处可放基情。 最近学习…

人工智能 2023年7月3日
0116
• #### 【注意力机制集锦】Channel Attention通道注意力网络结构、源码解读系列一

Channel Attention网络结构、源码解读系列一 SE-Net、SK-Net与CBAM 1 SENet 原文链接：SENet原文源码链接：SENet源码 Squeeze-…

人工智能 2023年7月26日
0186
• #### Pandas 模块 – 读写(1)-csv/txt等文档-read_csv/to_csv

目录 1. 读写 csv 或者 txt 文件 1.1 .read_csv（）语法 1.2 .read_csv（）范例 1.2.1 唯一不可缺少的参数 filepath_or_buf…

人工智能 2023年7月6日
0167
• #### SPSS：方差、相关、回归

数据分析流程 建立需求：报告（财报、运营报：公司业务框架；过去）、痛点（当下）、未来； 建立与统计的关系：y的量化（业务与统计的桥梁），boss关心的指标； X的选择：归因（重要的…

人工智能 2023年6月18日
0120
• #### “泰迪杯”超市Spark数据处理和数据分析项目实战Dataframe

数据和代码 2019 年”泰迪杯”数据分析职业技能大赛超市销售数据分析一、 背景近年来，随着新零售业的快速发展，消费者购买商品时有了更多的对比和选择，导致超…

人工智能 2023年7月15日
0152
• #### （三-1）随机森林分类器（共3小节，完整代码即文章中所有代码）

1.集成算法概述 集成学习（ensemble learning）是时下非常流行的机器学习算法，它本身不是一个单独的机器学习算法，而是通 过在数据上构建多个模型，集成所有模型的建模结…

人工智能 2023年6月16日
0140
• #### 基于Geoda的经典空间回归模型（OLS）、空间误差模型（SEM）和空间迟滞模型（SLM）

引言 最近在网上搜索有关空间误差模型的方法，看到的最多的就是https://editor.csdn.net/md/?not_checkout=1&spm=1001.2014…

人工智能 2023年7月14日
0189
• #### 海格里斯HEGERLS托盘式四向穿梭车批发定制｜24小时全自动无人化立体仓库批量托盘作业

“数智化变革，柔性化跃升”已成为仓储物流技术发展趋势，当前的物流行业正在从劳动密集型向技术密集型转变，物流系统越来越明显的向呈现出自动化、柔性化、数字化、智…

人工智能 2023年6月27日
0142