diff --git a/250702_DIW_2506A_채점결과.xlsx b/250702_DIW_2506A_채점결과.xlsx new file mode 100644 index 0000000..90d5273 Binary files /dev/null and b/250702_DIW_2506A_채점결과.xlsx differ diff --git a/250702_DIW_2506B_채점결과.xlsx b/250702_DIW_2506B_채점결과.xlsx new file mode 100644 index 0000000..0a13c48 Binary files /dev/null and b/250702_DIW_2506B_채점결과.xlsx differ diff --git a/250702_DIW_2506C_채점결과.xlsx b/250702_DIW_2506C_채점결과.xlsx new file mode 100644 index 0000000..320dc5d Binary files /dev/null and b/250702_DIW_2506C_채점결과.xlsx differ diff --git a/250702_DIW_2506D_채점결과.xlsx b/250702_DIW_2506D_채점결과.xlsx new file mode 100644 index 0000000..d9ed798 Binary files /dev/null and b/250702_DIW_2506D_채점결과.xlsx differ diff --git a/DIW_2506A.json b/DIW_2506A.json index f7db2de..f3d1bec 100644 --- a/DIW_2506A.json +++ b/DIW_2506A.json @@ -366,14 +366,16 @@ "item": "문구 (자원순환)/② 크기-높이 (12 mm)" }, "6": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", - "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "searchValue": "자원순환", - "value": ["DoubleSlim", "283"], + "value": { + "Style": "DoubleSlim", + "Width": "283" + }, "points": 2, - "category": "DoubleAnswer", + "category": "LineShape", "item": "문구 (자원순환)/③ 테두리 : 이중 실선(1.00mm)", - "desc": "1mm = 283pt value값은 283pt로 입력" + "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", diff --git a/DIW_2506B.json b/DIW_2506B.json index b06ef48..3213d98 100644 --- a/DIW_2506B.json +++ b/DIW_2506B.json @@ -366,14 +366,16 @@ "item": "문구 (동물등록제)/② 크기-높이 (12 mm)" }, "6": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", - "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "searchValue": "동물등록제", - "value": ["DoubleSlim", "283"], + "value": { + "Style": "DoubleSlim", + "Width": "283" + }, "points": 2, - "category": "DoubleAnswer", + "category": "LineShape", "item": "문구 (동물등록제)/③ 테두리 : 이중 실선(1.00mm)", - "desc": "1mm = 283pt value값은 283pt로 입력" + "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", diff --git a/DIW_2506C.json b/DIW_2506C.json index ad9c561..63fc70c 100644 --- a/DIW_2506C.json +++ b/DIW_2506C.json @@ -310,7 +310,8 @@ "desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc2": { "가운데 아래": "BottomCenter", - "오른쪽 아래": "BottomRight" + "오른쪽 아래": "BottomRight", + "왼쪽 아래": "BottomLeft" } }, "30": { @@ -367,14 +368,16 @@ "item": "문구 (인공지능의 영향)/② 크기-높이 (12 mm)" }, "6": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", - "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", "searchValue": "인공지능의 영향", - "value": ["DoubleSlim", "283"], + "value": { + "Style": "DoubleSlim", + "Width": "283" + }, "points": 2, - "category": "DoubleAnswer", + "category": "LineShape", "item": "문구 (인공지능의 영향)/③ 테두리 : 이중 실선(1.00mm)", - "desc": "1mm = 283pt value값은 283pt로 입력" + "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", diff --git a/회차별채점자료/2506/한글채점기준표.json b/DIW_2506D.json similarity index 71% rename from 회차별채점자료/2506/한글채점기준표.json rename to DIW_2506D.json index 2db79af..7f5a289 100644 --- a/회차별채점자료/2506/한글채점기준표.json +++ b/DIW_2506D.json @@ -46,65 +46,65 @@ "1": { "1": { "path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName", - "searchValue": "한국골프박람회", - "value": "돋움체", + "searchValue": "태국문화체험페스티벌안내", + "value": "궁서", "points": 1, "category": "OneAnswer", - "item": "문구 (한국골프박람회)/① 글씨체 (돋움체)" + "item": "문구 (태국문화체험페스티벌안내)/① 글씨체 (궁서)" }, "2": { "path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor", - "searchValue": "한국골프박람회", - "value": "49,95,151", + "searchValue": "태국문화체험페스티벌안내", + "value": "79,156,22", "points": 2, "category": "Color", - "item": "문구 (한국골프박람회)/② 채우기 : 색상(RGB:49,95,151)" + "item": "문구 (태국문화체험페스티벌안내)/② 채우기 : 색상(RGB:79,156,22)" }, "3": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width", - "searchValue": "한국골프박람회", - "value": "100", + "searchValue": "태국문화체험페스티벌안내", + "value": "130", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (한국골프박람회)/③ 크기-너비 (110 mm)" + "item": "문구 (태국문화체험페스티벌안내)/③ 크기-너비 (130 mm)" }, "4": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height", - "searchValue": "한국골프박람회", + "searchValue": "태국문화체험페스티벌안내", "value": "20", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "문구 (한국골프박람회)/④ 크기-높이 (20mm)" + "item": "문구 (태국문화체험페스티벌안내)/④ 크기-높이 (20 mm)" }, "5": { "path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "한국골프박람회", + "searchValue": "태국문화체험페스티벌안내", "value": "true", "points": 2, "category": "OneAnswer", - "item": "문구 (한국골프박람회)/⑤ 위치 (글자처럼 취급)" + "item": "문구 (태국문화체험페스티벌안내)/⑤ 위치 (글자처럼 취급)" }, "6": { "path": "//PARASHAPE[@Id=//P[.//TEXTART[@Text='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "한국골프박람회", + "searchValue": "태국문화체험페스티벌안내", "value": "Center", "points": 2, "category": "OneAnswer", - "item": "문구 (한국골프박람회)/⑥ 정렬 (가운데 정렬)" + "item": "문구 (태국문화체험페스티벌안내)/⑥ 정렬 (가운데 정렬)" }, "7": { "path": "//TEXTART[@Text='{searchValue}']", - "searchValue": "한국골프박람회", + "searchValue": "태국문화체험페스티벌안내", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (한국골프박람회)/⑦ 글맵시모양 (육안확인)" + "item": "문구 (태국문화체험페스티벌안내)/⑦ 글맵시모양 (육안확인)" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE", - "searchValue": "지", + "searchValue": "태", "value": { "Height": 2800, "Width": 2800 @@ -112,68 +112,68 @@ "tolerance": 200, "points": 1, "category": "TwoLineSize", - "item": "지/① 모양 (2줄)" + "item": "태/① 모양 (2줄)" }, "9": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "지", - "value": "굴림체", + "searchValue": "태", + "value": "맑은 고딕", "points": 1, "category": "FontName", - "item": "지/② 글씨체 (굴림체)" + "item": "태/② 글씨체 (맑은 고딕)" }, "10": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "지", - "value": "236,162,142", + "searchValue": "태", + "value": "244,212,29", "points": 2, "category": "Color", - "item": "지/③ 면색 : 색상(RGB:236,162,142)" + "item": "태/③ 면색 : 색상(RGB:244,212,29)" }, "11": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right", - "searchValue": "지", + "searchValue": "태", "value": "3.0", "tolerance": 1, "points": 2, "category": "mmSize", - "item": "지/④ 본문과의 간격 : 3.0mm" + "item": "태/④ 본문과의 간격 : 3.0mm" }, "12": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온", - "value": "ITALIC", + "searchValue": "태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!", + "value": "BOLD", "points": 2, "category": "FontAttribute", - "item": "문구 (그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온)/① ITALIC" + "item": "문구 (태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!)/① BOLD" }, "13": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]", - "searchValue": "그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온", - "value": "UNDERLINE", + "searchValue": "태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!", + "value": "ITALIC", "points": 2, "category": "FontAttribute", - "item": "문구 (그 시작부터 지금까지 줄곧 한국골프산업의 성장과 함께해 온)/② UNDERLINE" + "item": "문구 (태국의 아름다운 문화와 함께 잊지 못할 추억을 만들어보세요!)/② ITALIC" }, "14": { "path": "//CHAR[contains(text(),'{char1}')]", "path2": "//CHAR[contains(text(),'{char2}')]", "path3": "//CHAR[contains(text(),'{char3}')]", - "char1": "●", - "char2": "●", + "char1": "◇", + "char2": "◇", "char3": "※", "value": 3, "points": 3, "category": "SpecialChar", - "item": "① ●, ② ●, ③ ※" + "item": "① ◇ , ② ◇ , ③ ※" }, "15": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", "searchValue": "행사안내", - "value": "궁서", + "value": "돋움", "points": 1, "category": "FontName", - "item": "문구 (● 행사안내 ●)/① 글씨체 (궁서)" + "item": "문구 (◇ 행사안내 ◇)/① 글씨체 (돋움)" }, "16": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", @@ -181,31 +181,31 @@ "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (● 행사안내 ●)/② 정렬 (가운데 정렬)" + "item": "문구 (◇ 행사안내 ◇)/② 정렬 (가운데 정렬)" }, "17": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨", - "value": "BOLD", + "searchValue": "오전/오후 총 2회", + "value": "ITALIC", "points": 1, "category": "FontAttribute", - "item": "문구 (스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨)/① BOLD" + "item": "문구 (오전/오후 총 2회)/① ITALIC" }, "18": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "hyperlink_ptag": "//P[.//FIELDBEGIN[@Type='Hyperlink']]", - "searchValue": "스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨", + "searchValue": "오전/오후 총 2회", "value": "UNDERLINE", "points": 1, "category": "FontAttribute", - "item": "문구 (스크린 골프 체험 및 장타대회, 프로골퍼 원포인트 레슨)/② UNDERLINE" + "item": "문구 (오전/오후 총 2회)/② UNDERLINE" }, "19": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN", "searchValue": "기타사항", "value": { - "Left": 10, + "Left": 15, "Indent": 12 }, "points": 2, @@ -215,52 +215,52 @@ }, "20": { "path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height", - "searchValue": "2025. 06. 18.", - "value": "1400", + "searchValue": "2025. 06. 28.", + "value": "1300", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 18.)/① 크기 (1400)", + "item": "문구 (2025. 06. 28.)/① 크기 (1300)", "desc": "1pt당 100" }, "21": { "path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align", - "searchValue": "2025. 06. 18.", + "searchValue": "2025. 06. 28.", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (2025. 06. 18.)/② 정렬 (가운데 정렬)" + "item": "문구 (2025. 06. 28.)/② 정렬 (가운데 정렬)" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "한국골프연맹", - "value": "궁서체", + "searchValue": "광진다문화체험관", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구 (한국골프연맹)/① 글씨체 (궁서체)" + "item": "문구 (광진다문화체험관)/① 글씨체 (돋움체)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "한국골프연맹", + "searchValue": "광진다문화체험관", "value": "2400", "points": 1, "category": "OneAnswer", - "item": "문구 (한국골프연맹)/② 크기 (2400)" + "item": "문구 (광진다문화체험관)/② 크기 (2400)" }, "24": { "path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P/@ParaShape]/@Align", - "searchValue": "한국골프연맹", + "searchValue": "광진다문화체험관", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (한국골프연맹)/③ 정렬 (가운데 정렬)" + "item": "문구 (광진다문화체험관)/③ 정렬 (가운데 정렬)" }, "25": { "path": "//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", - "value": "돋움", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (DIAT)/① 글꼴 (돋움)" + "item": "문구 (DIAT)/① 글꼴 (굴림)" }, "26": { "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", @@ -280,10 +280,10 @@ }, "28": { "path": "//PAGENUM/@FormatType", - "value": "RomanCapital", + "value": "CircledDigit", "points": 2, "category": "PageNumber", - "item": "① 쪽 번호 매기기 (A,B,C 순으로)", + "item": "① 쪽 번호 매기기 (①,②,③ 순으로)", "desc1": { "가,나,다": "HangulSyllable", "1,2,3": "Digit", @@ -296,29 +296,31 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", + "甲,乙,丙": "DecagonCircleHanja", "desc": "정답에 맞는 값 value에 입력" }, "desc2": "1, 2페이지 모두 정답이어야 점수 부여" }, "29": { "path": "//PAGENUM/@Pos", - "value": "BottomCenter", + "value": "BottomLeft", "points": 2, "category": "PageNumber", - "item": "오른쪽 아래", + "item": "가운데 아래", "desc": "1, 2페이지 모두 정답이어야 점수 부여", "desc2": { "가운데 아래": "BottomCenter", - "오른쪽 아래": "BottomRight" + "오른쪽 아래": "BottomRight", + "왼쪽 아래": "BottomLeft" } }, "30": { "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", - "value": "180", - "first_word": "지", + "value": "200", + "first_word": "태", "points": 2, "category": "LineSpacing", - "item": "문제 1 줄간격 180% 설정", + "item": "문제 1 줄간격 200% 설정", "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." } }, @@ -351,87 +353,89 @@ }, "4": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width", - "searchValue": "골프", - "value": "50", + "searchValue": "미소의 나라, 태국", + "value": "70", "points": 2, "category": "mmSize", - "item": "문구 (골프)/① 크기-너비 (50 mm)" + "item": "문구 (미소의 나라, 태국)/① 크기-너비 (70 mm)" }, "5": { "path": "//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height", - "searchValue": "골프", + "searchValue": "미소의 나라, 태국", "value": "12", "points": 2, "category": "mmSize", - "item": "문구 (골프)/② 크기-높이 (12 mm)" + "item": "문구 (미소의 나라, 태국)/② 크기-높이 (12 mm)" }, "6": { - "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Style", - "path2": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE/@Width", - "searchValue": "골프", - "value": ["DoubleSlim", "283"], + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//LINESHAPE", + "searchValue": "미소의 나라, 태국", + "value": { + "Style": "DoubleSlim", + "Width": "283" + }, "points": 2, - "category": "DoubleAnswer", - "item": "문구 (골프)/③ 테두리 : 이중 실선(1.00mm)", - "desc": "1mm = 283pt value값은 283pt로 입력" + "category": "LineShape", + "item": "문구 (미소의 나라, 태국)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt value['Width']에 pt값 입력" }, "7": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", - "searchValue": "골프", - "value": "20", + "searchValue": "미소의 나라, 태국", + "value": "50", "points": 2, "category": "OneAnswer", - "item": "문구 (골프)/④ 글상자 모서리 (둥근모양)", - "desc": "모서리 비율 50이면 반원 / 20이면 둥근모양" + "item": "문구 (미소의 나라, 태국)/④ 글상자 모서리 (직각)", + "desc": "모서리 비율 반원:50 / 둥근모양:20 / 직각:0" }, "8": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", - "searchValue": "골프", - "value": "147,194,80", + "searchValue": "미소의 나라, 태국", + "value": "61,164,73", "points": 2, "category": "Color", - "item": "문구 (골프)/⑤ 채우기 : 색상(RGB:147,194,80)" + "item": "문구 (미소의 나라, 태국)/⑤ 채우기 : 색상(RGB:61,164,73)" }, "9": { "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", - "searchValue": "골프", + "searchValue": "미소의 나라, 태국", "value": "true", "points": 1, "category": "OneAnswer", - "item": "문구 (골프)/⑥ 글상자 위치 (글자처럼 취급)" + "item": "문구 (미소의 나라, 태국)/⑥ 글상자 위치 (글자처럼 취급)" }, "10": { "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", - "searchValue": "골프", + "searchValue": "미소의 나라, 태국", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (골프)/⑦ 글상자 정렬 (가운데 정렬)" + "item": "문구 (미소의 나라, 태국)/⑦ 글상자 정렬 (가운데 정렬)" }, "11": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "골프", - "value": "견고딕", + "searchValue": "미소의 나라, 태국", + "value": "굴림체", "points": 1, "category": "FontName", - "item": "문구 (골프)/⑧ 글씨체 (견고딕)" + "item": "문구 (미소의 나라, 태국)/⑧ 글씨체 (굴림체)" }, "12": { "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "골프", - "value": "2200", + "searchValue": "미소의 나라, 태국", + "value": "2000", "points": 1, "category": "OneAnswer", - "item": "문구 (골프)/⑨ 글씨크기 (2200)", + "item": "문구 (미소의 나라, 태국)/⑨ 글씨크기 (2000)", "desc": "1pt당 100" }, "13": { "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "골프", + "searchValue": "미소의 나라, 태국", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "문구 (골프)/⑩ 정렬 (가운데 정렬)" + "item": "문구 (미소의 나라, 태국)/⑩ 정렬 (가운데 정렬)" }, "14": { "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", @@ -439,7 +443,7 @@ "value": true, "points": 2, "category": "Boolean", - "item": "① 파일명 \"그림A.jpg\" 삽입" + "item": "① 파일명 \"그림D.jpg\" 삽입" }, "15": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", @@ -464,88 +468,88 @@ }, "18": { "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true') and @HorzRelTo='Page']/@VertOffset", - "value": "24", + "value": "22", "points": 2, "category": "mmSize", - "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24 mm)" + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 22 mm)" }, "19": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "1. 골프란?", - "value": "굴림체", + "searchValue": "1. 태국의 환경", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구① (1. 골프란?)/① 글씨체 (굴림체)" + "item": "문구① (1. 태국의 환경)/① 글씨체 (돋움체)" }, "20": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "1. 골프란?", + "searchValue": "1. 태국의 환경", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구① (1. 골프란?)/② 크기 (12pt)" + "item": "문구① (1. 태국의 환경)/② 크기 (12pt)" }, "21": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "1. 골프란?", + "searchValue": "1. 태국의 환경", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구① (1. 골프란?)/③ 진하게" + "item": "문구① (1. 태국의 환경)/③ 진하게" }, "22": { "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", - "searchValue": "2. 한국의 골프 역사", - "value": "굴림체", + "searchValue": "2. 태국의 주요 도시", + "value": "돋움체", "points": 1, "category": "FontName", - "item": "문구② (2. 한국의 골프 역사)/① 글씨체 (굴림체)" + "item": "문구② (2. 태국의 주요 도시)/① 글씨체 (돋움체)" }, "23": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "2. 한국의 골프 역사", + "searchValue": "2. 태국의 주요 도시", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "문구② (2. 자원순환 실천 방법)/② 크기 (1200)" + "item": "문구② (2. 태국의 주요 도시)/② 크기 (1200)" }, "24": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "2. 한국의 골프 역사", + "searchValue": "2. 태국의 주요 도시", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "문구② (2. 한국의 골프 역사)/③ 진하게" + "item": "문구② (2. 태국의 주요 도시)/③ 진하게" }, "25": { "path": "boolean(//TEXT[CHAR[contains(text(),'{option}')]]/FOOTNOTE)", "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{option}') + 1) = '{option}']/following-sibling::FOOTNOTE/descendant::CHAR)", - "option": "전당", + "option": "카오소이", "value": true, "points": 2, "category": "Boolean", - "item": "문구 (전당)/① 각주 설정 및 문구 입력" + "item": "문구 (카오소이)/① 각주 설정 및 문구 입력" }, "26": { "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", - "searchValue": "한 분야에서 뛰어난 활약을 보인 사람들을 기념하기 위해 설립된 박물관, 단체, 모임을 말한다.", - "value": "돋움체", + "searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", + "value": "굴림", "points": 1, "category": "FontName", - "item": "문구 (전당)/② 글씨체 (돋움체)" + "item": "문구 (카오소이)/② 글씨체 (굴림)" }, "27": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", - "searchValue": "한 분야에서 뛰어난 활약을 보인 사람들을 기념하기 위해 설립된 박물관, 단체, 모임을 말한다.", + "searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", "value": "900", "points": 1, "category": "OneAnswer", - "item": "문구 (전당)/③ 크기 (9pt)" + "item": "문구 (카오소이)/③ 크기 (9pt)" }, "28": { "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", - "searchValue": "한 분야에서 뛰어난 활약을 보인 사람들을 기념하기 위해 설립된 박물관, 단체, 모임을 말한다.", - "value": "LatinSmall", + "searchValue": "커리와 면, 토핑으로 이루어진 태국의 전통 국수", + "value": "DecagonCircle", "points": 2, "category": "OneAnswer", "item": "문구 (전당)/④ 각주 번호모양", @@ -561,85 +565,86 @@ "ⓐ,ⓑ,ⓒ": "CircledLatinSmall", "i,ii,iii": "RomanSmall", "I,II,III": "RomanCapital", + "甲,乙,丙": "DecagonCircleHanja", "정답에 맞는 값 value에 입력": "" } }, "29": { - "path": "boolean(//CHAR[contains(text(),'Fairway')])", - "ignoreWord": "Fairway", + "path": "boolean(//CHAR[contains(text(),'Temple')])", + "ignoreWord": "Temple", "value": true, "points": 3, "category": "Boolean", - "item": "Fairway/영단어 미입력, 대소문자/오타 시 전체 감점", + "item": "Temple/영단어 미입력, 대소문자/오타 시 전체 감점", "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" }, "30": { "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", "word": [ - ["승부", "勝負"], - ["초목", "草木"], - ["설치", "設置"], - ["인정", "認定"], - ["유학", "留學"] + ["절벽", "絶壁"], + ["산림", "山林"], + ["서식", "棲息"], + ["비옥", "肥沃"], + ["매력", "魅力"] ], "value": 10, "points": 10, "category": "Hanja", - "item": "① 승부(勝負), ② 초목(草木), ③ 설치(設置), ④ 인정(認定), ⑤ 유학(留學)" + "item": "① 절벽(絶壁), ② 산림(山林), ③ 서식(棲息), ④ 비옥(肥沃), ⑤ 매력(魅力)" }, "31": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이있는')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'대성기후')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…초목(草木)은 있는…) / 은 → 이 글자바꿈" + "item": "문구 (…따뜻한 열대강 기후를 가진…)>'강' → '성' 글자바꿈" }, "32": { - "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'초의프로')])", + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'타낸표현')])", "value": true, "points": 3, "category": "Boolean", - "item": "문구 (…프로 골프 최초의 선수…)/프로 골프 / 최초의 순서바꿈" + "item": "문구 (…특성을 가장 잘 표현이기도 나타낸 하다…)>'표현이기도 / 나타낸' 순서바꿈" }, "33": { "path": "//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape", - "searchValue": "골프 관련 체육시설업 현황", - "value": "중고딕", + "searchValue": "지역별 관광객 수(단위:만 명)", + "value": "맑은 고딕", "points": 1, "category": "FontName", - "item": "제목 문구 (골프 관련 체육시설업 현황)/① 글씨체 (중고딕)" + "item": "제목 문구 (지역별 관광객 수(단위:만 명))/① 글씨체 (맑은 고딕)" }, "34": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", - "searchValue": "골프 관련 체육시설업 현황", + "searchValue": "지역별 관광객 수(단위:만 명)", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (골프 관련 체육시설업 현황)/② 크기 (1200)" + "item": "제목 문구 (지역별 관광객 수(단위:만 명))/② 크기 (1200)" }, "35": { "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", - "searchValue": "골프 관련 체육시설업 현황", + "searchValue": "지역별 관광객 수(단위:만 명)", "value": "BOLD", "points": 1, "category": "FontAttribute", - "item": "제목 문구 (골프 관련 체육시설업 현황)/③ 진하게" + "item": "제목 문구 (지역별 관광객 수(단위:만 명))/③ 진하게" }, "36": { "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", - "searchValue": "골프 관련 체육시설업 현황", + "searchValue": "지역별 관광객 수(단위:만 명)", "value": "Center", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (골프 관련 체육시설업 현황)/④ 정렬 (가운데 정렬)" + "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,61", + "value": "144,231,53", "points": 2, "category": "Color", - "item": "위쪽 제목 셀/① 색상(RGB:233,174,61)" + "item": "위쪽 제목 셀/① 색상(RGB:144,231,53)" }, "38": { "path": "//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]", @@ -668,11 +673,11 @@ "41": { "path": "//TABLE//TEXT/@CharShape", "path2": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name", - "value": "굴림", + "value": "돋움", "points": 1, "category": "TableFontName", "category_tmp": "FontName", - "item": "글자모양/① 글씨체 (굴림)", + "item": "글자모양/① 글씨체 (돋움)", "desc": "테이블 폰트명 문항은 테이블의 모든 셀이 정답폰트와 일치해야 함, 하나만 일치해도 정답으로 채점할 경우 category값을 FontName으로 변경" }, "42": { @@ -680,7 +685,7 @@ "value": "1000", "points": 1, "category": "TableAnswer", - "item": "글자모양/② 크기 (10pt)" + "item": "글자모양/② 크기 (1000)" }, "43": { "path": "//PARASHAPE[@Id=//TABLE/ROW//P/@ParaShape]/@Align", @@ -700,11 +705,11 @@ }, "45": { "chart_xpath": "", - "chart_type": "묶은가로막대형", + "chart_type": "묶은세로막대형", "value": true, "points": 2, "category": "ChartType", - "item": "① 종류 (묶은가로막대형)", + "item": "① 종류 (묶은세로막대형)", "desc": "chart_type을 입력받아 차트타입에 맞는 xml요소가 있는지 내부적으로 검사, chart_type만 한글로 입력해주면 된다. (공백무시)" }, "46": { @@ -739,36 +744,36 @@ }, "50": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r//a:ea/@typeface", - "searchValue": "골프 관련 체육시설업 현황", - "value": "궁서체", + "searchValue": "지역별 관광객 수", + "value": "돋움", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (골프 관련 체육시설업 현황)/① 글씨체 (궁서체)" + "item": "제목 문구 (지역별 관광객 수)/① 글씨체 (돋움)" }, "51": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@sz", - "searchValue": "골프 관련 체육시설업 현황", + "searchValue": "지역별 관광객 수", "value": "1200", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (골프 관련 체육시설업 현황)/② 크기 (1200)" + "item": "제목 문구 (지역별 관광객 수)/② 크기 (1200)" }, "52": { "chart_xpath": "//a:t[text()='{searchValue}']/ancestor::a:r/a:rPr/@{option}", "option": "b", - "searchValue": "골프 관련 체육시설업 현황", + "searchValue": "지역별 관광객 수", "value": "1", "points": 1, "category": "OneAnswer", - "item": "제목 문구 (골프 관련 체육시설업 현황)/③ 진하게", + "item": "제목 문구 (지역별 관광객 수)/③ 진하게", "desc": "option값 - 기울임(Italic):i / 굵게(Bold):b" }, "53": { "chart_xpath": "//c:catAx/c:txPr//a:ea/@typeface", - "value": "돋움", + "value": "굴림", "points": 1, "category": "ChartOneAnswer", - "item": "X축/① 글꼴 (돋움)" + "item": "X축/① 글꼴 (굴림)" }, "54": { "chart_xpath": "//c:catAx/c:txPr//a:defRPr/@sz", @@ -788,10 +793,10 @@ }, "56": { "chart_xpath": "//c:valAx/c:txPr//a:ea/@typeface", - "value": "돋움", + "value": "굴림", "points": 1, "category": "ChartOneAnswer", - "item": "Y축/① 글꼴 (돋움)" + "item": "Y축/① 글꼴 (굴림)" }, "57": { "chart_xpath": "//c:valAx/c:txPr//a:defRPr/@sz", @@ -811,10 +816,10 @@ }, "59": { "chart_xpath": "//c:legend//a:ea/@typeface", - "value": "돋움", + "value": "굴림", "points": 1, "category": "OneAnswer", - "item": "범례/① 글꼴 (돋움)" + "item": "범례/① 글꼴 (굴림)" }, "60": { "chart_xpath": "//c:legend//a:defRPr/@sz", diff --git a/diwScoring2.py b/diwScoring2.py index 0b3e8df..4c11ab4 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -38,10 +38,16 @@ class XMLScorer: # mm to pt def convert_mm_to_pt(self, mm): one_mm_per_pt = 2.83465 - hwp_internal_conversion_method = 100 - pt = math.trunc(mm * one_mm_per_pt * hwp_internal_conversion_method) + hwp_scale = 100 + pt = math.trunc(mm * one_mm_per_pt * hwp_scale) return pt + def convert_pt_to_mm(self, pt): + one_mm_per_pt = 2.83465 + hwp_scale = 100 + mm = round(pt / (one_mm_per_pt * hwp_scale), 1) + return mm + # 유사한 텍스트 찾기 def find_similar_text(self, root, target_text, xml_type, threshold=0.7): """ @@ -172,7 +178,7 @@ class XMLScorer: # XML문서 페이지 파싱 전처리 pages = parse_pages_by_bookmark(root) - print("🚩Pages : ", pages) + # print("🚩Pages : ", pages) # 네임스페이스 정의 namespaces = { @@ -397,21 +403,27 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points) if scoring['points'] > 0: break + + # [2-6] 테두리 이중실선 1.00mm + elif (category or "") == "LineShape": + line_shapes = root.xpath(xpath) if xpath else [] - # 정답이 두개인 경우 - elif (category or "") == "DoubleAnswer": - items1 = root.xpath(xpath) if xpath else [] - items2 = root.xpath(xpath2) if xpath2 else [] + user_answer = { + 'Style': None, + 'Width': None + } - user_answer = [] - for item1, item2 in zip(items1, items2): - user_answer.append(item1) - user_answer.append(item2) - + for line_shape in line_shapes: + style = line_shape.get("Style") + width = line_shape.get("Width") + + user_answer['Style'] = style + user_answer['Width'] = width + self.evaluate_answer(scoring, user_answer, right_answer, points) if scoring['points'] > 0: break - + # 사용자 입력값이 mm단위인 경우 elif (category or "") == "mmSize": items = root.xpath(xpath) @@ -526,8 +538,10 @@ class XMLScorer: all_match = False continue - user_answer = font_name[0].replace(" ", "") # 공백 제거 - + # 공백 제거 + user_answer = font_name[0].replace(" ", "") + right_answer = right_answer.replace(" ","") + # 접두어 제거 if right_answer in ["견고딕", "중고딕"]: user_answer = user_answer.replace("한양", "") @@ -1217,7 +1231,7 @@ def main(): 'A', 'B', 'C', - # 'D', + 'D', ] test_mode = False diff --git a/zzz.xbook b/zzz.xbook index 66bf55a..81e73c5 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"/HWPML/BODY/SECTION/P[19]"},{"kind":2,"language":"xpath","value":"//SECTION"},{"kind":2,"language":"xpath","value":"//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//P//COLDEF/@Count"},{"kind":2,"language":"xpath","value":"//P[.//BOOKMARK/@Name=\"Page_2_start\"]"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//a:t[text()='클라우드 보안투자']/ancestor::a:r//a:ea/@typeface"},{"kind":2,"language":"xpath","value":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕'"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='태']]/@CharShape"},{"kind":2,"language":"xpath","value":"//SECTION"},{"kind":2,"language":"xpath","value":"//P"},{"kind":2,"language":"xpath","value":"//P[.//FIELDBEGIN[@Type='Hyperlink'] and .//CHAR[contains(., 'http')]]"},{"kind":2,"language":"xpath","value":"//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION[not(@TreatAsChar='true')]/@HorzOffset"},{"kind":2,"language":"xpath","value":"//P//COLDEF/@Count"},{"kind":2,"language":"xpath","value":"//P[.//BOOKMARK/@Name=\"Page_2_start\"]"}] \ No newline at end of file diff --git a/회차별채점자료/2506/excel_채점기준표/DIW_2506C.xlsx b/회차별채점자료/2506/excel_채점기준표/DIW_2506C.xlsx index 66f6eeb..0b11155 100644 Binary files a/회차별채점자료/2506/excel_채점기준표/DIW_2506C.xlsx and b/회차별채점자료/2506/excel_채점기준표/DIW_2506C.xlsx differ diff --git a/회차별채점자료/2506/excel_채점기준표/DIW_2506D.xlsx b/회차별채점자료/2506/excel_채점기준표/DIW_2506D.xlsx index ffac6f1..5af603e 100644 Binary files a/회차별채점자료/2506/excel_채점기준표/DIW_2506D.xlsx and b/회차별채점자료/2506/excel_채점기준표/DIW_2506D.xlsx differ diff --git a/회차별채점자료/2506/hml_변환/DIW_2506C copy.hml b/회차별채점자료/2506/hml_변환/DIW_2506C copy.hml new file mode 100644 index 0000000..0658a25 --- /dev/null +++ b/회차별채점자료/2506/hml_변환/DIW_2506C copy.hml @@ -0,0 +1,16733 @@ +user2025년 5월 22일 목요일 오후 2:54:55^1.^2.^3)^4)(^5)(^6)^7^8^1.^2.^3)^4)(^5)(^6)^7^8