适用于验证码的OCR,识别快速,使用简单!

news/2024/9/25 23:13:48/

环境

  • windows 11

  • python 3.9

前言

Muggle OCR 是一个高效本地 OCR 模块,旨在通过简单的几步设置提供强大的文本识别功能,无论是在处理印刷文本还是解析验证码,都能让用户在工作中畅通无阻。Muggle OCR 易于安装和使用,支持双模型,识别快速准确。

实操

首先下载源码

# 克隆代买
git clone https://github.com/litongjava/muggle_ocr.git
cd muggle_ocr# 安装依赖
pip install -r requirements.txt# 安装muggle ocr
python setup.py install# 安装其它依赖
pip install absl-py ml-dtypes wrapt gast astunparse opt_einsum

这里需要注意的是 python 版本需要3.8以上

安装完毕后,我们再来看看如何使用?看下面的示例

import time# 1. 导入包
import muggle_ocr"""
使用预置模型,预置模型包含了[ModelType.OCR, ModelType.Captcha] 两种
其中 ModelType.OCR 用于识别普通印刷文本, ModelType.Captcha 用于识别4-6位简单英数验证码"""# 打开印刷文本图片
with open(r"test1.png", "rb") as f:ocr_bytes = f.read()# 打开验证码图片
with open(r"test2.png", "rb") as f:captcha_bytes = f.read()# 2. 初始化;model_type 可选: [ModelType.OCR, ModelType.Captcha]
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)# ModelType.Captcha 可识别光学印刷文本
for i in range(5):st = time.time()# 3. 调用预测函数text = sdk.predict(image_bytes=ocr_bytes)print('test1 text={}, time={}'.format(text, time.time() - st))# ModelType.Captcha 可识别4-6位验证码
sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.Captcha)
for i in range(5):st = time.time()# 3. 调用预测函数text = sdk.predict(image_bytes=captcha_bytes)print('test2 text={}, time={}'.format(text, time.time() - st))"""
使用自定义模型
支持基于 https://github.com/kerlomz/captcha_trainer 框架训练的模型
训练完成后,进入导出编译模型的[out]路径下, 把[graph]路径下的pb模型和[model]下的yaml配置文件放到同一路径下。
将 conf_path 参数指定为 yaml配置文件 的绝对或项目相对路径即可,其他步骤一致,如下示例:
ocr.yaml和ocr.pb文件从源码包中拷贝过来
"""
with open(r"test2.png", "rb") as f:b = f.read()
sdk = muggle_ocr.SDK(conf_path="./ocr.yaml")
st = time.time()
text = sdk.predict(image_bytes=b)
print('test3 text={}, time={}'.format(text, time.time() - st))

a4bb9d99508e8ff3f7167998b3ec7e67.jpeg

56e36e175ccda4f0021e397a4d4d6883.jpeg

使用上述图片测试,执行代码可以得到

MuggleOCR Session [ocr] Loaded.
test1 text=曹文轩教授作序推荐, time=0.012343645095825195
test1 text=曹文轩教授作序推荐, time=0.008872270584106445
test1 text=曹文轩教授作序推荐, time=0.0076770782470703125
test1 text=曹文轩教授作序推荐, time=0.00856161117553711
test1 text=曹文轩教授作序推荐, time=0.007288694381713867
MuggleOCR Session [captcha] Loaded.
test2 text=3n3d, time=0.013895511627197266
test2 text=3n3d, time=0.008069753646850586
test2 text=3n3d, time=0.007512807846069336
test2 text=3n3d, time=0.007458209991455078
test2 text=3n3d, time=0.007974863052368164
MuggleOCR Session [ocr] Loaded.
test3 text=3n3D, time=0.010023832321166992

示例中分别使用模型 ModelType.OCRModelType.Captcha 对不同类型的图片进行了文字识别,前者针对印刷文本,后者针图片验证码。第三个示例使用了配置文件 yaml 初始化模型,若指定 conf_path 参数则优先使用自定义模型。需要注意的是,muggle ocr 仅支持单行文本识别,如有多行本文识别需求可以考虑 earyocr 或者 umi-ocr

参考资料

  • https://github.com/litongjava/muggle_ocr

  • https://xugaoxiang.com/2020/12/06/easyocr/

  • https://xugaoxiang.com/2023/06/27/umi-ocr/

过往精彩

手把手AI实战(七)制作搞笑动画视频

手把手AI实战(六)老照片动起来‍

手把手AI实战(五)视频风格转换

手把手AI实战(四)让图片开口说话

手把手AI实战(三)让图片中的人物舞动起来

手把手AI实战(二)古诗词教学视频

手把手AI实战(一)治愈系动画视频


http://www.ppmy.cn/news/1506304.html

相关文章

02_快速启动 Demo 创建 Electron 项目、electron-forge 搭建一个 electron 项目、手动创建electron项目

快速启动 Demo 创建 Electron 项目 一、克隆一个仓库、快速启动一个项目二、electron-forge 搭建一个 electron 项目三、手动搭建一个 electron 项目四、开发工具中配置 Eslint 一、克隆一个仓库、快速启动一个项目 要使用 git 的话首先电脑上面需要安装 git //克隆示例项目的…

【STM32】USART串口和I2C通信

个人主页~ USART串口和I2C通信 USART串口一、串口1、简介2、电路要求3、参数及时序 二、USART外设1、USART结构2、波特率发生器 三、数据包1、HEX数据包HEX数据包接收 2、文本数据包文本数据包接收 I2C通信一、简介二、通信协议1、硬件电路2、I2C时序基本单元 三、I2C外设1、简…

aop对service下的类方法参数监听打印

平常不发消息,但登录后就会发消息,2个月没登录为了挽留就用before代码,触发消息 登录接口 controller调用service前,打印出方法 步骤: 增加before的注解方法为pointcut的方法, 因为我们要得到controller调…

为什么企业需要安装加密软件

保护敏感数据: 企业通常拥有大量的敏感数据,如客户信息、财务数据、知识产权等。这些数据如果未经保护而被泄露,可能会对企业造成严重的经济损失和声誉损害。加密软件能够对这些敏感数据进行加密,即使数据被窃取,也无…

Lua 脚本编程基础

引言 Lua 是一种轻量级的脚本语言,用标准C编写,设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。由于其简洁和高效,Lua 在游戏开发、嵌入式系统、网络编程等领域得到了广泛应用。 Lua 语言特点 轻量级&…

《Unnatural L0 Sparse Representation for Natural Image Deblurring》

这篇论文的标题是《Unnatural L0 Sparse Representation for Natural Image Deblurring》,作者是Li Xu, Shicheng Zheng, 和 Jiaya Jia,来自香港中文大学。论文主要研究了一种新的图像去模糊方法,这种方法基于L0稀疏表示,旨在提高自然图像去模糊的质量和效率。 链接: l0…

Python的安装环境以及应用

1.环境python2,Python 最新安装3.12可以使用源码安装 查看安装包 [rootpython001 ~]# yum list installed | grep epel 3[rootpython001 ~]# yum list installed | grep python [rootpython001 ~]# yum -y install python3 安装python3 查看版本 [root…

Xcode自定义控件开发:探索与实践

Xcode自定义控件开发:探索与实践 引言 在iOS和macOS应用开发中,自定义控件的开发是一项高级技能,它允许开发者创建独特的用户界面元素,增强应用的交互性和视觉效果。Xcode作为苹果官方的集成开发环境(IDE&#xff09…