diff --git a/02_conversion_hwp_to_xml.py b/02_conversion_hwp_to_xml.py index 5bf2d1c..89d80be 100644 --- a/02_conversion_hwp_to_xml.py +++ b/02_conversion_hwp_to_xml.py @@ -80,6 +80,8 @@ def convert_hwp_to_xml(input_folder, output_folder): hwp.Run("MoveDocBegin") total_pages = hwp.PageCount + # 한글 채점의 경우 2페이지까지만 필요하므로 페이지 키운트를 가져오지 않고 2페이지 고정 + # total_pages = 2 current = 1 # hwp.HAction.Run("MoveDocBegin") @@ -171,7 +173,7 @@ if __name__ == "__main__": # 변환할 폴더 경로 설정 # 배열 동시에 변환하면 에러발생 -> 하나씩 변환 -> time.sleep(0.5) 추가 for exam_round in exam_rounds: - folders = [ + folders1 = [ (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\A\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\A\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\B\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\B\\DIW"), (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\DIW"), @@ -179,8 +181,8 @@ if __name__ == "__main__": (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\E\\DIW",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\E\\DIW"), ] - # folders = [ - # (f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\TEST",f"C:\\Users\\dra\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\TEST")] + folders = [ + (f"D:\\project\\HWP\\HWP-Scoring\\input\\{exam_round}\\C\\TEST",f"D:\\project\\HWP\\HWP-Scoring\\output\\{exam_round}\\C\\TEST")] # 변환 실행 for input, output in folders: diff --git a/250908_DIW_2508D_TEST.xlsx b/250908_DIW_2508D_TEST.xlsx deleted file mode 100644 index 2d5d1a3..0000000 Binary files a/250908_DIW_2508D_TEST.xlsx and /dev/null differ diff --git a/250909_DIW_2508D_TEST.xlsx b/250909_DIW_2508D_TEST.xlsx deleted file mode 100644 index b533ccf..0000000 Binary files a/250909_DIW_2508D_TEST.xlsx and /dev/null differ diff --git a/250910_DIW_2522C_채점결과.xlsx b/250910_DIW_2522C_채점결과.xlsx new file mode 100644 index 0000000..117f5cc Binary files /dev/null and b/250910_DIW_2522C_채점결과.xlsx differ diff --git a/DIW_2522C.json b/DIW_2522C.json index fe04054..5366f31 100644 --- a/DIW_2522C.json +++ b/DIW_2522C.json @@ -314,11 +314,11 @@ }, "30": { "path": "//PARASHAPE[@Id='{parashape_id}']/PARAMARGIN/@LineSpacing", - "value": "180", + "value": "190", "first_word": "청", "points": 2, "category": "LineSpacing", - "item": "문제 1 줄간격 180% 설정", + "item": "문제 1 줄간격 190% 설정", "desc": "1페이지 문단의 줄간격이 정답이 아닌 문단이 있으면 False(감점), first_word 속성에 [문단 첫글자 장식]에 해당하는 글자를 입력해준다." } }, @@ -343,7 +343,7 @@ "desc": "섹션이 1개 이상이면 점수부여" }, "3": { - "path": "TEXT/COLDEF/@Count", + "path": "./TEXT/COLDEF/@Count", "value": "2", "points": 3, "category": "TwoColumn", diff --git a/diwScoring2.py b/diwScoring2.py index da7ff8d..c26e5a0 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -1318,15 +1318,15 @@ class XMLScorer: def main(): # 시험회차 및 유형 - exam_round = '2508' - # exam_round = '2522' + # exam_round = '2508' + exam_round = '2522' # 채점하고자 하는 유형은 주석 해제 exam_types = [ # 'A', # 'B', - # 'C', - 'D', + 'C', + # 'D', ] test_mode = False diff --git a/hwp_conversion.log b/hwp_conversion.log index 344ed03..02a40f8 100644 --- a/hwp_conversion.log +++ b/hwp_conversion.log @@ -21501,3 +21501,33 @@ 2025-09-05 15:38:24,427 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\D\DIW -> D:\project\HWP\HWP-Scoring\output\2522\D\DIW 2025-09-05 15:38:24,928 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\E\DIW -> D:\project\HWP\HWP-Scoring\output\2522\E\DIW 2025-09-05 15:38:26,249 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\E\DIW -> D:\project\HWP\HWP-Scoring\output\2522\E\DIW +2025-09-10 15:19:36,038 - INFO - 폴더 변환 시작: C:\Users\dra\project\HWP\HWP-Scoring\input\2522\C\TEST -> C:\Users\dra\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:19:37,603 - INFO - 폴더 변환 완료: C:\Users\dra\project\HWP\HWP-Scoring\input\2522\C\TEST -> C:\Users\dra\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:20:26,851 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:20:33,220 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:20:33,511 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:22:50,209 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:23:21,280 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:25:58,508 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:26:13,038 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:26:16,568 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:26:17,744 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:26:34,976 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:26:38,768 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:26:40,059 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:27:33,109 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:27:39,326 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:27:41,495 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:28:28,605 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:28:31,467 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:28:33,160 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:29:09,068 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:29:11,946 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:29:12,232 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:31:34,246 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:32:43,758 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:32:44,005 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:36:22,714 - INFO - 폴더 변환 시작: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST +2025-09-10 15:36:25,811 - INFO - 변환 성공: 워드(한글)-002245-박채은 copy.hwp -> 워드(한글)-002245-박채은 copy.hml +2025-09-10 15:36:26,328 - INFO - 변환 성공: 워드(한글)-002245-박채은.hwp -> 워드(한글)-002245-박채은.hml +2025-09-10 15:36:26,520 - INFO - 폴더 변환 완료: D:\project\HWP\HWP-Scoring\input\2522\C\TEST -> D:\project\HWP\HWP-Scoring\output\2522\C\TEST diff --git a/zzz.xbook b/zzz.xbook index 0b62787..6398e46 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":"//RECTANGLE//CHAR[text()='구강건강관거리']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'예방')][contains(text(),'豫防')]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='DIAT']]"},{"kind":2,"language":"xpath","value":"//HEADER//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":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}] \ 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":"//RECTANGLE//CHAR[text()='구강건강관거리']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width"},{"kind":2,"language":"xpath","value":"//CHAR[contains(text(),'예방')][contains(text(),'豫防')]"},{"kind":2,"language":"xpath","value":"//TEXT/COLDEF/@Count"},{"kind":2,"language":"xpath","value":"//HEADER//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":"//CHAR[contains(string(.), '※')]/descendant-or-self::text()"},{"kind":2,"language":"xpath","value":"//P[@ParaShape=\"17\"]/TEXT[@CharShape='7']//CHAR[string(.)]"},{"kind":2,"language":"xpath","value":"//CHAR[contains(string(.), '기타')]/text()"}] \ No newline at end of file