From 8c93c6d446ceb2134fcf03f73490aae898c988f0 Mon Sep 17 00:00:00 2001 From: dragdra Date: Tue, 13 May 2025 19:46:19 +0900 Subject: [PATCH] =?UTF-8?q?v2=20-=20=EB=AC=B8=EC=A0=9C2=206=EB=B2=88?= =?UTF-8?q?=EB=AC=B8=ED=95=AD=EA=B9=8C=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 250513_DIW_2504회_A형_TEST.xlsx | Bin 0 -> 7060 bytes DIW_2504A_new.json | 144 ++++++++++++------ diwScoring2.py | 76 +++++++-- zzz.xbook | 2 +- .../2504/excel_채점기준표/DIW_2504A.xlsx | Bin 20967 -> 20918 bytes 5 files changed, 163 insertions(+), 59 deletions(-) create mode 100644 250513_DIW_2504회_A형_TEST.xlsx diff --git a/250513_DIW_2504회_A형_TEST.xlsx b/250513_DIW_2504회_A형_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ed292048bd77916f08a7083a4f53f15a81ff97c5 GIT binary patch literal 7060 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", + "value": true, + "points": 3, + "category": "Boolean", + "item": "① 구역나누기", + "desc": "섹션이 1개 이상이면 점수부여" + }, + "3": { + "path": "//SECTION[2]//COLDEF/@Count", + "value": "2", + "points": 3, + "category": "SingleAnswer", + "item": "② 다단 2단" + }, + "4": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", + "searchValue": "클라우드 컴퓨팅", + "value": "60", + "points": 2, + "category": "mmSize", + "item": "문구 (클라우드 컴퓨팅)/① 크기-너비 (60mm)" + }, + "5": { + "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", + "searchValue": "클라우드 컴퓨팅", + "value": "12", + "points": 2, + "category": "mmSize", + "item": "문구 (클라우드 컴퓨팅)/② 크기-높이 (12mm)" + }, + "6": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", + "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "searchValue": "클라우드 컴퓨팅", + "value": [ "DoubleSlim", "283" ], + "points": 2, + "category": "DoubleAnswer", + "item": "문구 (클라우드 컴퓨팅)/③ 테두리 : 이중 실선(1.00mm)" + }, + "61": {} } } \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index 6528393..27ddad3 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -209,7 +209,8 @@ class XMLScorer: # search_value를 포함하는 텍스트 찾기 similar_text = self.find_similar_text(root, search_value) xpath = xpath.replace('{searchValue}', similar_text) - # xpath2 = xpath2.replace('{searchValue}', similar_text) + if xpath2 is not None: + xpath2 = xpath2.replace('{searchValue}', similar_text) # 문항 별 채점 결과 저장 scoring = { @@ -260,7 +261,14 @@ class XMLScorer: # 수험자 답안 user_answer = { - 'FontName': font_name[0], + ######################################################################## + # 보통 정답은 글꼴이 [바탕]이어야 하지만 대부분 설정하지 않고 + # 기본 [함초롱바탕]으로 두는 경우가 많아 + # 폰트명을 정답과 비교하면 감점이 많이 발생해서 + # 폰트명은 정답과 비교하지 않게 적용된 상태 + ######################################################################## + #'FontName': font_name[0], + 'FontName': "바탕", 'FontSize': font_size[0], 'Alignment': alignment[0], 'LineSpacing': line_spacing[0] @@ -287,13 +295,30 @@ class XMLScorer: if scoring['points'] > 0: break + elif "DoubleAnswer" in (category or ""): + items1 = root.xpath(xpath) + items2 = root.xpath(xpath2) + + user_answer = [] + for item1, item2 in zip(items1, items2): + user_answer.append(item1) + user_answer.append(item2) + # user_answer[0] = item1 + # user_answer[1] = item2 + + self.evaluate_answer(scoring, user_answer, right_answer, points) + if scoring['points'] > 0: + break + + + # 사용자 입력값이 mm단위인 경우 elif "mmSize" in (category or ""): items = root.xpath(xpath) error_range = criterion.get('tolerance', 0) for item in items: - user_answer = int(item) - right_answer = self.convert_mm_to_pt(int(right_answer)) + user_answer = float(item) + right_answer = self.convert_mm_to_pt(float(right_answer)) self.evaluate_answer(scoring, user_answer, right_answer, points, method="tolerance") @@ -402,6 +427,7 @@ class XMLScorer: break # char2 요소에서 특수문자 갯수 세기 (최대 1점) + # char1과 char2가 다른 경우 (예: ▶ 행사안내 ◀) if (ch1 != ch2) and char2_ele: count_char2 = char2_ele[0].text.count(ch2) if count_char2 > 1: @@ -419,16 +445,44 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points, method="partial_score") - # 쪽 테두리 + # 쪽 테두리 (이중 실선, 머리말 포함) 설정 elif "PageBorder" in (category or ""): - pageBorderfills = root.xpath(xpath) + user_answer = { + "header_inside": False, + "all_double_slim": False + } - for pageBorderfill in pageBorderfills: - headerInside = pageBorderfill.get('HeaderInside') - borderfill_id = pageBorderfill.get('BorferFill') - print( f"headerInside: {headerInside}, borderfill_id: {borderfill_id}") - break + # 머릿말 포함 객체가 하나라도 있으면 정답 + header_inside_elements = root.xpath(xpath) + for header_inside in header_inside_elements: + # print("머릿말포함: ",header_inside) + if "true" in header_inside: + user_answer["header_inside"] = True + # BORDERFILL요소의 자녀 + # LEFTBORDER, RIGHTBORDER, TOPBORDER, BOTTOMBORDER 요소의 Type속성이 + # 모두 DoubleSlim이면 정답 + border_fill_elements = root.xpath(xpath2) + for bf in border_fill_elements: + border_tags = ["LEFTBORDER", "RIGHTBORDER", "TOPBORDER", "BOTTOMBORDER"] + + all_double_slim = True + for tag in border_tags: + element = bf.find(tag) + if element is None or element.get("Type") != "DoubleSlim": + all_double_slim = False + break + + #모든 BORDER 태그의 Type 속성이 'DoubleSlim' + if all_double_slim: + user_answer["all_double_slim"] = True + + # 하나 이상의 BORDER 태그가 'DoubleSlim'이 아님 + else: + user_answer["all_double_slim"] = False + + self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + onePersonResult['score_results'].append(scoring) print(f'scoring: {scoring}') diff --git a/zzz.xbook b/zzz.xbook index 4169663..1cb54b0 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//c:catAx//a:defRPr/@i"},{"kind":2,"language":"xpath","value":"count(//CHAR[contains(text(),'◆')]) + count(//CHAR[contains(text(),'※')])"},{"kind":2,"language":"xpath","value":"string-length(//CHAR[contains(text(),'◆')]) - string-length(translate(//CHAR[contains(text(),'◆')], '◆', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::LINESHAPE"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='클라우드 컴퓨팅']]//LINESHAPE"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill][not(*[substring(name(), string-length(name()) - 5) = 'BORDER'][not(@Type = 'DoubleSlim')])]"},{"kind":2,"language":"xpath","value":"//BORDERFILL[*[substring(name(), string-length(name()) - 5) = 'BORDER' and @Type = 'DoubleSlim']]"}] \ No newline at end of file diff --git a/회차별채점자료/2504/excel_채점기준표/DIW_2504A.xlsx b/회차별채점자료/2504/excel_채점기준표/DIW_2504A.xlsx index a01420e54b9cfc7e6126ecf9deb644d0803ac472..c5d70d8a2304cf8b26cd7ee99fc444516d221a3d 100644 GIT binary patch delta 10835 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 K*sJ{K?Ee7V4w4A~