자막 '화면 정가운데 아래' 채점 방식 변경
This commit is contained in:
BIN
0217_DIC_2521A_result.xlsx
Normal file
BIN
0217_DIC_2521A_result.xlsx
Normal file
Binary file not shown.
BIN
0217_DIC_2521B_result.xlsx
Normal file
BIN
0217_DIC_2521B_result.xlsx
Normal file
Binary file not shown.
BIN
0217_DIC_2521C_result.xlsx
Normal file
BIN
0217_DIC_2521C_result.xlsx
Normal file
Binary file not shown.
BIN
0217_DIC_2521D_result.xlsx
Normal file
BIN
0217_DIC_2521D_result.xlsx
Normal file
Binary file not shown.
@@ -209,12 +209,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "양을 모는 목동",
|
"search": "양을 모는 목동",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.353,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.929
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
376
DIC_2521A_TEST.json
Normal file
376
DIC_2521A_TEST.json
Normal file
@@ -0,0 +1,376 @@
|
|||||||
|
{
|
||||||
|
"0": {
|
||||||
|
"1": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"ele": "$[?(@.width == 65 && @.height == 45)]",
|
||||||
|
"type": "boolean",
|
||||||
|
"point": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"1": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"ele": "$.children[?(@.name=='초원')]",
|
||||||
|
"type": "boolean",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"ele": "$.children[?(@.name=='Sheep Ranch')].name",
|
||||||
|
"value": "Sheep Ranch",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"ele": "$.children[?(@.name=='Sheep Ranch')].text.font.names[0]",
|
||||||
|
"type": "font",
|
||||||
|
"value": "Arial",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"ele": "$.children[?(@.name=='Sheep Ranch')].text.font.names[0]",
|
||||||
|
"value": "Arial-BoldItalicMT",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"ele": "$.children[?(@.name=='Sheep Ranch')].text.font.sizes[0]",
|
||||||
|
"value": 48,
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"ele": "$.children[?(@.name=='Sheep Ranch')].text.font.colors[0]",
|
||||||
|
"type": "color",
|
||||||
|
"value": "12ba00",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"ele": "$.children[?(@.name=='양 목장')].name",
|
||||||
|
"value": "양 목장",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"ele": "$.children[?(@.name=='양 목장')].text.font.names[0]",
|
||||||
|
"type": "font",
|
||||||
|
"value": "GungsuhChe",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"ele": "$.children[?(@.name=='양 목장')].text.font.sizes[0]",
|
||||||
|
"value": 36,
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"ele": "$.children[?(@.name=='양 목장')].text.font.colors[0]",
|
||||||
|
"type": "color",
|
||||||
|
"value": "ff9000",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"ele": "$.children[?(@.name=='초원')]",
|
||||||
|
"type": "boolean",
|
||||||
|
"point": 10
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"ele": "none",
|
||||||
|
"point": 0
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"ele": "$[?(@.width == 65 && @.height == 35)]",
|
||||||
|
"type": "boolean",
|
||||||
|
"point": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"1": {
|
||||||
|
"ele": "//CRClipArr/CRClip[position() = //CRTrackList[1]/CRTrackClip/@ClipIndex]/@Path",
|
||||||
|
"type": "array",
|
||||||
|
"value": [
|
||||||
|
"동영상.mp4",
|
||||||
|
"이미지2.jpg",
|
||||||
|
"이미지3.jpg",
|
||||||
|
"이미지1.jpg"
|
||||||
|
],
|
||||||
|
"point": 4
|
||||||
|
},
|
||||||
|
"2": {
|
||||||
|
"ele": "/CROASTERP/CRTrackArr[1]/CRVideoTrackArr[1]/CRTrackList[1]/CRTrackClip[1][@Speed='130']",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"3": {
|
||||||
|
"ele": "count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)",
|
||||||
|
"type": "startend",
|
||||||
|
"start": "0",
|
||||||
|
"end": "340",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"4": {
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]//CRFilter[@ID='52'][@VID100='10'][@VID103='0.80000001']",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"5": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']",
|
||||||
|
"search": "양을 모는 목동",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"6": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']",
|
||||||
|
"ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='바탕체']",
|
||||||
|
"search": "양을 모는 목동",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='110']",
|
||||||
|
"ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='110']",
|
||||||
|
"search": "양을 모는 목동",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"8": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-270661']",
|
||||||
|
"ele2": "//CROwneUnit[1]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-270661']",
|
||||||
|
"search": "양을 모는 목동",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"9": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
|
"type": "range",
|
||||||
|
"search": "양을 모는 목동",
|
||||||
|
"start": [ 0.100, 0.785 ],
|
||||||
|
"end": [ 0.475, 0.999 ],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"10": {
|
||||||
|
"existEle": "//CRCUnitArr[@Name='{search}']",
|
||||||
|
"ele": "sum(//CRTrackList[@Name='텍스트']/CRTrackClip[not(@ClipIndex=count(//CROwneUnit[1]/CRCUnitArr/preceding::CROwneUnit))]/@Length)",
|
||||||
|
"type": "searchIndex",
|
||||||
|
"value": 160,
|
||||||
|
"search": "양을 모는 목동",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"11": {
|
||||||
|
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='양을 모는 목동']]/preceding::CROwneUnit))][@Length='120']",
|
||||||
|
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[1]/CRCUnitArr/preceding::CROwneUnit))][@Length='120']",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"existEle": "//CRClip[@Path='동영상.mp4']",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='동영상.mp4']/preceding-sibling::*)]/@Mute",
|
||||||
|
"type": "searchIndex",
|
||||||
|
"value": "1",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"13": {
|
||||||
|
"existEle": "//CRClip[@Path='이미지2.jpg']",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/@Length",
|
||||||
|
"type": "searchIndex",
|
||||||
|
"value": "180",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"type": "multi",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]//CRFilter/@VID100",
|
||||||
|
"value": [
|
||||||
|
"99",
|
||||||
|
"65"
|
||||||
|
],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"15": {
|
||||||
|
"type": "multi",
|
||||||
|
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지2.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type",
|
||||||
|
"value": [
|
||||||
|
"19",
|
||||||
|
"460:520",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"16": {
|
||||||
|
"existEle": "//CRClip[@Path='이미지3.jpg']",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/@Length",
|
||||||
|
"type": "searchIndex",
|
||||||
|
"value": "150",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"17": {
|
||||||
|
"type": "multi",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]//CRFilter/@VID101",
|
||||||
|
"value": [
|
||||||
|
"128",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"18": {
|
||||||
|
"type": "multi",
|
||||||
|
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지3.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type",
|
||||||
|
"value": [
|
||||||
|
"14",
|
||||||
|
"610:670",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"19": {
|
||||||
|
"existEle": "//CRClip[@Path='이미지1.jpg']",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/@Length",
|
||||||
|
"type": "searchIndex",
|
||||||
|
"value": "150",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"20": {
|
||||||
|
"type": "multi",
|
||||||
|
"ele": "//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@ID |//CRTrackList[@Name='비디오1']/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]//CRFilter/@VID100",
|
||||||
|
"value": [
|
||||||
|
"184",
|
||||||
|
"20"
|
||||||
|
],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"21": {
|
||||||
|
"type": "multi",
|
||||||
|
"ele": "//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@ID|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Range|//CRTransFilter[@ClipIndex=count(//CRTrackList/CRTrackClip[@ClipIndex=count(//CRClip[@Path='이미지1.jpg']/preceding-sibling::*)]/preceding-sibling::CRTrackClip)]/@Type",
|
||||||
|
"value": [
|
||||||
|
"0",
|
||||||
|
"760:820",
|
||||||
|
"2"
|
||||||
|
],
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"22": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"23": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']",
|
||||||
|
"ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID102='돋움체']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"24": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool[@Type='1']/GCUnit[@VID101='160']",
|
||||||
|
"ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool[@Type='1']/GCUnit[@VID101='160']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"25": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='4'][@VID100='-1589535']",
|
||||||
|
"ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='4'][@VID100='-1589535']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"26": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}']//GCUnitPool/GCUnit[@Type='2'][@VID100='0.2'][@VID101='-8510694']",
|
||||||
|
"ele2": "//CROwneUnit[2]/CRCUnitArr//GCUnitPool/GCUnit[@Type='2'][@VID100='0.2'][@VID101='-8510694']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"27": {
|
||||||
|
"ele": "//CRCUnitArr[@Name='{search}'][@VID505='18'][@VID507='2']",
|
||||||
|
"ele2": "//CROwneUnit[2]/CRCUnitArr[@VID505='18'][@VID507='2']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 3
|
||||||
|
},
|
||||||
|
"28": {
|
||||||
|
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit)][@Pos='0']",
|
||||||
|
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Pos='0']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"29": {
|
||||||
|
"ele": "//CRTrackList[@Name='텍스트']/CRTrackClip[(@ClipIndex=count(//CROwneUnit[.//CRCUnitArr[@Name='{search}']]/preceding::CROwneUnit))][@Length='120']",
|
||||||
|
"ele2": "//CRTrackList[@Name='텍스트']/CRTrackClip[@ClipIndex=count(//CROwneUnit[2]/CRCUnitArr/preceding::CROwneUnit)][@Length='120']",
|
||||||
|
"search": "공존하는 개와 양 (Dog and sheep)",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"30": {
|
||||||
|
"ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Pos='0']",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"31": {
|
||||||
|
"ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']/CRTrackClip[@Length='810']",
|
||||||
|
"point": 2
|
||||||
|
},
|
||||||
|
"32": {
|
||||||
|
"ele": "//CRTrackArr/CRAudioTrackArr/CRTrackList[@Name='오디오1']//CRFilter[@Type='2'][@ID='1'][@VID8='60']",
|
||||||
|
"point": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
DIC_2521A_TEST.xlsx
Normal file
BIN
DIC_2521A_TEST.xlsx
Normal file
Binary file not shown.
@@ -211,12 +211,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "연못의 연잎들",
|
"search": "연못의 연잎들",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.351,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.922
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
@@ -209,12 +209,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "꽃으로 만든 조형물",
|
"search": "꽃으로 만든 조형물",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.329,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.933
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
@@ -211,12 +211,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "산책하는 젖소들",
|
"search": "산책하는 젖소들",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.356,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.933
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
16
README.md
16
README.md
@@ -31,8 +31,16 @@ xpath 테스트 용
|
|||||||
1. 문제3-9번 자막 위치 설정 '화면 정가운데 아래' 판별 시 자막의 길이에 따라 위치 기준이 바뀜
|
1. 문제3-9번 자막 위치 설정 '화면 정가운데 아래' 판별 시 자막의 길이에 따라 위치 기준이 바뀜
|
||||||
* 텍스트 유사도 판별을 거치게 되면 정답으로 인정되는 텍스트의 길이도 유동적이므로 위치도 유동적으로 변경되어야 함
|
* 텍스트 유사도 판별을 거치게 되면 정답으로 인정되는 텍스트의 길이도 유동적이므로 위치도 유동적으로 변경되어야 함
|
||||||
* 수정예상방안 : 글자 수 마다 x,y 위치 값 따로 설정하는 방식
|
* 수정예상방안 : 글자 수 마다 x,y 위치 값 따로 설정하는 방식
|
||||||
|
* 현재 최소좌표와 최대좌표 사이의 값이면 정답으로 채점되도록 변경
|
||||||
|
|
||||||
2. .jpg / .psd 채점 파일 예외사항
|
2. .jpg / .psd 채점 파일 예외사항
|
||||||
|
* 멀티미디어-003666-최우진(A) : 1번 jpg psd 파일 누락
|
||||||
|
* 멀티미디어-005647-최영훈(A) : 2번 psd 파일 오류(2번 jpg파일의 확장자만 psd로 변경)
|
||||||
|
* 멀티미디어-003361-장하린(B) :
|
||||||
|
* 멀티미디어-001273-허윤서(C) : 수험번호 없는 psd파일 [멀티미디어_01-허윤서.psd]이 포함
|
||||||
|
* 멀티미디어-005156-임예지(D) :
|
||||||
|
|
||||||
|
|
||||||
1. 1번 파일 누락, 2번 파일만 작성
|
1. 1번 파일 누락, 2번 파일만 작성
|
||||||
* 현재 차례대로 읽어 들여 채점 하는 방식
|
* 현재 차례대로 읽어 들여 채점 하는 방식
|
||||||
-> 1번 파일이 누락 된 수험자는 2번 파일이 1번 파일로 인식되어 채점
|
-> 1번 파일이 누락 된 수험자는 2번 파일이 1번 파일로 인식되어 채점
|
||||||
@@ -40,4 +48,10 @@ xpath 테스트 용
|
|||||||
|
|
||||||
2. 3개 이상 파일이 있는 경우
|
2. 3개 이상 파일이 있는 경우
|
||||||

|

|
||||||
*
|
* psd 1번, 2번 이후 3번째 psd 파일이 존재 하는 경우
|
||||||
|
- 프로그램 실행 예상 결과는 scoringResult[] 리스트의 1번 2번 인덱스에 psd가 저장되고 3번에 gmep가 저장되어야 하지만
|
||||||
|
4개이상의 psd 파일이 있는 경우 scoringResult[4] 위치까지 데이터가 저장됨
|
||||||
|
- gmep의 채점결과는 scoringResult[3]에 직접 저장하므로
|
||||||
|
- 결과 예상은 scoringResult[3]까지 저장되어야 하지만 scoringResult[4]에 더미 값이 저장됨
|
||||||
|
|
||||||
|
|
||||||
@@ -9,16 +9,18 @@ const { DOMParser } = require('xmldom');
|
|||||||
const findSimilarString = require('./findSimilarString');
|
const findSimilarString = require('./findSimilarString');
|
||||||
|
|
||||||
// --------------------------------------------------------
|
// --------------------------------------------------------
|
||||||
const scoringJson = require('./DIC_2521A.json');
|
// const scoringJson = require('./DIC_2521A.json');
|
||||||
// const scoringJson = require('./DIC_2521B.json');
|
// const scoringJson = require('./DIC_2521B.json');
|
||||||
// const scoringJson = require('./DIC_2521C.json');
|
// const scoringJson = require('./DIC_2521C.json');
|
||||||
// const scoringJson = require('./DIC_2521D.json');
|
const scoringJson = require('./DIC_2521D.json');
|
||||||
|
|
||||||
|
// TEST
|
||||||
|
// const scoringJson = require('./DIC_2521A_TEST.json');
|
||||||
// --------------------------------------------------------
|
// --------------------------------------------------------
|
||||||
const answerFilesDir = './output/A/DIC';
|
// const answerFilesDir = './output/A/DIC';
|
||||||
// const answerFilesDir = './output/B/DIC';
|
// const answerFilesDir = './output/B/DIC';
|
||||||
// const answerFilesDir = './output/C/DIC';
|
// const answerFilesDir = './output/C/DIC';
|
||||||
// const answerFilesDir = './output/D/DIC';
|
const answerFilesDir = './output/D/DIC';
|
||||||
|
|
||||||
// TEST
|
// TEST
|
||||||
// const answerFilesDir = './output/A/TEST';
|
// const answerFilesDir = './output/A/TEST';
|
||||||
@@ -26,10 +28,10 @@ const answerFilesDir = './output/A/DIC';
|
|||||||
// const answerFilesDir = './output/D/TEST';
|
// const answerFilesDir = './output/D/TEST';
|
||||||
|
|
||||||
// --------------------------------------------------------
|
// --------------------------------------------------------
|
||||||
const outputExcelFile = './DIC_2521A_result.xlsx';
|
// const outputExcelFile = './DIC_2521A_result.xlsx';
|
||||||
// const outputExcelFile = './DIC_2521B_result.xlsx';
|
// const outputExcelFile = './DIC_2521B_result.xlsx';
|
||||||
// const outputExcelFile = './DIC_2521C_result.xlsx';
|
// const outputExcelFile = './DIC_2521C_result.xlsx';
|
||||||
// const outputExcelFile = './DIC_2521D_result.xlsx';
|
const outputExcelFile = './DIC_2521D_result.xlsx';
|
||||||
|
|
||||||
// TEST
|
// TEST
|
||||||
// const outputExcelFile = './DIC_2521A_TEST.xlsx';
|
// const outputExcelFile = './DIC_2521A_TEST.xlsx';
|
||||||
@@ -148,20 +150,15 @@ function getGmepScore(gmepData, scoringJson, index) {
|
|||||||
* CRCUnitArr태그 Name속성 찾는 구문으로 변환
|
* CRCUnitArr태그 Name속성 찾는 구문으로 변환
|
||||||
* > 멀티라인 텍스트 유사도 판별하기 어려움
|
* > 멀티라인 텍스트 유사도 판별하기 어려움
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (search !== undefined) {
|
if (search !== undefined) {
|
||||||
let result = findSimilarString(gmepXmlDoc, search, 0.2)
|
let result = findSimilarString(gmepXmlDoc, search, 0.2)
|
||||||
console.log("🚀 ~ getGmepScore ~ result:", result)
|
|
||||||
|
|
||||||
ele = ele.replace(/{search}/g, result);
|
ele = ele.replace(/{search}/g, result);
|
||||||
console.log("🚀 ~ getGmepScore ~ ele:", ele)
|
|
||||||
if ( existEle !== undefined ){
|
if ( existEle !== undefined ){
|
||||||
existEle = existEle.replace(/{search}/g, result);
|
existEle = existEle.replace(/{search}/g, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
console.log(`example number: ${key}`)
|
console.log(`example number: ${key}`)
|
||||||
|
|
||||||
|
|
||||||
// xpath
|
// xpath
|
||||||
if (ele === 'none') {
|
if (ele === 'none') {
|
||||||
scoringResult[key] = "확인필요";
|
scoringResult[key] = "확인필요";
|
||||||
@@ -268,6 +265,48 @@ function getGmepScore(gmepData, scoringJson, index) {
|
|||||||
scoringResult[key] = result.length > 0 && rightAnswer === result[0].value ? point : 0;
|
scoringResult[key] = result.length > 0 && rightAnswer === result[0].value ? point : 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// [3-9]문제 : 자막 화면 정가운데 아래
|
||||||
|
// 자막의 글자 갯수, 글자 크기, 폰트에 따라 위치가 유동적으로 바뀌어서
|
||||||
|
// 예상되는 최소 좌표부터 최대 좌표를 미리 입력하고 (JSON파일 start/end 속성)
|
||||||
|
// 수험자가 입력한 자막의 좌표값이 범위 안에 들어가면 정답으로 채점
|
||||||
|
else if (type == "range") {
|
||||||
|
const start = scoringData[key].start;
|
||||||
|
const end = scoringData[key].end;
|
||||||
|
|
||||||
|
try{
|
||||||
|
const result = xpath.select(ele, gmepXmlDoc);
|
||||||
|
if (result.length == 0) {
|
||||||
|
scoringResult[key] = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 수험자 자막 좌표 (x,y)
|
||||||
|
const x = parseFloat(result[0].value);
|
||||||
|
const y = parseFloat(result[1].value);
|
||||||
|
// 최소 좌표 (x1, y1)
|
||||||
|
const x1 = parseFloat(start[0]);
|
||||||
|
const y1 = parseFloat(start[1]);
|
||||||
|
// 최대 좌표 (x2, y2)
|
||||||
|
const x2 = parseFloat(end[0]);
|
||||||
|
const y2 = parseFloat(end[1]);
|
||||||
|
|
||||||
|
// (x1,y1) <= (x,y) <= (x2,y2) 이면 true
|
||||||
|
const isPointInRange = (x, y, x1, y1, x2, y2) =>
|
||||||
|
(x >= x1 && x <= x2) && (y >= y1 && y <= y2);
|
||||||
|
|
||||||
|
if (isPointInRange(x, y, x1, y1, x2, y2) === true ) {
|
||||||
|
totalScore += point;
|
||||||
|
scoringResult[key] = point;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
scoringResult[key] = 0;
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log('err :', e);
|
||||||
|
scoringResult[key] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (type == "multi") {
|
else if (type == "multi") {
|
||||||
try {
|
try {
|
||||||
const result = xpath.select(ele, gmepXmlDoc);
|
const result = xpath.select(ele, gmepXmlDoc);
|
||||||
|
|||||||
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521A_result.xlsx
Normal file
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521A_result.xlsx
Normal file
Binary file not shown.
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521B_result.xlsx
Normal file
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521B_result.xlsx
Normal file
Binary file not shown.
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521C_result.xlsx
Normal file
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521C_result.xlsx
Normal file
Binary file not shown.
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521D_result.xlsx
Normal file
BIN
회차별채점자료/2521/Excel_채점결과/0217_DIC_2521D_result.xlsx
Normal file
Binary file not shown.
@@ -209,12 +209,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "양을 모는 목동",
|
"search": "양을 모는 목동",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.353,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.929
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
@@ -153,7 +153,7 @@
|
|||||||
"point": 0
|
"point": 0
|
||||||
},
|
},
|
||||||
"27": {
|
"27": {
|
||||||
"ele": "$[?(@.width == 65 && @.height == 35)]",
|
"ele": "$[?(@.width == 65 && @.height == 45)]",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"point": 10
|
"point": 10
|
||||||
}
|
}
|
||||||
@@ -211,12 +211,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "연못의 연잎들",
|
"search": "연못의 연잎들",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.351,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.922
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
@@ -209,12 +209,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "꽃으로 만든 조형물",
|
"search": "꽃으로 만든 조형물",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.329,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.933
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
@@ -98,7 +98,7 @@
|
|||||||
"14": {
|
"14": {
|
||||||
"ele": "$.children[?(@.name=='젖소 목장 체험')].text.font.names[0]",
|
"ele": "$.children[?(@.name=='젖소 목장 체험')].text.font.names[0]",
|
||||||
"type": "font",
|
"type": "font",
|
||||||
"value": "YetR-HM",
|
"value": "YetR",
|
||||||
"point": 10
|
"point": 10
|
||||||
},
|
},
|
||||||
"15": {
|
"15": {
|
||||||
@@ -211,12 +211,10 @@
|
|||||||
"9": {
|
"9": {
|
||||||
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
|
||||||
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
|
||||||
"type": "multi",
|
"type": "range",
|
||||||
"search": "산책하는 젖소들",
|
"search": "산책하는 젖소들",
|
||||||
"value": [
|
"start": [ 0.100, 0.785 ],
|
||||||
0.356,
|
"end": [ 0.475, 0.999 ],
|
||||||
0.933
|
|
||||||
],
|
|
||||||
"point": 2
|
"point": 2
|
||||||
},
|
},
|
||||||
"10": {
|
"10": {
|
||||||
|
|||||||
Reference in New Issue
Block a user