欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

适用于验证码的开源OCR

OCR 迷途小书童 4个月前 (08-07) 388次浏览 0个评论

环境

  • 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))

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

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

参考资料

喜欢 (0)

您必须 登录 才能发表评论!