| | |
| | | import re |
| | | import time |
| | | |
| | | import cv2 |
| | | import easyocr |
| | | from cnocr import CnOcr |
| | | |
| | | |
| | | # 图像识别类 |
| | | class OcrUtil: |
| | | __ocr = CnOcr() |
| | | reader = easyocr.Reader(['ch_sim', 'en'], gpu=False) |
| | | |
| | | @classmethod |
| | | def ocr(cls, mat): |
| | | res = cls.__ocr.ocr(mat) |
| | | return res |
| | | |
| | | @classmethod |
| | | def easy_ocr(cls, mat): |
| | | res = cls.reader.readtext(mat, detail=1) |
| | | return res |
| | | |
| | | # 返回(识别内容,位置信息) |
| | |
| | | (int(ps[2][0]), int(ps[2][1])), (int(ps[3][0]), int(ps[3][1]))])) |
| | | print("识别时间", time.time() - start) |
| | | return res_final |
| | | |
| | | @classmethod |
| | | def ocr_num(cls, mat, key): |
| | | start = time.time() |
| | | res = cls.reader.readtext(mat, detail=1, text_threshold=0.6, mag_ratio=1.5) |
| | | res_final = [] |
| | | if res: |
| | | for r in res: |
| | | text = r[1] |
| | | if re.match(key, text): |
| | | ps = r[0] |
| | | res_final.append((text, [(int(ps[0][0]), int(ps[0][1])), (int(ps[1][0]), int(ps[1][1])), |
| | | (int(ps[2][0]), int(ps[2][1])), (int(ps[3][0]), int(ps[3][1]))])) |
| | | print("数字识别时间", time.time() - start) |
| | | return res_final |
| | | |
| | | |
| | | if __name__ == "__main__": |
| | | pass |