From 20c4359cb8c85db325155be88b8e158b92d7306d Mon Sep 17 00:00:00 2001 From: dragdra Date: Thu, 15 May 2025 18:06:06 +0900 Subject: [PATCH] =?UTF-8?q?v2=20-=20=EB=AC=B8=EC=A0=9C2=2045=EB=AC=B8?= =?UTF-8?q?=ED=95=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 250515_DIW_2504회_A형_TEST.xlsx | Bin 0 -> 8807 bytes DIW_2504A.json | 1 - DIW_2504A_new.json | 122 ++++++++++++---- checklist.xbook | 2 +- diwScoring2.py | 130 +++++++++++++----- zzz.xbook | 2 +- .../2504/excel_채점기준표/DIW_2504A.xlsx | Bin 20976 -> 21011 bytes 회차별채점자료/2504/요청사항/0508.txt | 6 +- 8 files changed, 197 insertions(+), 66 deletions(-) create mode 100644 250515_DIW_2504회_A형_TEST.xlsx diff --git a/250515_DIW_2504회_A형_TEST.xlsx b/250515_DIW_2504회_A형_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..bcea5bd75235169d98c802ea5c51e23d18bc4c32 GIT binary patch literal 8807 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 literal 0 HcmV?d00001 diff --git a/DIW_2504A.json b/DIW_2504A.json index f1c0709..729542b 100644 --- a/DIW_2504A.json +++ b/DIW_2504A.json @@ -637,7 +637,6 @@ "37": { "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr='2']/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", - "searchValue": null, "value": "2862825", "points": 2, "category": "표", diff --git a/DIW_2504A_new.json b/DIW_2504A_new.json index aa365b0..17f8250 100644 --- a/DIW_2504A_new.json +++ b/DIW_2504A_new.json @@ -49,7 +49,7 @@ "searchValue": "클라우드컴퓨팅컨퍼런스", "value": "맑은 고딕", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드컴퓨팅컨퍼런스)/① 글씨체 (맑은 고딕)" }, "2": { @@ -83,7 +83,7 @@ "searchValue": "클라우드컴퓨팅컨퍼런스", "value": "true", "points": 2, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑤ 위치 (글자처럼 취급)" }, "6": { @@ -91,7 +91,7 @@ "searchValue": "클라우드컴퓨팅컨퍼런스", "value": "Center", "points": 2, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑥ 정렬 (가운데 정렬)" }, "7": { @@ -180,7 +180,7 @@ "searchValue": "참여안내", "value": "Center", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (● 참여안내 ●)/② 정렬 (가운데 정렬)" }, "17": { @@ -216,7 +216,7 @@ "searchValue": "2025. 04. 26.", "value": "1400", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (2025. 04. 26.)/① 크기 (14pt)", "desc": "1pt당 100" }, @@ -225,7 +225,7 @@ "searchValue": "2025. 04. 26.", "value": "Center", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" }, "22": { @@ -241,7 +241,7 @@ "searchValue": "글로벌멀티클라우드협의회", "value": "2600", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (글로벌멀티클라우드협의회)/② 크기 (26pt)" }, "24": { @@ -249,7 +249,7 @@ "searchValue": "글로벌멀티클라우드협의회", "value": "Center", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (글로벌멀티클라우드협의회)/③ 정렬 (가운데 정렬)" }, "25": { @@ -265,7 +265,7 @@ "searchValue": "DIAT", "value": "900", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (DIAT)/② 크기 (9pt)" }, "27": { @@ -273,14 +273,14 @@ "searchValue": "DIAT", "value": "Right", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (DIAT)/③ 정렬 (오른쪽 정렬)" }, "28": { "path": "//PAGENUM/@FormatType", "value": "LatinCapital", "points": 2, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "① 쪽 번호 매기기 (A,B,C 순으로)", "desc": { "가,나,다":"HangulSyllable", @@ -299,7 +299,7 @@ "path": "//PAGENUM/@Pos", "value": "BottomRight", "points": 2, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "오른쪽 아래" }, "30": { @@ -335,7 +335,7 @@ "path": "//SECTION[2]//COLDEF/@Count", "value": "2", "points": 3, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "② 다단 2단" }, "4": { @@ -369,7 +369,7 @@ "searchValue": "클라우드 컴퓨팅", "value": "50", "points": 2, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드 컴퓨팅)/④ 글상자 모서리 (반원)" }, "8": { @@ -385,7 +385,7 @@ "searchValue": "클라우드 컴퓨팅", "value": "true", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드 컴퓨팅)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { @@ -393,7 +393,7 @@ "searchValue": "클라우드 컴퓨팅", "value": "Center", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드 컴퓨팅)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { @@ -410,7 +410,7 @@ "searchValue": "클라우드 컴퓨팅", "value": "2000", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드 컴퓨팅)/⑨ 글씨크기 (20pt)", "desc":"1pt당 100" }, @@ -419,7 +419,7 @@ "searchValue": "클라우드 컴퓨팅", "value": "Center", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드 컴퓨팅)/⑩ 정렬 (가운데 정렬)" }, "14": { @@ -471,7 +471,7 @@ "searchValue": "1. 주목하는 최신 트렌드", "value": "1200", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구① (1. 주목하는 최신 트렌드)/② 크기 (12pt)" }, "21": { @@ -495,7 +495,7 @@ "searchValue": "2. 기술의 경제적 가치", "value": "1200", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구② (2. 기술의 경제적 가치)/② 크기 (12pt)" }, "24": { @@ -528,7 +528,7 @@ "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", "value": "900", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드)/③ 크기 (9pt)" }, "28": { @@ -536,7 +536,7 @@ "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", "value": "Ideograph", "points": 2, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "문구 (클라우드)/④ 각주 번호모양", "desc": { "가,나,다":"HangulSyllable", @@ -601,7 +601,7 @@ "searchValue": "클라우드 보안(단위: 백만 달러)", "value": "1200", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/② 크기 (12pt)" }, "35": { @@ -617,9 +617,83 @@ "searchValue": "클라우드 보안(단위: 백만 달러)", "value": "Center", "points": 1, - "category": "SingleAnswer", + "category": "OneAnswer", "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/④ 정렬 (가운데 정렬)" }, + "37": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor", + "value": "233,174,43", + "points": 2, + "category": "Color", + "item": "위쪽 제목 셀/① 색상(RGB:233,174,43)" + }, + "38": { + "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "위쪽 제목 셀/② 진하게", + "desc": "글자 속성이라 CELLZONE으로 적용 되지 않음" + }, + "39": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Type", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Type", + "value": "DoubleSlim", + "points": 2, + "category": "OneAnswer", + "item": "제목 셀 아래선/① 이중실선" + }, + "40": { + "path": "//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER/@Width", + "path2": "//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/BOTTOMBORDER/@Width", + "value": "0.5mm", + "points": 2, + "category": "OneAnswer", + "item": "제목 셀 아래선/② 0.5mm" + }, + "41": { + "path": "//TABLE//TEXT/@CharShape", + "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", + "value": "중고딕", + "points": 1, + "category": "TableFontName", + "category_tmp": "FontName", + "item": "글자모양/① 글씨체 (중고딕)", + "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" + }, + "42": { + "path": "//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height", + "value": "1000", + "points": 1, + "category": "OneAnswer", + "item": "글자모양/② 크기 (10pt)" + }, + "43": { + "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", + "value": "Center", + "points": 1, + "category": "OneAnswer", + "item": "글자모양/③ 정렬 (가운데 정렬)" + }, + "44": { + "path": "boolean(//TABLE[1]/ROW[last()]/CELL[position()=last() or position()=last()-1]//FIELDBEGIN[starts-with(@Command, '={option}')])", + "option": "SUM", + "value": true, + "points": 4, + "category": "Boolean", + "item": "블록 계산식/합계", + "desc": "option값에 합계는 SUM / 평균은 AVG" + }, + "45": { + "path": "", + "chart_type": "묶은세로막대형", + "value": true, + "points": 2, + "category": "chart_type", + "item": "① 종류 (묶은 세로 막대형)", + "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다." + }, "61": {} } } \ No newline at end of file diff --git a/checklist.xbook b/checklist.xbook index 8645ad9..d0a182c 100644 --- a/checklist.xbook +++ b/checklist.xbook @@ -1 +1 @@ -[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart/c:grouping/@val='standard'\r\n - 가로막대형 boolean(//c:barChart/c:barDir[@val='bar'])\r\n - 묶은가로막대형 boolean(//c:barChart[c:barDir[@val='bar'] and c:grouping[@val='clustered']])\r\n - 세로막대형 boolean(//c:barChart/c:barDir[@val='col'])\r\n - 묶은세로막대형 boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] \ No newline at end of file +[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-22     Time: 16:12:58"},{"kind":1,"language":"markdown","value":"* mm > pt 변환비율 = 2.83465 \r\n* 283.465"},{"kind":1,"language":"markdown","value":"- 색상 demical 코드 [1-2] [1-10] [2-8] [2-37]"},{"kind":2,"language":"xpath","value":"//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='전']]//WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":1,"language":"markdown","value":"- [1-10] ① ●, ② ●, ③ ※"},{"kind":2,"language":"xpath","value":"\"path\": \"count(//CHAR[contains(text(),'●')]) + count(//CHAR[contains(text(),'※')])\",\r\n \"path2\": \"string-length(//CHAR[contains(text(),'●')]) - string-length(translate(//CHAR[contains(text(),'●')], '●', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))\","},{"kind":1,"language":"markdown","value":"- [1-28] [2-28] @FormatType 종류\r\n - HangulSyllable : 가나다\r\n - Digit : 123\r\n - DecagonCircle : 갑을병정\r\n - LatinCapital : ABC\r\n - CircledDigit : ①,②,③\r\n - Ideograph : 一,二,三\r\n - CircledHangulJamo : ㉠,㉡,㉢\r\n - CircledLatinSmall : ⓐ,ⓑ,ⓒ\r\n - RomanSmall : i,ii,iii"},{"kind":2,"language":"xpath","value":"//SECTION[1]//PAGENUM/@FormatType"},{"kind":2,"language":"xpath","value":"//P[TEXT[CHAR[contains(text(), '눈으로 읽는 대신 귀로 들을 수 있게 책의 내용(문자)을 음성으로 녹음하여 기록한 것을 의미함')]]]//AUTONUMFORMAT/@Type"},{"kind":1,"language":"markdown","value":"- [2-30] ① 저감(低減), ② 화석(化石), ③ 투자(投資), ④ 달성(達成), ⑤ 세금(稅金)"},{"kind":2,"language":"xpath","value":"(count(//CHAR[contains(text(),'저감')][contains(text(),'低減')])+count(//CHAR[contains(text(),'화석')][contains(text(),'化石')])+count(//CHAR[contains(text(),'투자')][contains(text(),'投資')])+count(//CHAR[contains(text(),'달성')][contains(text(),'達成')])+count(//CHAR[contains(text(),'세금')][contains(text(),'稅金')]))*2"},{"kind":1,"language":"markdown","value":"- [2-37] [2-39] [2-40] @EndColAddr 속성값 \r\n - 표의 열 갯수-1\r\n - 4개=3 / 3개=2 / 2개=1"},{"kind":2,"language":"xpath","value":"@EndColAddr='2'"},{"kind":1,"language":"markdown","value":"- [2-45]\r\n - 꺾은선형 //c:lineChart\r\n - 묶은가로막대형 //c:barChart[c:barDir[@val='bar']]\r\n - 묶은세로막대형 //c:barChart[c:barDir[@val='col']]\r\n - 원형 //c:pieChart\r\n - 분산형 //c:scatterChart"},{"kind":1,"language":"markdown","value":"//c:{chart_type}Chart/"},{"kind":2,"language":"xpath","value":"boolean(//c:barChart[c:barDir[@val='col'] and c:grouping[@val='clustered']])"},{"kind":2,"language":"xpath","value":"//c:valAx/c:majorTickMark/@val"}] \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index ec13310..8e28396 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -11,6 +11,8 @@ from difflib import SequenceMatcher import pandas as pd import base64 import math +from itertools import chain + # from xpathSearch import XMLPathHandler class XMLScorer: @@ -202,6 +204,7 @@ class XMLScorer: points = criterion.get('points', 0) category = criterion.get('category', None) item = criterion.get('item', None) + option = criterion.get('option', None) similar_text = None # search_value가 있는 경우 @@ -211,7 +214,11 @@ class XMLScorer: xpath = xpath.replace('{searchValue}', similar_text) if xpath2 is not None: xpath2 = xpath2.replace('{searchValue}', similar_text) - + + if option: + xpath = xpath.replace('{option}', option) if xpath else "" + xpath2 = xpath2.replace('{option}', option) if xpath2 else "" + # 문항 별 채점 결과 저장 scoring = { 'section': section_id, @@ -224,7 +231,7 @@ class XMLScorer: 'deductions': [] # 각 기준별 감점 내역 } - if "PageSetting" in (category or ""): + if (category or "") == "PageSetting": items = root.xpath(xpath) error_range = criterion.get('tolerance', 0) @@ -244,7 +251,7 @@ class XMLScorer: if scoring['points'] > 0: break - elif "BasicSetting" in (category or ""): + elif (category or "") == "BasicSetting": # 바탕글(기본설정) 요소 normal_style = root.xpath("//STYLE[@Name='바탕글']") @@ -277,17 +284,18 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") # 오타 감점 부분은 미리 계산 하고, 이후 점수만 계산 - elif "오타감점" in (category or ""): + elif (category or "") == "오타감점": points = self.get_typo_score() self.total_score += points self.partial_score += points scoring['points'] = points # 정답이 하나인 경우 - elif "SingleAnswer" in (category or ""): + elif (category or "") == "OneAnswer": items = root.xpath(xpath) + items2 = root.xpath(xpath2) if xpath2 else [] - for item in items: + for item in chain(items, items2): user_answer = item self.evaluate_answer(scoring, user_answer, right_answer, points) @@ -295,24 +303,21 @@ class XMLScorer: if scoring['points'] > 0: break - elif "DoubleAnswer" in (category or ""): + elif (category or "") == "DoubleAnswer": items1 = root.xpath(xpath) - items2 = root.xpath(xpath2) + items2 = root.xpath(xpath2) if xpath else [] 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 ""): + elif (category or "") == "mmSize": items = root.xpath(xpath) error_range = criterion.get('tolerance', 0) @@ -325,7 +330,7 @@ class XMLScorer: if scoring['points'] > 0: break - elif "ParaShape" in (category or ""): + elif (category or "") == "ParaShape": items = root.xpath(xpath) for item in items: @@ -341,7 +346,7 @@ class XMLScorer: break # Boolean 타입 정답인 경우 - elif "Boolean" in (category or ""): + elif (category or "") == "Boolean": items = root.xpath(xpath) items2 = root.xpath(xpath2) if xpath2 else False @@ -350,23 +355,23 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points) # 채점기준표 파일에 작성된 rgb값을 그대로 읽어와 HML파일 요소의 int형 rgb값과 비교 - elif "Color" in (category or ""): - items = root.xpath(xpath) + elif (category or "") == "Color": + items = root.xpath(xpath) if xpath else [] + items2 = root.xpath(xpath2) if xpath2 else [] rgb_text = right_answer r, g, b = map(int, rgb_text.split(',')) rgb_int = (b << 16) + (g << 8) + r - for item in items: + # items, items2를 순차적으로 순회 + for item in chain(items, items2): user_answer = int(item) - self.evaluate_answer(scoring, user_answer, rgb_int, points, method="equal") - if scoring['points'] > 0: break # 문단 첫글자 장식 채점 - elif "TwoLineSize" in (category or ""): + elif (category or "") == "TwoLineSize": items = root.xpath(xpath) error_range = criterion.get('tolerance', 0) for item in items: @@ -380,26 +385,60 @@ class XMLScorer: break # 폰트명 - elif "FontName" in (category or ""): - charshape_id = root.xpath(xpath) + elif (category or "") == "FontName": + charshape_list = root.xpath(xpath) if not charshape_id: - charshape_id = None - user_answer = None + user_answer = "" else: - font_id = root.xpath(f"//CHARSHAPE[@Id='{charshape_id[0]}']/FONTID/@Hangul") - font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name") - user_answer = font_name[0] + for charshape_id in charshape_list: + font_id = root.xpath(f"//CHARSHAPE[@Id='{charshape_id}']/FONTID/@Hangul") + font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name") + user_answer = font_name[0] + + # 폰트 "견고딕"과 "중고딕"은 + # 한글프로그램 내부적으로 "한양견고딕", "한양중고딕"으로 저장되므로 + # 수험자 답변에서 "한양"을 제거 + if right_answer in ["견고딕", "중고딕"]: + user_answer = user_answer.replace("한양", "") + + self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + + if scoring['points'] > 0: + break - # 폰트 "견고딕"과 "중고딕"은 - # 한글프로그램 내부적으로 "한양견고딕", "한양중고딕"으로 저장되므로 - # 수험자 답변에서 "한양"을 제거 - if right_answer in ["견고딕", "중고딕"]: - user_answer = user_answer.replace("한양", "") + # 테이블 폰트명 + # 테이블 내부 모든 셀의 폰트가 정답과 일치해야 함 + elif (category or "") == "TableFontName": + charshape_list = root.xpath(xpath) + + # 문자속성이 없는 경우 + if not charshape_list: + user_answer = "" + self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + else: + all_match = True # 모든 항목이 정답과 일치해야 함 + + for charshape_id in charshape_list: + font_id = root.xpath(f"//CHARSHAPE[@Id='{charshape_id}']/FONTID/@Hangul") + font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name") - self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + user_answer = font_name[0] + + # 내부 저장된 접두어 제거 + if right_answer in ["견고딕", "중고딕"]: + user_answer = user_answer.replace("한양", "") + + if user_answer != right_answer: + all_match = False + break # 하나라도 다르면 바로 오답 처리 + + if all_match: + self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + else: + self.evaluate_answer(scoring, user_answer, right_answer, 0, method="equal") # 오답 처리 # 폰트 속성 - elif "FontAttribute" in (category or ""): + elif (category or "") == "FontAttribute": charshape = root.xpath(xpath) if not charshape: charshape = None @@ -491,6 +530,7 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + # 한자 elif "Hanja" in (category or ""): word_list = criterion.get('word', []) @@ -516,9 +556,27 @@ class XMLScorer: user_answer = min(score, max_score) self.evaluate_answer(scoring, user_answer, right_answer, points, method="partial_score") - + + elif (category or "") == "chart_type": + chart_type_list = { + '꺾은선형': "//c:lineChart", + '가로막대형': "//c:barChart[c:barDir[@val='bar']]", + '세로막대형': "//c:barChart[c:barDir[@val='col']]", + '원형': "//c:pieChart", + '분산형': "//c:scatterChart" + } + chart_type = criterion.get('chart_type').replace(" ","") + if "묶은" in chart_type: + chart_type = chart_type.replace("묶은", "") + chart_xpath = chart_type_list[chart_type] + + user_answer = bool(chart_tree.xpath(chart_xpath, namespaces=namespaces)) + self.evaluate_answer(scoring, user_answer, right_answer, points) + + # 문항 채점 결과를 리스트에 입력 onePersonResult['score_results'].append(scoring) print(f'scoring: {scoring}') + onePersonResult['partial_scores'].append({ 'section': section_id, 'score': self.partial_score diff --git a/zzz.xbook b/zzz.xbook index ce25fa0..791db43 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"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":"//RECTANGLE[.//CHAR[text()='클라우드 컴퓨팅']]/SHAPEOBJECT/POSITION/@TreatAsChar"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/parent::TEXT/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width"},{"kind":2,"language":"xpath","value":"//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='{searchValue}']]/@CharShape"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'클라우드 보안(단위: 백만 달러)')]]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE[CHAR[contains(text(),'인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경')]]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE[.//CHAR[contains(text(),'인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경')]]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[text()='클라우드 보안(단위: 백만 달러)']]/@CharShape]"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//P[.//CHAR[text()='클라우드 보안(단위: 백만 달러)']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//CHAR[contains(text(),'클라우드 보안(단위: 백만 달러)')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//P[.//CHAR[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":"//RECTANGLE[.//CHAR[text()='클라우드 컴퓨팅']]/SHAPEOBJECT/POSITION/@TreatAsChar"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/parent::TEXT/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width"},{"kind":2,"language":"xpath","value":"//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='{searchValue}']]/@CharShape"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'클라우드 보안(단위: 백만 달러)')]]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE[CHAR[contains(text(),'인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경')]]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE[.//CHAR[contains(text(),'인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경')]]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[text()='클라우드 보안(단위: 백만 달러)']]/@CharShape]"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//P[.//CHAR[text()='클라우드 보안(단위: 백만 달러)']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//CHAR[contains(text(),'클라우드 보안(단위: 백만 달러)')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//CELLZONE[@StartRowAddr='0' and @EndRowAddr='0' and @StartColAddr='0' and @EndColAddr=(ancestor::TABLE[1]/@ColCount)-1]/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//CELLZONE[@EndColAddr=../../@ColCount]]"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TABLE//TEXT/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=SUM')]"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[position() = last() or position() = last() - 1]//FIELDBEGIN[starts-with(@Command, '=SUM')]\r\n"}] \ No newline at end of file diff --git a/회차별채점자료/2504/excel_채점기준표/DIW_2504A.xlsx b/회차별채점자료/2504/excel_채점기준표/DIW_2504A.xlsx index 181ffb75d0d65d4d3dc44f4a27d626180c8c4ac9..d29703775449a011520e30ee59597d53d1688d9d 100644 GIT binary patch delta 10890 zcmZ8{bx<9!v+g;#6%G!?-CYk*++B;iySp6Ri@SSqcXugL+_ktDDNcF)-TUUgxi5cY zGLvsNJCiTT?q+`%1CvXD^+#~9KR8#8UXst@XdzM2OdFyHq)ME^x_HyJY@k^zqJ~8A z)FKmjkw8>@juKlHEZFrz(`e>*g>QExJ}HdHdsGTAF<9QWW7k)`{7g*o$#_JrsmPgd z8H~JmHz^a!B@w{wt+nQLyu++AvTx=;p#272yEpxxO{^)G=7fJxzyPd?ccss#+Aeb> z1R#aa!BbvHX@%;DOZDmz9(i<%Lju3_Xc{j0;w)*@OWH+$FPX9)IML!6rdLaQRWg7^ zOe=!|h@%+m<}e=c+CwXg$(u6d*#q$+wN8>Tu!=*Ubt5X&-9RB5rt{*autI1KzxsEV zX@ab;%Eei!T)~UT0DH}n<2RZ(h4CIxEaceqH*ZOJ%~Jy_IHy5%8&lhxgYgcSIdb}7k{#=5}C44UA+f+;9q<`q38(E;O?~x99l|3zy34D z?`P&!-}-gt#=3>7i2b9ZprL$ifWe1g{u^JuUssM_Pxs$|InQjx;-6!&WAICVcZ4*P zNk|+8{ZDri`E%=PK0pHI)H>XuRS=g7p8!0*-}28b<-R&(UfVj5Pf=TCV+j@@HQq}o z-2|yduLSnPlDmNgx<@>%Z2-uh8n7Zz6p zqqqeUkfwtd2>5E5hHsG3x954?%hJt{;Kl6uIZ(3=I%u9~`vgR(myDdA*P%bWiCeahIW`^mnn{m`B7KNv*I{S zs7T^as5X?@pi}|?fIk-izyl-~Dt%7&K|zOvh6HLXVV_lAR?>gbBd~tuzuv zH5wnfzs$Z-JZ;eit^yEKGZRu<{?JCF7zUY9t8=NhtI;xLj`aE9XX-#t_DH9xV2nYu zDKpE*6ItgUS=Ch#P~)Q=Db*hk=9JlE{$!_?E663k5$Bls^i=TcO?*a2RzdRpt&AZp z=%e#hwn-xDczc0)f52d$XTWg1?B=?TU1p$#y|SJxsn~RSWsF2}DDnpL^ySUd*otSq z9@`<%QvJ3w$?AGocBcM5wf+Le^>Q9k{B4}(KxxyD53j;^_*kmzFm3jtcNct zRFxclce-@oAegCw8;_Q)g9!s}Ep# z7F4e;p^ULAw!Fo32u{bEUNq01RRbeYj#OCnvhnuScKQbZ0QmUtZc*Pheq+4hogqX- za5c&_217z7+}=oP(KOHt+OBcD4bYps=7nxXRGquh*SA%zX0}vO7Tfa`y7w=8*V2;2 zZTX9HW#xn>$&QdcX#I-M-NB)5TWh&d$#wLNeg%1yT1$P8%w_) zj`s3Ng#4dgpKr$cEM(?iloon@y`IxQ9^y$zh#|6#BX>)e*_vo;<2-A!^EzdH6^Eut zALj~9t35t9bv$(j0>bAG^FF{i!RQxSKJhuWXhjvbxFTN~pG0N6Lanrd6C`CnpO5{a zoh!j9$bKVn&;&OJ>uDX(Lax7j`OE```u~%2>8ET%5Ny;FaKw2q9Q>31EZ_R_vJ4cf zkCbeZhDiNRW2kG^EcF1g;t|-Y8)~iz zw*DvUVHsg8R}lSUeRB_z1qwq)7H?YhDkYZ1JcGwGkO#$-T!xg)ndV!g@}9#dMpzdGRD~kaiEndeJKB3=a&B10s23Bhn@UXxW{TM!!7|oV4*) zN#?nq9`~lVBA8^Y&g z!YTjYjhet=JFYtXg@x^?@uKz;5+4?N{@2Lqq_4ZgvO~!z43EGxnl_GlRmoA@ek4uL)Dd=;>rSHdEQYs`8 z5wv`gb21W`!VpXJ%lX*np==?)kB15G_uFpom$MNx=w42@tEK+(fW824p-QE`a4`=} z*fl#YitN8}wp`aA1qc);n{}#Nw7>=6^WySkLoD∾)+P*}^7cDxNP0BWf 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 delta 10840 zcmY*<1yCF?(>BiGhr1u{T3ilycPntX6nA=1T#J{(-QBHdvEo|X3mg)8%|g1U#;8 zZw`{`Fyc%!1}hAv%h6t4-X$_C!WdL!7*cs@3!AVTJFWVSa{+;Z1P1^_nY2d{efE2G zfl_*Cf=UO2ZdRBbCq$iy^LsI@JS~+Di(JnWB9`?%hi@N)8(-p)44aR}`)kjKV?H%~ z3rs%f}E4emia5FePWqlFT!&k(gT(%!1#tPXAE6;A)OcGP% z*RuL9fmFNXy3Fa?LFz@LjB@6{w5mDL`loxA4|6U1D0Krd+-Mv;D&jltDTD;DXVitN zGs`z8D-)f1UtW2)8^84jBYsu7T8qh3LqkRHi69$Pu2NE5532%x=l|(BPI+k$%(AAN zPxLt`@XsHc(>l|8`dnQS>WpXT ztNG0PkiN$|y8xw2NO#9yx$DR?M;H*=uvq@{(fV{y0B%r1!y32Oy&H-Xx6M4BVh_~g zy+R6|D76q*uDbgXu@qFla4tkCIZ|UnUAogEoMc$rZrxRn)4SqJ(Qw$~u$Sl~$*$Zm z-2FkY?c+J!C#EGz{(8=i@82c5$~~QDc;x2rqQCl8P_KUW`q--CS1a^cekrs7ieiJr zEl62!kf>SHj`gUJKHN2jO#IY!ELcCfLvk2H&)Y$Xqh^%lBPc+-YrD)ve!s_m=kYN$ zFh+MFGu)J~w5+PkZM)jd@imD119s*iTmT~7lmIe>mV!!pyxy`~x^84GvF}t#5nezM z5D;EpkrA}jkWq*b&=3Is>h!JHmUMK_+v9`u+Idj9nAgD`t z7KQUbqwkdxC^q!r+ z9W5(3m9rF-3~g2B*GY}$UG3!6*8$+-#lK_H?+ABfg^fPVm@Ze8s=UY2c^HpI)d?J z(rMh!0~m78snHJmxYv=YmPQ2BR3?)cS^WfA)Yk6iLC`+p$BdV_O)We|-;clVP9OfJ zt$%qwO2C~@y#4|z7#dzrN^=yRL@nq)7n#>qpA;AStA6<9B47m%QQW%&m(z^92*n+d zqX^Vg^A{y56wfa13?lPkS9KEAfk{GiSwj7#& z33-Orx;^B&F^41jF%vBa1*v-2I^-ri0vS16Ovua(DGHKWKOXj_`g}{{^)q1NQ4;Tg zMVW-gkoAhjz)d2)okRroQ5@=ox~D>GN6G^TDH819*FO3aXH>@*m!Xe%|IxGmD%-M! zMdRie{vQrf($J>OWfHddG;UYq?h<8;Dm^-l`A($E84YTpxP�P3W%0CArt}w63Bv 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 R6k=2QnGPeGpXPtM{s-A~Sor_| diff --git a/회차별채점자료/2504/요청사항/0508.txt b/회차별채점자료/2504/요청사항/0508.txt index 5284179..99265b1 100644 --- a/회차별채점자료/2504/요청사항/0508.txt +++ b/회차별채점자료/2504/요청사항/0508.txt @@ -18,7 +18,7 @@ 글맵시 있는데 오답처리 -000076 박다은 >> 정상채점 + 000285 문예슬 >> 글맵시 텍스트에 개행이 들어가 있음 "서울국제도서박람회␍␊" 001345 조수빈 >> 서울국제도시박람회 000203 이지운 >> 서울국제도섭가람회 @@ -29,11 +29,11 @@ 문구 (◆ 행사안내 ◆) - 궁서/가운데정렬 맞는데 오답처리(띄어쓰기 때문인듯) >> "◆ 행사안내 ◆" 기준으로 검색할 때는 "◆ 행사_안내 ◆" (공백 하나)는 유사도가 높아 찾을 수 있지만 ->> 특수문자를 제외하고 "행사안내" 로만 검색 할 때는 "행사_안내"는 유사도가 낮아 해당 구문을 찾을 수 없음 +>> 특수문자를 제외하고 "행사안내" 로만 검색 할 때는 "행사 안내"는 유사도가 낮아 해당 구문을 찾을 수 없음 001473 노이솜 문제1 줄간격 180% 맞는데 오답처리(마지막 엔터값 때문인듯) >> 1페이지의 문단 속성들의 줄간격이 180% 가 아닌 문단이 있으면 오답으로 처리중 ->> 마지막 엔터값 줄간격 160%를 예외 처리할 기준이 모호함 +>> 마지막 엔터값 줄간격 160%를 예외 처리할 기준이 아직 모호함