한글채점 개선버전 1-13문항까지 적용
This commit is contained in:
164
DIW_2504A_test.json
Normal file
164
DIW_2504A_test.json
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
{
|
||||||
|
"0": {
|
||||||
|
"0": {
|
||||||
|
"path": "",
|
||||||
|
"path2": "",
|
||||||
|
"points": 0,
|
||||||
|
"category": "파일저장",
|
||||||
|
"item": "파일명 (수검번호.hwp/hwpx)"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"path": "//PAGEMARGIN",
|
||||||
|
"value": {
|
||||||
|
"Bottom": 5669,
|
||||||
|
"Footer": 2834,
|
||||||
|
"Gutter": 0,
|
||||||
|
"Header": 2834,
|
||||||
|
"Left": 5669,
|
||||||
|
"Right": 5669,
|
||||||
|
"Top": 5669
|
||||||
|
},
|
||||||
|
"tolerance": 1,
|
||||||
|
"points": 4,
|
||||||
|
"category": "PageSetting",
|
||||||
|
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"path": "//STYLE[@Name='바탕글']",
|
||||||
|
"value": {
|
||||||
|
"FontName": "바탕",
|
||||||
|
"FontSize": "1000",
|
||||||
|
"Alignment": "Justify",
|
||||||
|
"LineSpacing": "160"
|
||||||
|
},
|
||||||
|
"points": 4,
|
||||||
|
"category": "BasicSetting",
|
||||||
|
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"path": "",
|
||||||
|
"searchValue": null,
|
||||||
|
"value": null,
|
||||||
|
"points": 40,
|
||||||
|
"category": "오타감점",
|
||||||
|
"item": "오타 1개 -1점 / 2503회부터 오타 1개 -1점으로 변경"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"1": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "궁서",
|
||||||
|
"points": 1,
|
||||||
|
"category": "SingleAnswer",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/① 글씨체 (궁서)"
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "100,170,92",
|
||||||
|
"points": 2,
|
||||||
|
"category": "Color",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/② 채우기 : 색상(RGB:100,170,92)"
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "28346",
|
||||||
|
"points": 2,
|
||||||
|
"category": "SingleAnswer",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/③ 크기-너비 (100mm)"
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "5669",
|
||||||
|
"points": 2,
|
||||||
|
"category": "SingleAnswer",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/④ 크기-높이 (20mm)"
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "true",
|
||||||
|
"points": 2,
|
||||||
|
"category": "SingleAnswer",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/⑤ 위치 (글자처럼 취급)"
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": "Center",
|
||||||
|
"points": 2,
|
||||||
|
"category": "SingleAnswer",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/⑥ 정렬 (가운데 정렬)"
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"path": "//TEXTART[@Text='{searchValue}']",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥마을사생대회안내",
|
||||||
|
"value": true,
|
||||||
|
"points": 2,
|
||||||
|
"category": "Boolean",
|
||||||
|
"item": "문구 (한옥마을사생대회안내)/⑦ 글맵시모양 (육안확인)"
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/SIZE",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자",
|
||||||
|
"value": {
|
||||||
|
"Height": 2800,
|
||||||
|
"Width": 2800
|
||||||
|
},
|
||||||
|
"tolerance": 200,
|
||||||
|
"points": 1,
|
||||||
|
"category": "TwoLineSize",
|
||||||
|
"item": "자/① 모양 (2줄)"
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자",
|
||||||
|
"value": "맑은 고딕",
|
||||||
|
"points": 1,
|
||||||
|
"category": "FontName",
|
||||||
|
"item": "자/② 글씨체 (맑은 고딕)"
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자",
|
||||||
|
"value": "53,135,145",
|
||||||
|
"points": 2,
|
||||||
|
"category": "Color",
|
||||||
|
"item": "자/③ 면색 : 색상(RGB:53,135,145)"
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//OUTSIDEMARGIN/@Right",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "자",
|
||||||
|
"value": "850",
|
||||||
|
"points": 2,
|
||||||
|
"category": "SingleAnswer",
|
||||||
|
"item": "자/④ 본문과의 간격 : 3.0mm"
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회",
|
||||||
|
"value": "BOLD",
|
||||||
|
"points": 2,
|
||||||
|
"category": "FontAttribute",
|
||||||
|
"item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/① 진하게"
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]",
|
||||||
|
"path2": null,
|
||||||
|
"searchValue": "한옥에 대한 체험과 교육이 준비된 사생대회",
|
||||||
|
"value": "UNDERLINE",
|
||||||
|
"points": 2,
|
||||||
|
"category": "FontAttribute",
|
||||||
|
"item": "문구 (한옥에 대한 체험과 교육이 준비된 사생대회)/② 밑줄"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -313,14 +313,26 @@ class XMLScorer:
|
|||||||
charshape_id = root.xpath(xpath)
|
charshape_id = root.xpath(xpath)
|
||||||
if not charshape_id:
|
if not charshape_id:
|
||||||
charshape_id = None
|
charshape_id = None
|
||||||
|
user_answer = None
|
||||||
else:
|
else:
|
||||||
font_id = root.xpath(f"//CHARSHAPE[@Id='{charshape_id[0]}']/FONTID/@Hangul")
|
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")
|
font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name")
|
||||||
|
user_answer = font_name[0]
|
||||||
user_answer = font_name[0]
|
|
||||||
|
|
||||||
self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal")
|
self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal")
|
||||||
|
|
||||||
|
elif "FontAttribute" in (category or ""):
|
||||||
|
charshape = root.xpath(xpath)
|
||||||
|
if not charshape:
|
||||||
|
charshape = None
|
||||||
|
user_answer = None
|
||||||
|
else:
|
||||||
|
font_attribute = charshape[0].find(right_answer)
|
||||||
|
if font_attribute is not None:
|
||||||
|
user_answer = font_attribute.tag
|
||||||
|
|
||||||
|
self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal")
|
||||||
|
|
||||||
onePersonResult['score_results'].append(scoring)
|
onePersonResult['score_results'].append(scoring)
|
||||||
print(f'scoring: {scoring}')
|
print(f'scoring: {scoring}')
|
||||||
onePersonResult['partial_scores'].append({
|
onePersonResult['partial_scores'].append({
|
||||||
@@ -609,7 +621,7 @@ class XMLScorer:
|
|||||||
def main():
|
def main():
|
||||||
|
|
||||||
# 시험회차 및 유형
|
# 시험회차 및 유형
|
||||||
exam_round = '2503'
|
exam_round = '2504'
|
||||||
exam_types = [
|
exam_types = [
|
||||||
'A',
|
'A',
|
||||||
# 'B',
|
# 'B',
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
[{"kind":2,"language":"xpath","value":"boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul][@Name='바탕']"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Name='바탕']/@Id"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id='6']/FONTID/@Hangul"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id='0']/@Align"},{"kind":2,"language":"xpath","value":"boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id={charshape_id}]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id={font_id}]/@Name"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text()[1],'전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대')]/parent::TEXT/@CharShape][ITALIC]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대')]/parent::TEXT/@CharShape"},{"kind":2,"language":"xpath","value":"//TABLE[1]/ROW[last()]/CELL[last()-1]//FIELDBEGIN[starts-with(@Command, '=AVG') and //TABLE[1]/ROW[last()]/CELL[last()]//FIELDBEGIN[starts-with(@Command, '=AVG')]]"}]
|
[{"kind":2,"language":"xpath","value":"boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3000 and //PARASHAPE[@Id=//CHAR[contains(text(),'기타')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2400)"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul][@Name='바탕']"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Name='바탕']/@Id"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id='6']/FONTID/@Hangul"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id='0']/@Align"},{"kind":2,"language":"xpath","value":"boolean(//RECTANGLE[.//CHAR[text()='지']][.//SIZE[(@Height >= 2600 and @Height <= 2800)and(@Width >= 2600 and @Width <= 2800)]])"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TEXT[CHAR[text()='지']]/@CharShape]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id={charshape_id}]/FONTID/@Hangul]/@Name"},{"kind":2,"language":"xpath","value":"//FONTFACE[@Lang='Hangul']/FONT[@Id={font_id}]/@Name"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text()[1],'전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대')]/parent::TEXT/@CharShape][ITALIC]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'전 세계적으로 차량의 수는 약 13억 대가 있고 국내는 약 2,500만 대')]/parent::TEXT/@CharShape"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text(),'한옥에 대한 체험과 교육이 준비된 사생대회')]/parent::TEXT/@CharShape]"}]
|
||||||
Reference in New Issue
Block a user