admin
2024-01-11 5a2ef3a696ddccbc1faef1e2e90f5b535ec24a0d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import json
import re
import time
 
import easyocr
 
# import kpl_util
 
reader = easyocr.Reader(['ch_sim', 'en'], gpu=True, model_storage_directory="res/ocr_model/model",
                        download_enabled=False)
 
num_reader = easyocr.Reader(['en'], gpu=True, model_storage_directory="res/ocr_model/model",
                            download_enabled=False)
 
 
# 数字识别
def recognize_code(img):
    results = num_reader.readtext(img, detail=0, mag_ratio=1.5)
    # print("识别结果", results)
    if results:
        for result in results:
            result = result.strip()
            if len(result) >= 6:
                code = result[-6:]
                if code.isnumeric():
                    return code
    return None
 
 
# 数字识别
def recognize_num(img):
    results = num_reader.readtext(img, detail=0, mag_ratio=1.5)
    # print("识别结果", results)
    if results:
        result = results[0].strip()
        if result.isnumeric():
            return result
    return None
 
 
def ocr_with_key(mat, key, mag_ratio=1):
    res = reader.readtext(mat, detail=1, text_threshold=0.6, mag_ratio=mag_ratio)
    print("识别内容", res)
    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]))]))
    return res_final
 
 
if __name__ == '__main__':
    img = "C:\\Users\\Administrator\\Desktop\\ocr\\codes\\000021_23850.png"
    results = num_reader.readtext(img, detail=1, mag_ratio=2)
    print(results)
 
    # results = kpl_util.recognize_datas("C:\\Users\\Administrator\\Desktop\\test.png")
    # print(results)