HERIUN
add models
591ba45
def Levenshtein_Distance(str1, str2):
matrix = [[i + j for j in range(len(str2) + 1)] for i in range(len(str1) + 1)]
for i in range(1, len(str1) + 1):
for j in range(1, len(str2) + 1):
if str1[i - 1] == str2[j - 1]:
d = 0
else:
d = 1
matrix[i][j] = min(
matrix[i - 1][j] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j - 1] + d
)
return matrix[len(str1)][len(str2)]
def cal_cer_ed(path_ours, tail="_rec"):
path_gt = "./GT/"
N = 66
cer1 = []
cer2 = []
ed1 = []
ed2 = []
check = [0 for _ in range(N + 1)]
lis = [
1,
2,
3,
4,
5,
6,
7,
9,
10,
21,
22,
23,
24,
27,
30,
31,
32,
36,
38,
40,
41,
44,
45,
46,
47,
48,
50,
51,
52,
53,
] # DocTr (Setting 1)
# lis=[1,9,10,12,19,20,21,22,23,24,30,31,32,34,35,36,37,38,39,40,44,45,46,47,49] # DewarpNet (Setting 2)
for i in range(1, N):
if i not in lis:
continue
gt = Image.open(path_gt + str(i) + ".png")
img1 = Image.open(path_ours + str(i) + "_1" + tail)
img2 = Image.open(path_ours + str(i) + "_2" + tail)
content_gt = pytesseract.image_to_string(gt)
content1 = pytesseract.image_to_string(img1)
content2 = pytesseract.image_to_string(img2)
l1 = Levenshtein_Distance(content_gt, content1)
l2 = Levenshtein_Distance(content_gt, content2)
ed1.append(l1)
ed2.append(l2)
cer1.append(l1 / len(content_gt))
cer2.append(l2 / len(content_gt))
check[i] = cer1[-1]
print("CER: ", (np.mean(cer1) + np.mean(cer2)) / 2.0)
print("ED: ", (np.mean(ed1) + np.mean(ed2)) / 2.0)
def evalu(path_ours, tail):
cal_cer_ed(path_ours, tail)