【重磅开源】验证码识别的最高境界——MuggleOCR通用识别

摘要:
小编为大家推荐一款专为麻瓜设计的OCR识别模块:https://pypi.org/project/muggle-ocr在2020不平凡的一年,6月1日,在pypi仓库中偷偷潜入一位新同学,他就是MuggleOCR,他有多厉害呢?作为一个本地识别的模块,他的体积居然小于10MB,模型分别有两个,安装后可以在site-packages/muggle_ocr路径里看到OCR模型仅为4MB,验证码模型仅为2MB,如此小的模型,识别效果是否能有惊喜呢?那么小编再带大家测评一下OCR识别的性能。
1.前言

各位网上冲浪时是否遇到烦人的验证码?抑或无法复制的文字?

小编为大家推荐一款专为麻瓜设计的OCR识别模块:https://pypi.org/project/muggle-ocr

在2020不平凡的一年,6月1日,在pypi仓库中偷偷潜入一位新同学,他就是MuggleOCR,他有多厉害呢?

【重磅开源】验证码识别的最高境界——MuggleOCR通用识别第1张

作为一个本地识别的模块,他的体积居然小于10MB,模型分别有两个,安装后可以在 site-packages/muggle_ocr 路径里看到

【重磅开源】验证码识别的最高境界——MuggleOCR通用识别第2张

OCR模型仅为4MB,验证码模型仅为2MB,如此小的模型,识别效果是否能有惊喜呢?

2.测评

小编做了一份测试:

import time
import muggle_ocr
import os

sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
root_dir = r"./imgs"
for i in os.listdir(root_dir):
    n = os.path.join(root_dir, i)
    with open(n, "rb") as f:
        b = f.read()
    st = time.time()
    text = sdk.predict(image_bytes=b)
    print(i, text, time.time() - st)

笔者在网上找了几张验证码图片一探究竟:

【重磅开源】验证码识别的最高境界——MuggleOCR通用识别第3张

输出结果:

MuggleOCR Session [captcha] Loaded.
1a2v1_444cbc94c5a3bf1682ab71cc1e5319c0.jpg 1a2v1 0.009941816329956055
1a2yc_1534434561732.jpg 1a2yc 0.009974956512451172
2a3ka_1d94eaff16ab6612fc6445c6b5d56684.jpg 2a3ka 0.009972333908081055
2a3w_900a9e3672ded254e63ef4cba6e1f465.jpg 2a3w 0.009982109069824219
dU5g_c406889e89ca47e5a2d632798baead21.jpg du5g 0.010939359664916992
LGKX_85bbfbe824074944bd4529b61f8ccb75.png lgkx 0.011968135833740234
mhhm_3085e25cd1ee6b062d02522bb1133257.bmp mhhm 0.011968612670898438
Q8U7_4fab05a68b694d54842e1165d0539ce4.jpg q8u7 0.011966943740844727

居然都识别出来了!而且在速度上也是极快,0.01s是什么概念,10ms,市面上售卖的验证码识别大多也要40ms-100ms以上。

那么小编再带大家测评一下OCR识别的性能。

识别结果:

写到这里小编只能说“tql,oh my god”。这是什么神仙工具,用它用它用它。

3.如何使用

以下内容摘取至官方文档:

首先安装模块 pip install muggle_ocr

调用示例:

import time

# 导入包
import muggle_ocr

# 初始化;model_type 包含了 ModelType.OCR/ModelType.Captcha 两种
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)

# ModelType.Captcha 可识别光学印刷文本
with open(r"test1.png", "rb") as f:
    b = f.read()
for i in range(5):
    st = time.time()
    text = sdk.predict(image_bytes=b)
    print(text, time.time() - st)

# ModelType.Captcha 可识别4-6位验证码
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
with open(r"test2.jpg", "rb") as f:
    b = f.read()
for i in range(5):
    st = time.time()
    text = sdk.predict(image_bytes=b)
    print(text, time.time() - st)

使用竟如此简单!

此外追踪作者github可见:

【重磅开源】验证码识别的最高境界——MuggleOCR通用识别第4张

这套模型竟然是基于 https://github.com/kerlomz/captcha_trainer 训练的,对工具核心感兴趣的可以自行了解,小编这里就不多做介绍了。

免责声明:文章转载自《【重磅开源】验证码识别的最高境界——MuggleOCR通用识别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇常见正则表达式汇总【一】XD 05下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Android下OpenCV的环境搭建

目录(?)[-] 前言 系统环境 相关工具 Android ADT环境搭建 Android SDK环境变量的配置 Android NDK的安装与配置 OpenCV for Android 环境搭建 基于SDK的OpenCV开发 基于NDK的OpenCV开发 Android上层程序的编写 来自CODE的代码片 activity_mainxml...

爬虫笔记之w3cschool注册页面滑块验证码破解(巨简单滑块位置识别,非鼠标模拟轨迹)

一、背景介绍 最开始接触验证码破解的时候就是破解的w3cschool的使用手机号找回密码页面的验证码,详见:验证码识别之w3cschool字符图片验证码(easy级别),这次破解一下他们注册页面的滑块验证码,有点忐忑,我这么跟人过不去不会被打吧... 阅读前请知悉:本篇文章只涉及到滑块验证码的滑块位置识别,主要知识集中在图像处理方面,并不涉及到模拟鼠标轨迹...

淘宝对接(一)

最近工作的内容是与淘宝进行对接。第一次接触淘宝对接的工作。淘宝也很不赖有比较专业详尽的文档。地址是:http://open.taobao.com/docs/doc_index.htm。网上也有一大堆参考资料。但感觉有点散。在这里我做一个合适我自己的归纳总结。 要进行淘宝开发,必须要首先完成以下步骤: 1. 申请开发者账户(申请完毕获得非常重要的App Ke...

海康摄像头如何通过SDK将视频在前端网页上进行播放?

市场上常见的海康、大华、宇视等网络摄像头只要支持RTSP协议,都可以接入到EasyNVR中,今天主要给大家分享海康摄像头如何通过SDK将视频在前端网页上播放。 海康摄像头如何通过SDK将视频在前端网页上播放 碰到这个问题的时候,很多开发者的初期思路是通过SDK接入海康摄像机IPCamera、硬盘录像机NVR的视频,并想办法在网页端显示。这种SDK接入的方法...

Google Flutter框架:使用VS Code进行开发

虽然进行安卓开发使用Android studio 比较方便 ,但是因为AS太臃肿而且还有一些404问题,就在打算如何进行高效的Android开发,于是找到了Flutter SDK, 他支持使用IDE进行开发, 也就是可以直接脱离AS以及java代码(真的很头大)!Flutter 是 Google 为您打造的 UI 工具包,帮助您通过一套代码同时在 iOS...

SDK接入(3)之iOS内支付(InApp Purchase)接入

SDK接入(3)之iOS内支付(In-App Purchase)接入 继整理了Android平台的SDK接入过程。再来分享下iOS平台的内支付(In-App Purchase)接入,作为笔者在游戏开发中实际遇到的,觉得有必要分享下,同时也当作是对工作的总结,就放在该SDK接入系列文章中了。 作者:AlphaGL。版权所有,欢迎保留原文链接进行转载 作为S...