用OCR技術(shù),自動(dòng)識(shí)別各種驗(yàn)證碼,工具已開源
今天我在給大家分享一個(gè) OCR? 應(yīng)用——ddddocr自動(dòng)識(shí)別驗(yàn)證碼。
前面 4 個(gè)d是“帶帶弟弟”的首拼音。[/笑哭]。
項(xiàng)目地址:https://github.com/sml2h3/ddddocr。
使用的時(shí)候用pip?命令直接安裝即可pip install ddddocr。
OCR的核心技術(shù)包含兩方面,一是目標(biāo)檢測模型檢測圖片中的文字,二是文字識(shí)別模型,將圖片中的文字轉(zhuǎn)成文本文字。
第一類驗(yàn)證碼最簡單,它們沒有復(fù)雜的背景圖片,所以目標(biāo)檢測模型可以省略,直接將圖片送入文字識(shí)別模型即可。

識(shí)別代碼如下:
import ddddocr
from PIL import Image
# 模型
ocr = ddddocr.DdddOcr(beta=True)
# 驗(yàn)證碼圖片
with open('test.jpg', 'rb') as f:
image = f.read()
res = ocr.classification(image)
# 驗(yàn)證碼文字內(nèi)容
print(res)
第二類驗(yàn)證碼有復(fù)雜的背景,需要先用目標(biāo)檢測模型框出文字,在進(jìn)行識(shí)別。

代碼如下:
import ddddocr
import cv2
det = ddddocr.DdddOcr(det=True)
with open("test2.jpg", 'rb') as f:
image = f.read()
# 目標(biāo)檢測
poses = det.detection(image)
print(poses)
im = cv2.imread("test2.jpg")
# 遍歷檢測出的文字
for box in poses:
x1, y1, x2, y2 = box
# 給每個(gè)文字畫矩形框
im = cv2.rectangle(im, (x1, y1), (x2, y2), color=(0, 0, 255), thickness=2)
cv2.imwrite("result.jpg", im)
輸出結(jié)果如下:

可以看到文字部分已經(jīng)被框出來了,如果我們在上述代碼直接將im[y1:y2, x1:x2]送入文字識(shí)別模型,就可以識(shí)別出對(duì)應(yīng)的文本內(nèi)容了。
ddddocr還能識(shí)別下面這種帶滑塊的驗(yàn)證碼。


這種雖然不屬于OCR的業(yè)務(wù)范疇,但作為一個(gè)通用的驗(yàn)證碼識(shí)別工具,作者還是支持了,必須給作者點(diǎn)個(gè)贊。





























