vlambda博客
学习文章列表

基于机器学习的muggle_ocr图片验证码识别








开源项目muggle-orc

感谢原作者的辛苦创作

感谢阿J大佬的分享



基于机器学习的muggle_ocr图片验证码识别


-----------------------------------------------------------------------------


基于机器学习的muggle_ocr图片验证码识别

这个将0识别为o了,这边将源码中的字符列表等全换为数字列表,识别单数字验证码准确率会高很多。

基于机器学习的muggle_ocr图片验证码识别


------------------------------------------------------------------------------


(白嫖)这是一个为麻瓜设计的本地OCR模块

只需要简单几步操作即可拥有两大通用识别模块,让你在工作中畅通无阻。

SDK类参数

参数名 必选 类型 说明
model_type No ModelType 指定预置模型类型
conf_path No str 指定自定义模型yaml配置文件(绝对路径)

以上参数两者选其一即可,默认 model_type 为 ModelType.OCR, 若指定 conf_path 参数则优先使用自定义模型。


核心API

  1. SDK.predict(image_bytes: bytes)


调用示例:

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.jpg", "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(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(text, time.time() - st)
"""使用自定义模型支持基于 https://github.com/kerlomz/captcha_trainer 框架训练的模型训练完成后,进入导出编译模型的[out]路径下, 把[graph]路径下的pb模型和[model]下的yaml配置文件放到同一路径下。将 conf_path 参数指定为 yaml配置文件 的绝对或项目相对路径即可,其他步骤一致,如下示例:"""with open(r"test3.jpg", "rb") as f: b = f.read()sdk = muggle_ocr.SDK(conf_path="./ocr.yaml")text = sdk.predict(image_bytes=b)


赞在看收藏一键三连啊老铁们!!!


推荐阅读 

往期精彩







- End -




扫描二维码

获取更多精彩

python小蜘蛛