자막 '화면 정가운데 아래' 채점 방식 변경

This commit is contained in:
2025-02-17 17:21:16 +09:00
parent cfc91cef69
commit 6937b34bbc
24 changed files with 467 additions and 54 deletions

BIN
0217_DIC_2521A_result.xlsx Normal file

Binary file not shown.

BIN
0217_DIC_2521B_result.xlsx Normal file

Binary file not shown.

BIN
0217_DIC_2521C_result.xlsx Normal file

Binary file not shown.

BIN
0217_DIC_2521D_result.xlsx Normal file

Binary file not shown.

View File

@@ -209,12 +209,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "양을 모는 목동",
"value": [
0.353,
0.929
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

376
DIC_2521A_TEST.json Normal file
View 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

Binary file not shown.

View File

@@ -211,12 +211,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "연못의 연잎들",
"value": [
0.351,
0.922
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

View File

@@ -209,12 +209,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "꽃으로 만든 조형물",
"value": [
0.329,
0.933
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

View File

@@ -211,12 +211,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "산책하는 젖소들",
"value": [
0.356,
0.933
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

View File

@@ -31,8 +31,16 @@ xpath 테스트 용
1. 문제3-9번 자막 위치 설정 '화면 정가운데 아래' 판별 시 자막의 길이에 따라 위치 기준이 바뀜
* 텍스트 유사도 판별을 거치게 되면 정답으로 인정되는 텍스트의 길이도 유동적이므로 위치도 유동적으로 변경되어야 함
* 수정예상방안 : 글자 수 마다 x,y 위치 값 따로 설정하는 방식
* 현재 최소좌표와 최대좌표 사이의 값이면 정답으로 채점되도록 변경
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번 파일이 누락 된 수험자는 2번 파일이 1번 파일로 인식되어 채점
@@ -40,4 +48,10 @@ xpath 테스트 용
2. 3개 이상 파일이 있는 경우
![alt text](image.png)
*
* psd 1번, 2번 이후 3번째 psd 파일이 존재 하는 경우
- 프로그램 실행 예상 결과는 scoringResult[] 리스트의 1번 2번 인덱스에 psd가 저장되고 3번에 gmep가 저장되어야 하지만
4개이상의 psd 파일이 있는 경우 scoringResult[4] 위치까지 데이터가 저장됨
- gmep의 채점결과는 scoringResult[3]에 직접 저장하므로
- 결과 예상은 scoringResult[3]까지 저장되어야 하지만 scoringResult[4]에 더미 값이 저장됨

View File

@@ -9,16 +9,18 @@ const { DOMParser } = require('xmldom');
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_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/C/DIC';
// const answerFilesDir = './output/D/DIC';
const answerFilesDir = './output/D/DIC';
// TEST
// const answerFilesDir = './output/A/TEST';
@@ -26,10 +28,10 @@ const answerFilesDir = './output/A/DIC';
// 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_2521C_result.xlsx';
// const outputExcelFile = './DIC_2521D_result.xlsx';
const outputExcelFile = './DIC_2521D_result.xlsx';
// TEST
// const outputExcelFile = './DIC_2521A_TEST.xlsx';
@@ -148,20 +150,15 @@ function getGmepScore(gmepData, scoringJson, index) {
* CRCUnitArr태그 Name속성 찾는 구문으로 변환
* > 멀티라인 텍스트 유사도 판별하기 어려움
*/
if (search !== undefined) {
let result = findSimilarString(gmepXmlDoc, search, 0.2)
console.log("🚀 ~ getGmepScore ~ result:", result)
ele = ele.replace(/{search}/g, result);
console.log("🚀 ~ getGmepScore ~ ele:", ele)
if ( existEle !== undefined ){
existEle = existEle.replace(/{search}/g, result);
}
}
console.log(`example number: ${key}`)
// xpath
if (ele === 'none') {
scoringResult[key] = "확인필요";
@@ -268,6 +265,48 @@ function getGmepScore(gmepData, scoringJson, index) {
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") {
try {
const result = xpath.select(ele, gmepXmlDoc);

View File

@@ -209,12 +209,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "양을 모는 목동",
"value": [
0.353,
0.929
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

View File

@@ -153,7 +153,7 @@
"point": 0
},
"27": {
"ele": "$[?(@.width == 65 && @.height == 35)]",
"ele": "$[?(@.width == 65 && @.height == 45)]",
"type": "boolean",
"point": 10
}
@@ -211,12 +211,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "연못의 연잎들",
"value": [
0.351,
0.922
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

View File

@@ -209,12 +209,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "꽃으로 만든 조형물",
"value": [
0.329,
0.933
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {

View File

@@ -98,7 +98,7 @@
"14": {
"ele": "$.children[?(@.name=='젖소 목장 체험')].text.font.names[0]",
"type": "font",
"value": "YetR-HM",
"value": "YetR",
"point": 10
},
"15": {
@@ -211,12 +211,10 @@
"9": {
"ele": "//CRCUnitArr[@Name='{search}']/@VID600 | //CRCUnitArr[@Name='{search}']/@VID601",
"ele2": "//CROwneUnit[1]/CRCUnitArr/@VID600 | //CROwneUnit[1]/CRCUnitArr/@VID601",
"type": "multi",
"type": "range",
"search": "산책하는 젖소들",
"value": [
0.356,
0.933
],
"start": [ 0.100, 0.785 ],
"end": [ 0.475, 0.999 ],
"point": 2
},
"10": {