pytesseract敗北?輕量級muggleOCR問世,同時支持印刷字和驗證碼識別

1.前言

各位網上衝浪時是否遇到煩人的驗證碼?抑或無法複製的文字?

小編爲大家推薦一款專爲麻瓜設計的OCR識別模塊:https://pypi.org/project/muggle-ocr

在2020不平凡的一年,6月1日,在pypi倉庫中偷偷潛入一位新同學,他就是MuggleOCR,他有多厲害呢?

QQ截圖20200601070811.png

作爲一個本地識別的模塊,他的體積居然小於10MB,模型分別有兩個,安裝後可以在 site-packages/muggle_ocr 路徑裏看到

QQ截圖20200601072007.png

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)

筆者在網上找了幾張驗證碼圖片一探究竟:

QQ截圖20200601074110.png

輸出結果:

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可見:

QQ截圖20200601081102.png

這套模型竟然是基於 https://github.com/kerlomz/captcha_trainer 訓練的,對工具核心感興趣的可以自行了解,小編這裏就不多做介紹了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章