파일 삭제 및 새로운 채점 기준 추가

This commit is contained in:
devdra9
2025-01-16 18:34:07 +09:00
parent ba29501ed6
commit 894d6be884
75 changed files with 1647 additions and 3362 deletions

Binary file not shown.

View File

@@ -1,15 +1,22 @@
import base64
import re
from lxml import etree as ET
xml_path = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-009866-성유나.hml"
tree = ET.parse(xml_path)
root = tree.getroot()
# xpath로 바이너리 부분추출
binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
binary_data = binary_data[0].encode('utf-8')
# 파일을 읽어들입니다.
with open('./chartBinData2', 'rb') as file:
encoded_data = file.read()
# with open('./chartBinData2', 'rb') as file:
# encoded_data = file.read()
# encoded_data 내에 존재하는 <BINDATA ...> ... </BINDATA> 태그를 찾아서 삭제
# <BINDATA ...> 태그는 base64 디코딩을 수행할 때 오류가 발생하므로 삭제합니다.
# <BINDATA ...> 태그와 그 내부 내용을 삭제합니다.
encoded_data = re.sub(b'<BINDATA.*?>', b'', encoded_data)
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
# encoded_data = re.sub(b'<BINDATA.*?>', b'', encoded_data)
# print(encoded_data)
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
encoded_data = encoded_data.replace(b'\r\n', b'')

55
binaryToChartxml.py Normal file
View File

@@ -0,0 +1,55 @@
from pathlib import Path
from lxml import etree as ET
import base64
import re
class binaryToChartxml:
def __init__(self, xml_path):
self.tree = ET.parse(xml_path)
self.root = self.tree.getroot()
def decoding_bindata(self):
binary_data = self.root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
binary_data = binary_data[0].encode('utf-8')
encoded_data = re.sub(b'<BINDATA.*?>', b'', binary_data)
# print(encoded_data)
encoded_data = encoded_data.replace(b'</BINDATA>', b'')
encoded_data = encoded_data.replace(b'\r\n', b'')
# base64 디코딩을 수행합니다.
decoded_data = base64.b64decode(encoded_data+b'==')
print(decoded_data)
# 디코딩된 데이터 내용 중 xml 형식만 추출할 때 <c:chartSpace>, </c:chartSpace> 사이의 데이터만 추출.
start = decoded_data.find(b'<?xml')
# print(start)
end = decoded_data.find(b'</c:chartSpace>')
# print(end)
self.xml_data = decoded_data[start:end+len(b'</c:chartSpace>')]
# def save_chart_xml(self, xml_output_path):
def save_chart_xml(self):
with open(, 'wb') as file:
file.write(self.xml_data)
# xml 파일 읽기
# xml_path = r"C:\Users\dra\project\HWP-Scoring\output\워드(한글)-009865-고미송.hml"
# tree = ET.parse(xml_path)
# root = tree.getroot()
# # xpath로 바이너리 부분추출
# binary_data = root.xpath('//BINDATA[@Id=//BINITEM[@Format="OLE"]/@BinData]/text()')
# binary_data = str(binary_data[0])
# print(f'binary : {binary_data}')
# # base64 디코딩
# decoded_data = base64.b64decode(binary_data)
# # 디코딩된 데이터를 파일로 저장
# output_file = f"decoded_output_test.bin"
# with open(output_file, "wb") as decoded_file:
# decoded_file.write(decoded_data)

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -1,18 +0,0 @@
def demicalToRGB(demical_value):
b = demical_value // 65536
g = ( demical_value % 65536 ) // 256
r = ( demical_value % 65536 % 256 )
return (r, g, b)
def RGBtoDemical(r, g, b):
return (b * 65536) + (g * 256) + r
def main():
rgb = demicalToRGB(10040115)
print( rgb )
demical = RGBtoDemical(11, 22, 33)
print( demical )
if __name__ == "__main__":
main()

View File

@@ -1,47 +0,0 @@
import olefile
import difflib
def extract_text_from_hwp(file_path):
"""
HWP 파일에서 텍스트를 추출합니다.
"""
try:
ole = olefile.OleFileIO(file_path)
if ole.exists('BodyText/Section0'):
content = ole.openstream('BodyText/Section0').read()
text = content.decode('utf-16le', errors='ignore')
return text
else:
print(f"No 'BodyText/Section0' stream found in {file_path}")
return ''
except Exception as e:
print(f"Error extracting text from {file_path}: {e}")
return ''
def compare_texts(text1, text2):
"""
두 텍스트의 차이를 비교하고 차이점을 카운트합니다.
"""
diff = difflib.ndiff(text1.splitlines(), text2.splitlines())
diff_count = 0
for line in diff:
if line.startswith('+ ') or line.startswith('- '):
diff_count += 1
return diff_count
def main():
file1 = r'C:\Users\dra\project\HWP-Scoring\input\원본.hwp'
file2 = r'C:\Users\dra\project\HWP-Scoring\input\원본 copy.hwp'
text1 = extract_text_from_hwp(file1)
text2 = extract_text_from_hwp(file2)
if not text1 or not text2:
print("텍스트를 추출하지 못했습니다.")
return
diff_count = compare_texts(text1, text2)
print(f"차이점 개수: {diff_count}")
if __name__ == "__main__":
main()

View File

@@ -1,82 +1,90 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<c:chartSpace xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
xmlns:c="http://schemas.openxmlformats.org/drawingml/2006/chart">
<c:date1904 val="0" />
<c:date1904 val="0"/>
<c:roundedCorners val="0"/>
<mc:AlternateContent xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006">
<mc:Choice xmlns:c14="http://schemas.microsoft.com/office/drawing/2007/8/2/chart"
Requires="c14">
<c14:style val="102" />
<mc:Choice xmlns:c14="http://schemas.microsoft.com/office/drawing/2007/8/2/chart" Requires="c14">
<c14:style val="102"/>
</mc:Choice>
<mc:Fallback>
<c:style val="2" />
<c:style val="2"/>
</mc:Fallback>
</mc:AlternateContent>
<c:roundedCorners val="0" />
<c:chart>
<c:title>
<c:tx>
<c:rich>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0"
anchor="ctr" anchorCtr="1" />
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="1400" b="1" i="0" u="none">
<a:solidFill>
<a:srgbClr val="000000" />
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움체" />
<a:ea typeface="돋움체" />
<a:cs typeface="돋움체" />
<a:sym typeface="돋움체" />
<a:latin typeface="돋움체"/>
<a:ea typeface="돋움체"/>
<a:cs typeface="돋움체"/>
<a:sym typeface="돋움체"/>
</a:defRPr>
</a:pPr>
<a:r>
<a:rPr sz="1400" b="1" i="0" u="none">
<a:solidFill>
<a:srgbClr val="000000" />
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움체" />
<a:ea typeface="돋움체" />
<a:cs typeface="돋움체" />
<a:sym typeface="돋움체" />
<a:latin typeface="돋움체"/>
<a:ea typeface="돋움체"/>
<a:cs typeface="돋움체"/>
<a:sym typeface="돋움체"/>
</a:rPr>
<a:t>과일야채 항산화지수 비교</a:t>
</a:r>
<a:endParaRPr />
<a:endParaRPr/>
</a:p>
</c:rich>
</c:tx>
<c:layout>
<c:manualLayout>
<c:xMode val="edge" />
<c:yMode val="edge" />
<c:x val="0.080750003457069397" />
<c:y val="0.034499999135732651" />
<c:w val="0.83824998140335083" />
<c:h val="0.13099999725818634" />
<c:xMode val="edge"/>
<c:yMode val="edge"/>
<c:x val="0.10400000214576721191"/>
<c:y val="0.03550000116229057312"/>
<c:w val="0.79175001382827758789"/>
<c:h val="0.13300000131130218506"/>
</c:manualLayout>
</c:layout>
<c:overlay val="0" />
<c:overlay val="0"/>
<c:spPr>
<a:noFill />
<a:noFill/>
</c:spPr>
</c:title>
<c:autoTitleDeleted val="0" />
<c:autoTitleDeleted val="0"/>
<c:plotArea>
<c:layout />
<c:layout>
<c:manualLayout>
<c:layoutTarget val="inner"/>
<c:xMode val="edge"/>
<c:yMode val="edge"/>
<c:x val="0.03249999880790710449"/>
<c:y val="0.19900000095367431641"/>
<c:w val="0.92449998855590820313"/>
<c:h val="0.59175002574920654297"/>
</c:manualLayout>
</c:layout>
<c:barChart>
<c:barDir val="col" />
<c:grouping val="clustered" />
<c:varyColors val="0" />
<c:barDir val="col"/>
<c:grouping val="clustered"/>
<c:varyColors val="0"/>
<c:ser>
<c:idx val="0" />
<c:order val="0" />
<c:idx val="0"/>
<c:order val="0"/>
<c:tx>
<c:strRef>
<c:f>항산화지수(100g당)</c:f>
<c:strCache>
<c:ptCount val="1" />
<c:ptCount val="1"/>
<c:pt idx="0">
<c:v>항산화지수(100g당)</c:v>
</c:pt>
@@ -85,22 +93,22 @@
</c:tx>
<c:spPr>
<a:solidFill>
<a:srgbClr val="73b1d1" />
<a:srgbClr val="73b1d1"/>
</a:solidFill>
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
<a:noFill />
<a:prstDash val="solid" />
<a:round />
<a:headEnd w="med" len="med" />
<a:tailEnd w="med" len="med" />
<a:noFill/>
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
<c:invertIfNegative val="0" />
<c:invertIfNegative val="0"/>
<c:cat>
<c:strRef>
<c:f>{"블루베리", "딸기", "자두", "오렌지", "시금치", "양배추"}</c:f>
<c:strCache>
<c:ptCount val="6" />
<c:ptCount val="6"/>
<c:pt idx="0">
<c:v>블루베리</c:v>
</c:pt>
@@ -125,7 +133,7 @@
<c:val>
<c:numLit>
<c:formatCode>General</c:formatCode>
<c:ptCount val="6" />
<c:ptCount val="6"/>
<c:pt idx="0">
<c:v>2400</c:v>
</c:pt>
@@ -136,7 +144,7 @@
<c:v>949</c:v>
</c:pt>
<c:pt idx="3">
<c:v>740</c:v>
<c:v>750</c:v>
</c:pt>
<c:pt idx="4">
<c:v>1260</c:v>
@@ -147,147 +155,143 @@
</c:numLit>
</c:val>
</c:ser>
<c:gapWidth val="100" />
<c:overlap val="0" />
<c:axId val="0" />
<c:axId val="1" />
<c:gapWidth val="100"/>
<c:overlap val="0"/>
<c:axId val="0"/>
<c:axId val="1"/>
</c:barChart>
<c:catAx>
<c:axId val="0" />
<c:axId val="0"/>
<c:scaling>
<c:orientation val="minMax" />
<c:orientation val="minMax"/>
</c:scaling>
<c:axPos val="b" />
<c:crossAx val="1" />
<c:delete val="0" />
<c:majorTickMark val="none" />
<c:minorTickMark val="none" />
<c:tickLblPos val="nextTo" />
<c:axPos val="b"/>
<c:crossAx val="1"/>
<c:delete val="0"/>
<c:majorTickMark val="none"/>
<c:minorTickMark val="none"/>
<c:tickLblPos val="nextTo"/>
<c:txPr>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0"
anchor="ctr" anchorCtr="1" />
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="900" b="0" i="1" u="none">
<a:solidFill>
<a:srgbClr val="000000" />
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움" />
<a:ea typeface="돋움" />
<a:cs typeface="돋움" />
<a:sym typeface="돋움" />
<a:latin typeface="돋움"/>
<a:ea typeface="돋움"/>
<a:cs typeface="돋움"/>
<a:sym typeface="돋움"/>
</a:defRPr>
</a:pPr>
<a:endParaRPr />
<a:endParaRPr/>
</a:p>
</c:txPr>
<c:crosses val="autoZero" />
<c:auto val="1" />
<c:lblAlgn val="ctr" />
<c:lblOffset val="100" />
<c:tickLblSkip val="1" />
<c:tickMarkSkip val="1" />
<c:noMultiLvlLbl val="0" />
<c:crosses val="autoZero"/>
<c:auto val="1"/>
<c:lblAlgn val="ctr"/>
<c:lblOffset val="100"/>
<c:tickLblSkip val="1"/>
<c:tickMarkSkip val="1"/>
<c:noMultiLvlLbl val="0"/>
</c:catAx>
<c:valAx>
<c:axId val="1" />
<c:axId val="1"/>
<c:scaling>
<c:orientation val="minMax" />
<c:orientation val="minMax"/>
</c:scaling>
<c:axPos val="l" />
<c:crossAx val="0" />
<c:delete val="0" />
<c:numFmt formatCode="General" sourceLinked="1" />
<c:majorTickMark val="out" />
<c:minorTickMark val="none" />
<c:tickLblPos val="nextTo" />
<c:axPos val="l"/>
<c:crossAx val="0"/>
<c:delete val="0"/>
<c:numFmt formatCode="General" sourceLinked="1"/>
<c:majorTickMark val="out"/>
<c:minorTickMark val="none"/>
<c:tickLblPos val="nextTo"/>
<c:txPr>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0"
anchor="ctr" anchorCtr="1" />
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="900" b="0" i="1" u="none">
<a:solidFill>
<a:srgbClr val="000000" />
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움" />
<a:ea typeface="돋움" />
<a:cs typeface="돋움" />
<a:sym typeface="돋움" />
<a:latin typeface="돋움"/>
<a:ea typeface="돋움"/>
<a:cs typeface="돋움"/>
<a:sym typeface="돋움"/>
</a:defRPr>
</a:pPr>
<a:endParaRPr />
<a:endParaRPr/>
</a:p>
</c:txPr>
<c:crosses val="autoZero" />
<c:crossBetween val="between" />
<c:crosses val="autoZero"/>
<c:crossBetween val="between"/>
</c:valAx>
<c:spPr>
<a:noFill />
<a:noFill/>
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
<a:noFill />
<a:prstDash val="solid" />
<a:round />
<a:headEnd w="med" len="med" />
<a:tailEnd w="med" len="med" />
<a:noFill/>
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
</c:plotArea>
<c:legend>
<c:legendPos val="b" />
<c:layout />
<c:overlay val="0" />
<c:legendPos val="b"/>
<c:layout/>
<c:overlay val="0"/>
<c:spPr>
<a:ln w="9525" cap="flat" cmpd="sng" algn="ctr">
<a:solidFill>
<a:prstClr val="black" />
<a:prstClr val="black"/>
</a:solidFill>
<a:prstDash val="solid" />
<a:round />
<a:headEnd w="med" len="med" />
<a:tailEnd w="med" len="med" />
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
<c:txPr>
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0"
anchor="ctr" anchorCtr="1" />
<a:bodyPr rot="0" vert="horz" wrap="none" lIns="0" tIns="0" rIns="0" bIns="0" anchor="ctr" anchorCtr="1"/>
<a:p>
<a:pPr algn="l">
<a:defRPr sz="900" b="0" i="1" u="none">
<a:solidFill>
<a:srgbClr val="000000" />
<a:srgbClr val="000000"/>
</a:solidFill>
<a:latin typeface="돋움" />
<a:ea typeface="돋움" />
<a:cs typeface="돋움" />
<a:sym typeface="돋움" />
<a:latin typeface="돋움"/>
<a:ea typeface="돋움"/>
<a:cs typeface="돋움"/>
<a:sym typeface="돋움"/>
</a:defRPr>
</a:pPr>
<a:endParaRPr />
<a:endParaRPr/>
</a:p>
</c:txPr>
</c:legend>
<c:plotVisOnly val="0" />
<c:dispBlanksAs val="gap" />
<c:plotVisOnly val="1"/>
<c:dispBlanksAs val="gap"/>
</c:chart>
<c:spPr>
<a:solidFill>
<a:srgbClr val="ffffff" />
<a:srgbClr val="ffffff"/>
</a:solidFill>
<a:ln w="12700" cap="flat" cmpd="sng" algn="ctr">
<a:solidFill>
<a:srgbClr val="8c8c8c" />
<a:srgbClr val="8c8c8c"/>
</a:solidFill>
<a:prstDash val="solid" />
<a:round />
<a:headEnd w="med" len="med" />
<a:tailEnd w="med" len="med" />
<a:prstDash val="solid"/>
<a:round/>
<a:headEnd w="med" len="med"/>
<a:tailEnd w="med" len="med"/>
</a:ln>
</c:spPr>
<c:extLst>
<c:ext uri="CC8EB2C9-7E31-499d-B8F2-F6CE61031016">
<ho:hncChartStyle xmlns:ho="http://schemas.haansoft.com/office/8.0" layoutIndex="-1"
colorIndex="0" styleIndex="0" />
<ho:hncChartStyle xmlns:ho="http://schemas.haansoft.com/office/8.0" layoutIndex="-1" colorIndex="0" styleIndex="0"/>
</c:ext>
</c:extLst>
</c:chartSpace>

View File

@@ -716,3 +716,253 @@
2025-01-10 19:37:10,154 - INFO - 변환 성공: 워드(한글)-010245-김하준.hwp -> 워드(한글)-010245-김하준.hml
2025-01-10 19:37:10,304 - INFO - 변환 성공: 워드(한글)-010246-한유승.hwp -> 워드(한글)-010246-한유승.hml
2025-01-10 19:37:10,453 - INFO - 변환 성공: 한글(워드)-010021-김유정.hwp -> 한글(워드)-010021-김유정.hml
2025-01-13 15:21:11,179 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-13 15:21:11,549 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-13 15:21:11,868 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-13 15:21:12,050 - INFO - 변환 성공: 워드(한글)-009895-김라온.hwp -> 워드(한글)-009895-김라온.hml
2025-01-13 15:21:12,208 - INFO - 변환 성공: 워드(한글)-009896-안서준.hwp -> 워드(한글)-009896-안서준.hml
2025-01-13 15:21:12,572 - INFO - 변환 성공: 워드(한글)-009920-김민찬.hwp -> 워드(한글)-009920-김민찬.hml
2025-01-13 15:21:13,657 - INFO - 변환 성공: 워드(한글)-009921-김혜원.hwp -> 워드(한글)-009921-김혜원.hml
2025-01-13 15:21:13,781 - INFO - 변환 성공: 워드(한글)-009926-진성훈.hwp -> 워드(한글)-009926-진성훈.hml
2025-01-13 15:21:14,017 - INFO - 변환 성공: 워드(한글)-009927-한지수.hwp -> 워드(한글)-009927-한지수.hml
2025-01-13 15:21:14,257 - INFO - 변환 성공: 워드(한글)-009928-윤아르.hwp -> 워드(한글)-009928-윤아르.hml
2025-01-13 15:21:14,425 - INFO - 변환 성공: 워드(한글)-009929-김준영.hwp -> 워드(한글)-009929-김준영.hml
2025-01-13 15:21:14,559 - INFO - 변환 성공: 워드(한글)-009930-문윤재.hwp -> 워드(한글)-009930-문윤재.hml
2025-01-13 15:21:14,739 - INFO - 변환 성공: 워드(한글)-009931-이선우.hwp -> 워드(한글)-009931-이선우.hml
2025-01-13 15:21:14,965 - INFO - 변환 성공: 워드(한글)-009932-최다솜.hwp -> 워드(한글)-009932-최다솜.hml
2025-01-13 15:21:15,099 - INFO - 변환 성공: 워드(한글)-009933-이지한.hwp -> 워드(한글)-009933-이지한.hml
2025-01-13 15:21:15,224 - INFO - 변환 성공: 워드(한글)-009934-고서진.hwp -> 워드(한글)-009934-고서진.hml
2025-01-13 15:21:15,399 - INFO - 변환 성공: 워드(한글)-009935-이가은.hwp -> 워드(한글)-009935-이가은.hml
2025-01-13 15:21:15,538 - INFO - 변환 성공: 워드(한글)-009936-이라현.hwp -> 워드(한글)-009936-이라현.hml
2025-01-13 15:21:15,686 - INFO - 변환 성공: 워드(한글)-009937-진성준.hwp -> 워드(한글)-009937-진성준.hml
2025-01-13 15:21:15,829 - INFO - 변환 성공: 워드(한글)-009938-김규리.hwp -> 워드(한글)-009938-김규리.hml
2025-01-13 15:21:15,967 - INFO - 변환 성공: 워드(한글)-009939-이준.hwp -> 워드(한글)-009939-이준.hml
2025-01-13 15:21:16,115 - INFO - 변환 성공: 워드(한글)-009940-김지민.hwp -> 워드(한글)-009940-김지민.hml
2025-01-13 15:21:16,319 - INFO - 변환 성공: 워드(한글)-009941-윤지후.hwp -> 워드(한글)-009941-윤지후.hml
2025-01-13 15:21:16,455 - INFO - 변환 성공: 워드(한글)-009942-최원준.hwp -> 워드(한글)-009942-최원준.hml
2025-01-13 15:21:16,665 - INFO - 변환 성공: 워드(한글)-009943-윤헤르.hwp -> 워드(한글)-009943-윤헤르.hml
2025-01-13 15:21:16,830 - INFO - 변환 성공: 워드(한글)-009944-현지후.hwp -> 워드(한글)-009944-현지후.hml
2025-01-13 15:21:16,956 - INFO - 변환 성공: 워드(한글)-009945-고재웅.hwp -> 워드(한글)-009945-고재웅.hml
2025-01-13 15:21:17,094 - INFO - 변환 성공: 워드(한글)-009946-홍규진.hwp -> 워드(한글)-009946-홍규진.hml
2025-01-13 15:21:17,289 - INFO - 변환 성공: 워드(한글)-009956-고현규.hwp -> 워드(한글)-009956-고현규.hml
2025-01-13 15:21:17,427 - INFO - 변환 성공: 워드(한글)-009957-김도준.hwp -> 워드(한글)-009957-김도준.hml
2025-01-13 15:21:17,539 - INFO - 변환 성공: 워드(한글)-009958-김온유.hwp -> 워드(한글)-009958-김온유.hml
2025-01-13 15:21:17,682 - INFO - 변환 성공: 워드(한글)-009959-김현욱.hwp -> 워드(한글)-009959-김현욱.hml
2025-01-13 15:21:17,791 - INFO - 변환 성공: 워드(한글)-009960-박가을.hwp -> 워드(한글)-009960-박가을.hml
2025-01-13 15:21:17,911 - INFO - 변환 성공: 워드(한글)-009961-정현욱.hwp -> 워드(한글)-009961-정현욱.hml
2025-01-13 15:21:18,082 - INFO - 변환 성공: 워드(한글)-009962-최율.hwp -> 워드(한글)-009962-최율.hml
2025-01-13 15:21:18,311 - INFO - 변환 성공: 워드(한글)-009963-현서현.hwp -> 워드(한글)-009963-현서현.hml
2025-01-13 15:21:18,445 - INFO - 변환 성공: 워드(한글)-009992-송유준.hwp -> 워드(한글)-009992-송유준.hml
2025-01-13 15:21:18,582 - INFO - 변환 성공: 워드(한글)-009993-김지우.hwp -> 워드(한글)-009993-김지우.hml
2025-01-13 15:21:18,747 - INFO - 변환 성공: 워드(한글)-010035-유아정.hwp -> 워드(한글)-010035-유아정.hml
2025-01-13 15:21:18,861 - INFO - 변환 성공: 워드(한글)-010036-구준호.hwp -> 워드(한글)-010036-구준호.hml
2025-01-13 15:21:19,072 - INFO - 변환 성공: 워드(한글)-010037-나준우.hwp -> 워드(한글)-010037-나준우.hml
2025-01-13 15:21:19,212 - INFO - 변환 성공: 워드(한글)-010038-주보민.hwp -> 워드(한글)-010038-주보민.hml
2025-01-13 15:21:19,352 - INFO - 변환 성공: 워드(한글)-010039-이예낭.hwp -> 워드(한글)-010039-이예낭.hml
2025-01-13 15:21:19,492 - INFO - 변환 성공: 워드(한글)-010040-송가빈.hwp -> 워드(한글)-010040-송가빈.hml
2025-01-13 15:21:19,690 - INFO - 변환 성공: 워드(한글)-010041-이삼강.hwp -> 워드(한글)-010041-이삼강.hml
2025-01-13 15:21:19,818 - INFO - 변환 성공: 워드(한글)-010042-이윤찬.hwp -> 워드(한글)-010042-이윤찬.hml
2025-01-13 15:21:19,928 - INFO - 변환 성공: 워드(한글)-010043-고채원.hwp -> 워드(한글)-010043-고채원.hml
2025-01-13 15:21:20,052 - INFO - 변환 성공: 워드(한글)-010044-양준서.hwp -> 워드(한글)-010044-양준서.hml
2025-01-13 15:21:20,214 - INFO - 변환 성공: 워드(한글)-010045-김호건.hwp -> 워드(한글)-010045-김호건.hml
2025-01-13 15:21:20,339 - INFO - 변환 성공: 워드(한글)-010046-고보현.hwp -> 워드(한글)-010046-고보현.hml
2025-01-13 15:21:20,462 - INFO - 변환 성공: 워드(한글)-010047-고세현.hwp -> 워드(한글)-010047-고세현.hml
2025-01-13 15:21:20,587 - INFO - 변환 성공: 워드(한글)-010048-고주영.hwp -> 워드(한글)-010048-고주영.hml
2025-01-13 15:21:20,713 - INFO - 변환 성공: 워드(한글)-010049-김아현.hwp -> 워드(한글)-010049-김아현.hml
2025-01-13 15:21:21,016 - INFO - 변환 성공: 워드(한글)-010050-박태오.hwp -> 워드(한글)-010050-박태오.hml
2025-01-13 15:21:21,180 - INFO - 변환 성공: 워드(한글)-010051-오은솔.hwp -> 워드(한글)-010051-오은솔.hml
2025-01-13 15:21:21,308 - INFO - 변환 성공: 워드(한글)-010052-김민유.hwp -> 워드(한글)-010052-김민유.hml
2025-01-13 15:21:21,442 - INFO - 변환 성공: 워드(한글)-010053-김봄.hwp -> 워드(한글)-010053-김봄.hml
2025-01-13 15:21:21,614 - INFO - 변환 성공: 워드(한글)-010054-김린우.hwp -> 워드(한글)-010054-김린우.hml
2025-01-13 15:21:21,751 - INFO - 변환 성공: 워드(한글)-010055-양유진.hwp -> 워드(한글)-010055-양유진.hml
2025-01-13 15:21:21,884 - INFO - 변환 성공: 워드(한글)-010065-양야베스.hwp -> 워드(한글)-010065-양야베스.hml
2025-01-13 15:21:22,066 - INFO - 변환 성공: 워드(한글)-010066-강우리.hwp -> 워드(한글)-010066-강우리.hml
2025-01-13 15:21:22,266 - INFO - 변환 성공: 워드(한글)-010067-김예빈.hwp -> 워드(한글)-010067-김예빈.hml
2025-01-13 15:21:22,472 - INFO - 변환 성공: 워드(한글)-010087-김다연.hwp -> 워드(한글)-010087-김다연.hml
2025-01-13 15:21:22,617 - INFO - 변환 성공: 워드(한글)-010088-송은율.hwp -> 워드(한글)-010088-송은율.hml
2025-01-13 15:21:22,752 - INFO - 변환 성공: 워드(한글)-010089-오준혁.hwp -> 워드(한글)-010089-오준혁.hml
2025-01-13 15:21:22,903 - INFO - 변환 성공: 워드(한글)-010090-오채원.hwp -> 워드(한글)-010090-오채원.hml
2025-01-13 15:21:23,024 - INFO - 변환 성공: 워드(한글)-010091-윤채린.hwp -> 워드(한글)-010091-윤채린.hml
2025-01-13 15:21:23,294 - INFO - 변환 성공: 워드(한글)-010092-신기하.hwp -> 워드(한글)-010092-신기하.hml
2025-01-13 15:21:23,435 - INFO - 변환 성공: 워드(한글)-010093-김이안.hwp -> 워드(한글)-010093-김이안.hml
2025-01-13 15:21:23,582 - INFO - 변환 성공: 워드(한글)-010094-김정현.hwp -> 워드(한글)-010094-김정현.hml
2025-01-13 15:21:23,727 - INFO - 변환 성공: 워드(한글)-010095-전민정.hwp -> 워드(한글)-010095-전민정.hml
2025-01-13 15:21:23,875 - INFO - 변환 성공: 워드(한글)-010120-고하진.hwp -> 워드(한글)-010120-고하진.hml
2025-01-13 15:21:24,076 - INFO - 변환 성공: 워드(한글)-010121-고한율.hwp -> 워드(한글)-010121-고한율.hml
2025-01-13 15:21:24,222 - INFO - 변환 성공: 워드(한글)-010122-손서아.hwp -> 워드(한글)-010122-손서아.hml
2025-01-13 15:21:24,363 - INFO - 변환 성공: 워드(한글)-010123-김지온.hwp -> 워드(한글)-010123-김지온.hml
2025-01-13 15:21:24,525 - INFO - 변환 성공: 워드(한글)-010124-안서정.hwp -> 워드(한글)-010124-안서정.hml
2025-01-13 15:21:24,654 - INFO - 변환 성공: 워드(한글)-010125-강지환.hwp -> 워드(한글)-010125-강지환.hml
2025-01-13 15:21:24,852 - INFO - 변환 성공: 워드(한글)-010126-고여진.hwp -> 워드(한글)-010126-고여진.hml
2025-01-13 15:21:24,998 - INFO - 변환 성공: 워드(한글)-010127-고재범.hwp -> 워드(한글)-010127-고재범.hml
2025-01-13 15:21:25,130 - INFO - 변환 성공: 워드(한글)-010128-윤빈.hwp -> 워드(한글)-010128-윤빈.hml
2025-01-13 15:21:25,302 - INFO - 변환 성공: 워드(한글)-010129-유승재.hwp -> 워드(한글)-010129-유승재.hml
2025-01-13 15:21:25,475 - INFO - 변환 성공: 워드(한글)-010130-고강은.hwp -> 워드(한글)-010130-고강은.hml
2025-01-13 15:21:25,611 - INFO - 변환 성공: 워드(한글)-010136-김호연.hwp -> 워드(한글)-010136-김호연.hml
2025-01-13 15:21:25,769 - INFO - 변환 성공: 워드(한글)-010141-김성운.hwp -> 워드(한글)-010141-김성운.hml
2025-01-13 15:21:25,926 - INFO - 변환 성공: 워드(한글)-010142-윤은지.hwp -> 워드(한글)-010142-윤은지.hml
2025-01-13 15:21:26,552 - INFO - 변환 성공: 워드(한글)-010143-지혁.hwp -> 워드(한글)-010143-지혁.hml
2025-01-13 15:21:26,793 - INFO - 변환 성공: 워드(한글)-010151-현시연.hwp -> 워드(한글)-010151-현시연.hml
2025-01-13 15:21:26,921 - INFO - 변환 성공: 워드(한글)-010162-박새롬.hwp -> 워드(한글)-010162-박새롬.hml
2025-01-13 15:21:27,085 - INFO - 변환 성공: 워드(한글)-010163-한보석.hwp -> 워드(한글)-010163-한보석.hml
2025-01-13 15:21:27,232 - INFO - 변환 성공: 워드(한글)-010169-오현준.hwp -> 워드(한글)-010169-오현준.hml
2025-01-13 15:21:27,425 - INFO - 변환 성공: 워드(한글)-010170-이하음.hwp -> 워드(한글)-010170-이하음.hml
2025-01-13 15:21:27,611 - INFO - 변환 성공: 워드(한글)-010171-진성원.hwp -> 워드(한글)-010171-진성원.hml
2025-01-13 15:21:27,767 - INFO - 변환 성공: 워드(한글)-010172-최수빈.hwp -> 워드(한글)-010172-최수빈.hml
2025-01-13 15:21:27,982 - INFO - 변환 성공: 워드(한글)-010177-조승우.hwp -> 워드(한글)-010177-조승우.hml
2025-01-13 15:21:28,197 - INFO - 변환 성공: 워드(한글)-010178-이태윤.hwp -> 워드(한글)-010178-이태윤.hml
2025-01-13 15:21:28,435 - INFO - 변환 성공: 워드(한글)-010187-현지수.hwp -> 워드(한글)-010187-현지수.hml
2025-01-13 15:21:28,594 - INFO - 변환 성공: 워드(한글)-010188-김현송.hwp -> 워드(한글)-010188-김현송.hml
2025-01-13 15:21:28,823 - INFO - 변환 성공: 워드(한글)-010189-한진우.hwp -> 워드(한글)-010189-한진우.hml
2025-01-13 15:21:28,979 - INFO - 변환 성공: 워드(한글)-010190-장서후.hwp -> 워드(한글)-010190-장서후.hml
2025-01-13 15:21:29,146 - INFO - 변환 성공: 워드(한글)-010191-진지원.hwp -> 워드(한글)-010191-진지원.hml
2025-01-13 15:21:29,268 - INFO - 변환 성공: 워드(한글)-010192-김시우.hwp -> 워드(한글)-010192-김시우.hml
2025-01-13 15:21:29,413 - INFO - 변환 성공: 워드(한글)-010193-강지오.hwp -> 워드(한글)-010193-강지오.hml
2025-01-13 15:21:29,601 - INFO - 변환 성공: 워드(한글)-010194-강리주.hwp -> 워드(한글)-010194-강리주.hml
2025-01-13 15:21:29,846 - INFO - 변환 성공: 워드(한글)-010195-강지예.hwp -> 워드(한글)-010195-강지예.hml
2025-01-13 15:21:30,057 - INFO - 변환 성공: 워드(한글)-010211-곽서아.hwp -> 워드(한글)-010211-곽서아.hml
2025-01-13 15:21:30,214 - INFO - 변환 성공: 워드(한글)-010219-김태형.hwp -> 워드(한글)-010219-김태형.hml
2025-01-13 15:21:30,392 - INFO - 변환 성공: 워드(한글)-010220-송수지.hwp -> 워드(한글)-010220-송수지.hml
2025-01-13 15:21:30,580 - INFO - 변환 성공: 워드(한글)-010221-이지나.hwp -> 워드(한글)-010221-이지나.hml
2025-01-13 15:21:30,760 - INFO - 변환 성공: 워드(한글)-010241-전하율.hwp -> 워드(한글)-010241-전하율.hml
2025-01-13 15:21:30,938 - INFO - 변환 성공: 워드(한글)-010242-양윤호.hwp -> 워드(한글)-010242-양윤호.hml
2025-01-13 15:21:31,193 - INFO - 변환 성공: 워드(한글)-010245-김하준.hwp -> 워드(한글)-010245-김하준.hml
2025-01-13 15:21:31,369 - INFO - 변환 성공: 워드(한글)-010246-한유승.hwp -> 워드(한글)-010246-한유승.hml
2025-01-13 15:21:31,539 - INFO - 변환 성공: 한글(워드)-010021-김유정.hwp -> 한글(워드)-010021-김유정.hml
2025-01-14 14:20:56,587 - INFO - 변환 성공: 워드(한글)-002294-우시현.hwp -> 워드(한글)-002294-우시현.hml
2025-01-16 13:31:28,436 - ERROR - 프로그램 실행 오류: module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap'
2025-01-16 13:35:17,499 - INFO - win32com 캐시가 성공적으로 삭제되었습니다.
2025-01-16 13:36:02,967 - INFO - win32com 캐시가 성공적으로 삭제되었습니다.
2025-01-16 13:36:12,205 - ERROR - 프로그램 실행 오류: '<win32com.gen_py.HwpObject 1.0 Type Library.IHwpObject instance at 0x2151521563136>' object has no attribute 'Close'
2025-01-16 13:36:45,137 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-16 13:36:45,385 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-16 13:36:45,757 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-16 13:36:45,994 - INFO - 변환 성공: 워드(한글)-009895-김라온.hwp -> 워드(한글)-009895-김라온.hml
2025-01-16 13:36:46,191 - INFO - 변환 성공: 워드(한글)-009896-안서준.hwp -> 워드(한글)-009896-안서준.hml
2025-01-16 13:36:46,371 - INFO - 변환 성공: 워드(한글)-009920-김민찬.hwp -> 워드(한글)-009920-김민찬.hml
2025-01-16 13:36:46,566 - INFO - 변환 성공: 워드(한글)-009921-김혜원.hwp -> 워드(한글)-009921-김혜원.hml
2025-01-16 13:36:46,732 - INFO - 변환 성공: 워드(한글)-009926-진성훈.hwp -> 워드(한글)-009926-진성훈.hml
2025-01-16 13:36:46,911 - INFO - 변환 성공: 워드(한글)-009927-한지수.hwp -> 워드(한글)-009927-한지수.hml
2025-01-16 13:36:47,088 - INFO - 변환 성공: 워드(한글)-009928-윤아르.hwp -> 워드(한글)-009928-윤아르.hml
2025-01-16 13:36:47,268 - INFO - 변환 성공: 워드(한글)-009929-김준영.hwp -> 워드(한글)-009929-김준영.hml
2025-01-16 13:36:47,448 - INFO - 변환 성공: 워드(한글)-009930-문윤재.hwp -> 워드(한글)-009930-문윤재.hml
2025-01-16 13:36:47,637 - INFO - 변환 성공: 워드(한글)-009931-이선우.hwp -> 워드(한글)-009931-이선우.hml
2025-01-16 13:36:47,816 - INFO - 변환 성공: 워드(한글)-009932-최다솜.hwp -> 워드(한글)-009932-최다솜.hml
2025-01-16 13:36:47,995 - INFO - 변환 성공: 워드(한글)-009933-이지한.hwp -> 워드(한글)-009933-이지한.hml
2025-01-16 13:36:48,176 - INFO - 변환 성공: 워드(한글)-009934-고서진.hwp -> 워드(한글)-009934-고서진.hml
2025-01-16 13:36:48,359 - INFO - 변환 성공: 워드(한글)-009935-이가은.hwp -> 워드(한글)-009935-이가은.hml
2025-01-16 13:36:48,539 - INFO - 변환 성공: 워드(한글)-009936-이라현.hwp -> 워드(한글)-009936-이라현.hml
2025-01-16 13:36:48,712 - INFO - 변환 성공: 워드(한글)-009937-진성준.hwp -> 워드(한글)-009937-진성준.hml
2025-01-16 13:36:48,908 - INFO - 변환 성공: 워드(한글)-009938-김규리.hwp -> 워드(한글)-009938-김규리.hml
2025-01-16 13:36:49,106 - INFO - 변환 성공: 워드(한글)-009939-이준.hwp -> 워드(한글)-009939-이준.hml
2025-01-16 13:36:49,305 - INFO - 변환 성공: 워드(한글)-009940-김지민.hwp -> 워드(한글)-009940-김지민.hml
2025-01-16 13:36:49,511 - INFO - 변환 성공: 워드(한글)-009941-윤지후.hwp -> 워드(한글)-009941-윤지후.hml
2025-01-16 13:36:49,704 - INFO - 변환 성공: 워드(한글)-009942-최원준.hwp -> 워드(한글)-009942-최원준.hml
2025-01-16 13:36:49,930 - INFO - 변환 성공: 워드(한글)-009943-윤헤르.hwp -> 워드(한글)-009943-윤헤르.hml
2025-01-16 13:36:50,192 - INFO - 변환 성공: 워드(한글)-009944-현지후.hwp -> 워드(한글)-009944-현지후.hml
2025-01-16 13:36:50,372 - INFO - 변환 성공: 워드(한글)-009945-고재웅.hwp -> 워드(한글)-009945-고재웅.hml
2025-01-16 13:36:50,560 - INFO - 변환 성공: 워드(한글)-009946-홍규진.hwp -> 워드(한글)-009946-홍규진.hml
2025-01-16 13:36:50,825 - INFO - 변환 성공: 워드(한글)-009956-고현규.hwp -> 워드(한글)-009956-고현규.hml
2025-01-16 13:36:51,023 - INFO - 변환 성공: 워드(한글)-009957-김도준.hwp -> 워드(한글)-009957-김도준.hml
2025-01-16 13:36:51,205 - INFO - 변환 성공: 워드(한글)-009958-김온유.hwp -> 워드(한글)-009958-김온유.hml
2025-01-16 13:36:51,394 - INFO - 변환 성공: 워드(한글)-009959-김현욱.hwp -> 워드(한글)-009959-김현욱.hml
2025-01-16 13:36:51,545 - INFO - 변환 성공: 워드(한글)-009960-박가을.hwp -> 워드(한글)-009960-박가을.hml
2025-01-16 13:36:51,724 - INFO - 변환 성공: 워드(한글)-009961-정현욱.hwp -> 워드(한글)-009961-정현욱.hml
2025-01-16 13:36:51,932 - INFO - 변환 성공: 워드(한글)-009962-최율.hwp -> 워드(한글)-009962-최율.hml
2025-01-16 13:36:52,111 - INFO - 변환 성공: 워드(한글)-009963-현서현.hwp -> 워드(한글)-009963-현서현.hml
2025-01-16 13:36:52,298 - INFO - 변환 성공: 워드(한글)-009992-송유준.hwp -> 워드(한글)-009992-송유준.hml
2025-01-16 13:36:52,496 - INFO - 변환 성공: 워드(한글)-009993-김지우.hwp -> 워드(한글)-009993-김지우.hml
2025-01-16 13:36:52,704 - INFO - 변환 성공: 워드(한글)-010035-유아정.hwp -> 워드(한글)-010035-유아정.hml
2025-01-16 13:36:52,870 - INFO - 변환 성공: 워드(한글)-010036-구준호.hwp -> 워드(한글)-010036-구준호.hml
2025-01-16 13:36:53,036 - INFO - 변환 성공: 워드(한글)-010037-나준우.hwp -> 워드(한글)-010037-나준우.hml
2025-01-16 13:36:53,217 - INFO - 변환 성공: 워드(한글)-010038-주보민.hwp -> 워드(한글)-010038-주보민.hml
2025-01-16 13:36:53,393 - INFO - 변환 성공: 워드(한글)-010039-이예낭.hwp -> 워드(한글)-010039-이예낭.hml
2025-01-16 13:36:53,643 - INFO - 변환 성공: 워드(한글)-010040-송가빈.hwp -> 워드(한글)-010040-송가빈.hml
2025-01-16 13:36:53,807 - INFO - 변환 성공: 워드(한글)-010041-이삼강.hwp -> 워드(한글)-010041-이삼강.hml
2025-01-16 13:36:53,981 - INFO - 변환 성공: 워드(한글)-010042-이윤찬.hwp -> 워드(한글)-010042-이윤찬.hml
2025-01-16 13:36:54,148 - INFO - 변환 성공: 워드(한글)-010043-고채원.hwp -> 워드(한글)-010043-고채원.hml
2025-01-16 13:36:54,342 - INFO - 변환 성공: 워드(한글)-010044-양준서.hwp -> 워드(한글)-010044-양준서.hml
2025-01-16 13:36:54,578 - INFO - 변환 성공: 워드(한글)-010045-김호건.hwp -> 워드(한글)-010045-김호건.hml
2025-01-16 13:36:54,754 - INFO - 변환 성공: 워드(한글)-010046-고보현.hwp -> 워드(한글)-010046-고보현.hml
2025-01-16 13:36:54,936 - INFO - 변환 성공: 워드(한글)-010047-고세현.hwp -> 워드(한글)-010047-고세현.hml
2025-01-16 13:36:55,107 - INFO - 변환 성공: 워드(한글)-010048-고주영.hwp -> 워드(한글)-010048-고주영.hml
2025-01-16 13:36:55,294 - INFO - 변환 성공: 워드(한글)-010049-김아현.hwp -> 워드(한글)-010049-김아현.hml
2025-01-16 13:36:55,629 - INFO - 변환 성공: 워드(한글)-010050-박태오.hwp -> 워드(한글)-010050-박태오.hml
2025-01-16 13:36:55,823 - INFO - 변환 성공: 워드(한글)-010051-오은솔.hwp -> 워드(한글)-010051-오은솔.hml
2025-01-16 13:36:55,998 - INFO - 변환 성공: 워드(한글)-010052-김민유.hwp -> 워드(한글)-010052-김민유.hml
2025-01-16 13:36:56,200 - INFO - 변환 성공: 워드(한글)-010053-김봄.hwp -> 워드(한글)-010053-김봄.hml
2025-01-16 13:36:56,388 - INFO - 변환 성공: 워드(한글)-010054-김린우.hwp -> 워드(한글)-010054-김린우.hml
2025-01-16 13:36:56,573 - INFO - 변환 성공: 워드(한글)-010055-양유진.hwp -> 워드(한글)-010055-양유진.hml
2025-01-16 13:36:56,748 - INFO - 변환 성공: 워드(한글)-010065-양야베스.hwp -> 워드(한글)-010065-양야베스.hml
2025-01-16 13:36:56,925 - INFO - 변환 성공: 워드(한글)-010066-강우리.hwp -> 워드(한글)-010066-강우리.hml
2025-01-16 13:36:57,108 - INFO - 변환 성공: 워드(한글)-010067-김예빈.hwp -> 워드(한글)-010067-김예빈.hml
2025-01-16 13:36:57,292 - INFO - 변환 성공: 워드(한글)-010087-김다연.hwp -> 워드(한글)-010087-김다연.hml
2025-01-16 13:36:57,480 - INFO - 변환 성공: 워드(한글)-010088-송은율.hwp -> 워드(한글)-010088-송은율.hml
2025-01-16 13:36:57,662 - INFO - 변환 성공: 워드(한글)-010089-오준혁.hwp -> 워드(한글)-010089-오준혁.hml
2025-01-16 13:36:57,840 - INFO - 변환 성공: 워드(한글)-010090-오채원.hwp -> 워드(한글)-010090-오채원.hml
2025-01-16 13:36:58,013 - INFO - 변환 성공: 워드(한글)-010091-윤채린.hwp -> 워드(한글)-010091-윤채린.hml
2025-01-16 13:36:58,201 - INFO - 변환 성공: 워드(한글)-010092-신기하.hwp -> 워드(한글)-010092-신기하.hml
2025-01-16 13:36:58,385 - INFO - 변환 성공: 워드(한글)-010093-김이안.hwp -> 워드(한글)-010093-김이안.hml
2025-01-16 13:36:58,573 - INFO - 변환 성공: 워드(한글)-010094-김정현.hwp -> 워드(한글)-010094-김정현.hml
2025-01-16 13:36:58,751 - INFO - 변환 성공: 워드(한글)-010095-전민정.hwp -> 워드(한글)-010095-전민정.hml
2025-01-16 13:36:58,932 - INFO - 변환 성공: 워드(한글)-010120-고하진.hwp -> 워드(한글)-010120-고하진.hml
2025-01-16 13:36:59,104 - INFO - 변환 성공: 워드(한글)-010121-고한율.hwp -> 워드(한글)-010121-고한율.hml
2025-01-16 13:36:59,270 - INFO - 변환 성공: 워드(한글)-010122-손서아.hwp -> 워드(한글)-010122-손서아.hml
2025-01-16 13:36:59,435 - INFO - 변환 성공: 워드(한글)-010123-김지온.hwp -> 워드(한글)-010123-김지온.hml
2025-01-16 13:36:59,623 - INFO - 변환 성공: 워드(한글)-010124-안서정.hwp -> 워드(한글)-010124-안서정.hml
2025-01-16 13:36:59,795 - INFO - 변환 성공: 워드(한글)-010125-강지환.hwp -> 워드(한글)-010125-강지환.hml
2025-01-16 13:36:59,960 - INFO - 변환 성공: 워드(한글)-010126-고여진.hwp -> 워드(한글)-010126-고여진.hml
2025-01-16 13:37:00,119 - INFO - 변환 성공: 워드(한글)-010127-고재범.hwp -> 워드(한글)-010127-고재범.hml
2025-01-16 13:37:00,300 - INFO - 변환 성공: 워드(한글)-010128-윤빈.hwp -> 워드(한글)-010128-윤빈.hml
2025-01-16 13:37:00,470 - INFO - 변환 성공: 워드(한글)-010129-유승재.hwp -> 워드(한글)-010129-유승재.hml
2025-01-16 13:37:00,640 - INFO - 변환 성공: 워드(한글)-010130-고강은.hwp -> 워드(한글)-010130-고강은.hml
2025-01-16 13:37:00,821 - INFO - 변환 성공: 워드(한글)-010136-김호연.hwp -> 워드(한글)-010136-김호연.hml
2025-01-16 13:37:01,006 - INFO - 변환 성공: 워드(한글)-010141-김성운.hwp -> 워드(한글)-010141-김성운.hml
2025-01-16 13:37:01,236 - INFO - 변환 성공: 워드(한글)-010142-윤은지.hwp -> 워드(한글)-010142-윤은지.hml
2025-01-16 13:37:01,869 - INFO - 변환 성공: 워드(한글)-010143-지혁.hwp -> 워드(한글)-010143-지혁.hml
2025-01-16 13:37:02,105 - INFO - 변환 성공: 워드(한글)-010151-현시연.hwp -> 워드(한글)-010151-현시연.hml
2025-01-16 13:37:02,238 - INFO - 변환 성공: 워드(한글)-010162-박새롬.hwp -> 워드(한글)-010162-박새롬.hml
2025-01-16 13:37:02,416 - INFO - 변환 성공: 워드(한글)-010163-한보석.hwp -> 워드(한글)-010163-한보석.hml
2025-01-16 13:37:02,608 - INFO - 변환 성공: 워드(한글)-010169-오현준.hwp -> 워드(한글)-010169-오현준.hml
2025-01-16 13:37:02,782 - INFO - 변환 성공: 워드(한글)-010170-이하음.hwp -> 워드(한글)-010170-이하음.hml
2025-01-16 13:37:02,965 - INFO - 변환 성공: 워드(한글)-010171-진성원.hwp -> 워드(한글)-010171-진성원.hml
2025-01-16 13:37:03,142 - INFO - 변환 성공: 워드(한글)-010172-최수빈.hwp -> 워드(한글)-010172-최수빈.hml
2025-01-16 13:37:03,321 - INFO - 변환 성공: 워드(한글)-010177-조승우.hwp -> 워드(한글)-010177-조승우.hml
2025-01-16 13:37:03,569 - INFO - 변환 성공: 워드(한글)-010178-이태윤.hwp -> 워드(한글)-010178-이태윤.hml
2025-01-16 13:37:03,760 - INFO - 변환 성공: 워드(한글)-010187-현지수.hwp -> 워드(한글)-010187-현지수.hml
2025-01-16 13:37:03,980 - INFO - 변환 성공: 워드(한글)-010188-김현송.hwp -> 워드(한글)-010188-김현송.hml
2025-01-16 13:37:04,170 - INFO - 변환 성공: 워드(한글)-010189-한진우.hwp -> 워드(한글)-010189-한진우.hml
2025-01-16 13:37:04,351 - INFO - 변환 성공: 워드(한글)-010190-장서후.hwp -> 워드(한글)-010190-장서후.hml
2025-01-16 13:37:04,538 - INFO - 변환 성공: 워드(한글)-010191-진지원.hwp -> 워드(한글)-010191-진지원.hml
2025-01-16 13:37:04,690 - INFO - 변환 성공: 워드(한글)-010192-김시우.hwp -> 워드(한글)-010192-김시우.hml
2025-01-16 13:37:04,870 - INFO - 변환 성공: 워드(한글)-010193-강지오.hwp -> 워드(한글)-010193-강지오.hml
2025-01-16 13:37:05,048 - INFO - 변환 성공: 워드(한글)-010194-강리주.hwp -> 워드(한글)-010194-강리주.hml
2025-01-16 13:37:05,222 - INFO - 변환 성공: 워드(한글)-010195-강지예.hwp -> 워드(한글)-010195-강지예.hml
2025-01-16 13:37:05,418 - INFO - 변환 성공: 워드(한글)-010211-곽서아.hwp -> 워드(한글)-010211-곽서아.hml
2025-01-16 13:37:05,613 - INFO - 변환 성공: 워드(한글)-010219-김태형.hwp -> 워드(한글)-010219-김태형.hml
2025-01-16 13:37:05,820 - INFO - 변환 성공: 워드(한글)-010220-송수지.hwp -> 워드(한글)-010220-송수지.hml
2025-01-16 13:37:06,027 - INFO - 변환 성공: 워드(한글)-010221-이지나.hwp -> 워드(한글)-010221-이지나.hml
2025-01-16 13:37:06,212 - INFO - 변환 성공: 워드(한글)-010241-전하율.hwp -> 워드(한글)-010241-전하율.hml
2025-01-16 13:37:06,397 - INFO - 변환 성공: 워드(한글)-010242-양윤호.hwp -> 워드(한글)-010242-양윤호.hml
2025-01-16 13:37:06,583 - INFO - 변환 성공: 워드(한글)-010245-김하준.hwp -> 워드(한글)-010245-김하준.hml
2025-01-16 13:37:06,765 - INFO - 변환 성공: 워드(한글)-010246-한유승.hwp -> 워드(한글)-010246-한유승.hml
2025-01-16 13:37:06,944 - INFO - 변환 성공: 한글(워드)-010021-김유정.hwp -> 한글(워드)-010021-김유정.hml
2025-01-16 16:41:56,943 - ERROR - 프로그램 실행 오류: [WinError 5] 액세스가 거부되었습니다: 'C:\\Users\\gzero-ser7-win11'
2025-01-16 16:46:12,750 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-16 16:46:12,779 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-16 16:46:12,794 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-16 16:46:29,919 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-16 16:46:30,398 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-16 16:46:30,958 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-16 16:54:39,223 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-16 16:54:39,705 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-16 16:54:40,257 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-16 16:57:28,791 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-16 16:57:29,289 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-16 16:57:29,897 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-16 17:00:36,937 - INFO - 변환 성공: 워드(한글)-009865-고미송.hwp -> 워드(한글)-009865-고미송.hml
2025-01-16 17:00:37,422 - INFO - 변환 성공: 워드(한글)-009866-성유나.hwp -> 워드(한글)-009866-성유나.hml
2025-01-16 17:00:37,904 - INFO - 변환 성공: 워드(한글)-009890-오지은.hwp -> 워드(한글)-009890-오지은.hml
2025-01-16 18:26:35,547 - INFO - 변환 성공: 워드(한글)-009933-이지한.hwp -> 워드(한글)-009933-이지한.hml
2025-01-16 18:26:37,117 - INFO - 변환 성공: 워드(한글)-009934-고서진.hwp -> 워드(한글)-009934-고서진.hml
2025-01-16 18:26:38,028 - INFO - 변환 성공: 워드(한글)-009935-이가은.hwp -> 워드(한글)-009935-이가은.hml

File diff suppressed because one or more lines are too long

2
pip.py
View File

@@ -1,2 +0,0 @@
import sys
print(sys.executable)

110
score5.py
View File

@@ -1,13 +1,15 @@
from datetime import datetime
import json
import glob
from pathlib import Path
import os
from lxml import etree as ET
import re
from difflib import SequenceMatcher
import pandas as pd
# from xpathSearch import XMLPathHandler
from binaryToChartxml import binaryToChartxml
class XMLScorer:
# 채점 기준 경로 초기화
@@ -21,21 +23,38 @@ class XMLScorer:
return json.load(f)
# XML 파일에서 element의 값을 찾아 반환
def query_xml(self, root, query):
try:
result = root.xpath(query)
if type(result) is list and len(result) == 0:
def query_xml(self, root, *args):
points = args[2]
if args[1] is not None:
try:
result = root.xpath(args[0])
if type(result) is list and len(result) == 0:
return None
elif result < points:
result = root.xpath(args[1])
return result
else:
return result
# result = root.xpath(args[1])
# print(f'result : {result}')
# return result
except ET.XPathEvalError as e:
return None
else:
try:
result = root.xpath(args[0])
if type(result) is list and len(result) == 0:
return None
return result
except ET.XPathEvalError as e:
return None
return result
except ET.XPathEvalError as e:
return None
# 유사한 텍스트 찾기
def find_similar_text(self, root, target_text, threshold=0.3):
def find_similar_text(self, root, target_text, threshold=0.5):
"""
전체 문서에서 유사한 텍스트를 찾아 반환
Args:
root (_type_): xml root element 객체
target_text (_type_): 찾을 텍스트
@@ -47,6 +66,7 @@ class XMLScorer:
# 전체 텍스트 추출
# all_text = root.xpath(f"//CHAR/text()")
# all_text.append(root.xpath(f"//TEXTART/@text"))
all_text = root.xpath(f"//CHAR/text() | //TEXTART/@Text")
# 유사도 비교
@@ -64,7 +84,7 @@ class XMLScorer:
return similar_text
else:
return None
# 하나의 XML 파일 채점
def _score_xml_file(self, xml_path):
try:
@@ -84,24 +104,24 @@ class XMLScorer:
for criterion_id, criterion in self.scoring_criteria.items():
xpath = criterion['path']
xpath2 = criterion['path2']
search_value = criterion['searchValue']
right_answer = criterion['value']
points = criterion['points']
category = criterion['category']
item = criterion['item']
simliar_text = None
# searchValue가 있을 경우 유사한 텍스트 찾기
if search_value is not None:
simliar_text = self.find_similar_text(root, search_value)
if simliar_text is None:
xpath = xpath.replace('{searchValue}', '')
xpath = xpath.replace('{searchValue}', search_value)
else:
xpath = xpath.replace('{searchValue}', simliar_text)
# xpath로 실제 작성 답안 찾기
result = self.query_xml(root, xpath)
result = self.query_xml(root, xpath, xpath2, points)
# [ boolean 타입 ]
# 1. 이텔릭체, 굵게, 밑줄 등 효과가 적용 여부에 따라
@@ -112,18 +132,16 @@ class XMLScorer:
# [ float 타입 ]
# 1. 부분점수의 합산으로 반환되는 경우 float 타입으로 반환
if type(result) is not list:
actual_answer = result
# 표 같이 여러 조건을 동시에 검사 해야하는 경우우
# elif type(result) is list and len(result) > 1:
# xpath2 = criterion['path2']
# for i in result:
# xpath2 = xpath2.replace('{path_result_list}', str(i))
# print(f"xpath2: {xpath2}")
if type(result) is float and (result > points):
actual_answer = float(points)
else:
actual_answer = result
else:
actual_answer = result[0]
if type(right_answer) is int:
actual_answer = int(result[0])
else:
actual_answer = result[0]
scoring = {
'category': category, # 채점 분류
'item': item, # 채점 항목
@@ -132,26 +150,31 @@ class XMLScorer:
'points': 0,
'deductions': [] # 각 기준별 감점 내역
}
scoring['points'] = points
# 점수 차감 조건
# 1. 정답이 실수형으로 반환받은 경우는 채점항목의 부분점수 합산 결과이므로
# 반환받은 값 그대로를 점수로 사용
# 2. 그 외의 경우 정답과 실제 작성 답안이 다른 경우 점수 차감
# 2. 정답이 정수형(사이즈 비교)의 경우 오차범위를 넘는다면 감점
# 3. 그 외의 경우 정답과 실제 작성 답안이 다른 경우 점수 차감
if type(actual_answer) is float:
scoring['points'] = actual_answer
scoring['points'] = actual_answer
elif type(actual_answer) is int:
# 오차범위 5 이상이면 감점
if abs(actual_answer - right_answer) > 5:
scoring['points'] -= points
else:
# right_answer(JSON파일 내 valuer값) null일 경우 점수감점 없이 진행
if right_answer != actual_answer:
scoring['points'] -= points
# 점수 차감 이유 작성 (개발중)
results['score_results'].append(scoring)
total_score += scoring['points']
if scoring['points'] > 0:
print(f'scoring: {scoring}')
print(f'scoring: {scoring}')
results['total_score'] = total_score
return results
@@ -162,6 +185,7 @@ class XMLScorer:
'error': f"XML 파싱 오류: {str(e)}",
'total_score': 0
}
# def binary_to_chartxml(self, xml_path):
# XML 파일 채점
def score_directory(self, xml_directory):
@@ -173,11 +197,21 @@ class XMLScorer:
results = []
for xml_file in xml_files:
self.binary_to_chartxml(xml_file)
result = self._score_xml_file(xml_file)
results.append(result)
results.append(result)
return results
def parse_filename(self, filename):
if isinstance(filename, dict):
filename = filename.get('파일명', '')
match = re.match(r'.*-(\d+)-(.+)\.hml', filename)
if match:
number = match.group(1)
name = match.group(2)
return number, name
return None, None
def export_to_excel(self, results, output_path=None):
if output_path is None:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
@@ -185,7 +219,6 @@ class XMLScorer:
summary_data = []
detail_data = []
header_added = False
for result in results:
# 요약 정보
@@ -200,7 +233,10 @@ class XMLScorer:
# 상세 정보
if 'score_results' in result:
detail_row = {'파일명': result['filename']}
filename = {'파일명': result['filename']}
number, name = self.parse_filename(filename)
detail_row = {'수험자':f"{number}-{name}"}
for i, scoring in enumerate(result['score_results']):
detail_row[f'점수_{i+1}'] = scoring['points']
@@ -208,7 +244,7 @@ class XMLScorer:
detail_data.append(detail_row)
summary_df = pd.DataFrame(summary_data)
detail_df = pd.DataFrame(detail_data)
detail_df = pd.DataFrame(detail_data).transpose()
# detail_df = pd.DataFrame(detail_data)
# ExcelWriter 객체 생성

View File

@@ -1,6 +1,7 @@
{
"0-1":{
"path":"boolean(//PAGEMARGIN[@Bottom='5669' and @Footer='2834' and @Gutter='0' and @Header='2834' and @Left='5669' and @Right='5669' and @Top='5669'])",
"path2": null,
"searchValue": null,
"value":true,
"points": 4,
@@ -9,6 +10,7 @@
},
"0-2":{
"path":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
"path2": null,
"searchValue": null,
"value":true,
"points": 4,
@@ -17,206 +19,232 @@
},
"0-3":{
"path":"",
"path2": null,
"searchValue": null,
"value":true,
"value":null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -2점"
},
"1":{
"1-1":{
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": "궁서체",
"points": 2,
"category": "글맵시",
"item":"글씨체 (궁서체)"
},
"2": {
"1-2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": "10040115",
"points": 2,
"category": "글맵시",
"item":"채우기 : 색상(RGB:51,51,153)"
},
"3": {
"1-3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": "36850",
"value": 36850,
"points": 2,
"category": "글맵시",
"item":"크기-너비 (130mm)"
},
"4": {
"1-4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": "5669",
"value": 5669,
"points": 2,
"category": "글맵시",
"item":"크기-높이 (20mm)"
},
"5": {
"1-5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": "true",
"points": 2,
"category": "글맵시",
"item":"위치 (글자처럼 취급)"
},
"6": {
"1-6": {
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": "Center",
"points": 2,
"category": "글맵시",
"item":"정렬 (가운데 정렬)"
},
"7":{
"1-7":{
"path": "",
"path2": null,
"searchValue": "즐거운컬러푸드영양교실",
"value": null,
"points": 2,
"category": "글맵시",
"item":"글맵시모양 (육안확인)"
},
"8": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])",
"1-8": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][BOLD])",
"path2": null,
"searchValue": "‘즐거운 컬러푸드 영양교실’",
"value": true,
"points": 2,
"category": "글꼴속성",
"item":"진하게"
},
"9": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
"1-9": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'{searchValue}')]/parent::TEXT/@CharShape][ITALIC])",
"path2": null,
"searchValue": "‘즐거운 컬러푸드 영양교실’",
"value": true,
"points": 2,
"category": "글꼴속성",
"item":"기울임"
},
"10": {
"path": "string-length(//CHAR[contains(text(),'♤')]) - string-length(translate(//CHAR[contains(text(),'♤')], '♤', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
"1-10": {
"path": "count(//CHAR[contains(text(),'♤')]) + count(//CHAR[contains(text(),'※')])",
"path2": "string-length(//CHAR[contains(text(),'♤')]) - string-length(translate(//CHAR[contains(text(),'♤')], '♤', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
"searchValue": null,
"value": 3.0,
"points": 3,
"category": "특수문자",
"item":"♤, ♤, ※"
},
"11": {
"1-11": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "행사안내",
"value": "굴림체",
"points": 1,
"category": "글꼴 속성",
"item":"글씨체 (굴림체)"
},
"12": {
"1-12": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"path2": null,
"searchValue": "행사안내",
"value": "Center",
"points": 1,
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"13": {
"1-13": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
"path2": null,
"searchValue": "홈페이지(http://www.ihd.or.kr)를 통해 선착순 접수",
"value": true,
"points": 1,
"category": "글꼴 속성",
"item":"기울임"
},
"14": {
"1-14": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])",
"path2": null,
"searchValue": "홈페이지(http://www.ihd.or.kr)를 통해 선착순 접수",
"value": true,
"points": 1,
"category": "글꼴 속성",
"item":"밑줄"
},
"15": {
"1-15": {
"path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3600 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2000)",
"path2": null,
"searchValue": "※ 기타",
"value": true,
"points": 2,
"category": "문단모양",
"item":"왼쪽여백 (18pt), 내어쓰기 (10pt)"
},
"16": {
"1-16": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "2024. 1. 27.",
"value": "1100",
"value": 1100,
"points": 2,
"category": "글꼴 속성",
"item":"크기 (11pt)"
},
"17": {
"1-17": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"path2": null,
"searchValue": "2024. 1. 27.",
"value": "Center",
"points": 1,
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"18": {
"1-18": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "용일동보건소",
"value": "한양중고딕",
"points": 2,
"category": "글꼴 속성",
"item":"글씨체 (중고딕)"
},
"19": {
"1-19": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "용일동보건소",
"value": "2200",
"value": 2200,
"points": 2,
"category": "글꼴 속성",
"item":"크기 (22pt)"
},
"20": {
"1-20": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"path2": null,
"searchValue": "용일동보건소",
"value": "Center",
"points": 2,
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"21": {
"1-21": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "DIAT",
"value": "돋움체",
"points": 2,
"category": "머리말",
"item":"글꼴 (돋움체)"
},
"22": {
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"1-22": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "DIAT",
"value": "900",
"value": 900,
"points": 2,
"category": "머리말",
"item":"크기 (9pt)"
},
"23": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"1-23": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"path2": null,
"searchValue": "DIAT",
"value": "Right",
"points": 2,
"category": "머리말",
"item":"정렬 (오른쪽 정렬)"
},
"24": {
"path": "//PAGENUM/@FormatType",
"1-24": {
"path": "//SECTION[1]//PAGENUM/@FormatType",
"path2": null,
"searchValue": null,
"value": "LatinCapital",
"points": 2,
"category": "쪽번호",
"item":"쪽 번호 매기기 (A,B,C 순으로)"
},
"25": {
"path": "//PAGENUM/@Pos",
"1-25": {
"path": "//SECTION[1]//PAGENUM/@Pos",
"path2": null,
"searchValue": null,
"value": "BottomCenter",
"points": 2,
@@ -224,207 +252,233 @@
"item":"가운데 아래"
},
"2-01":{
"path":"boolean(//SECTION[2]//PAGEBORDERFILL[@Type='Both']/@HeaderInside='true' and //BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
"path":"boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
"path2": null,
"searchValue": null,
"value":true,
"points": 4,
"category": "",
"item": ""
"category": "쪽 테두리",
"item": "이중 실선, 머리말 포함"
},
"2-02":{
"path":"//NUMBERINGLIST/@Count > 1",
"path":"count(//SECTION)>1",
"path2": null,
"searchValue": null,
"value":true,
"points": 3,
"category": "",
"item": ""
"category": "다단",
"item": "① 구역나누기"
},
"2-03":{
"path":"/HWPML/BODY/SECTION[2]/P[2]/TEXT/COLDEF/@Count=2",
"path":"//COLDEF/@Count>1",
"path2": null,
"searchValue": null,
"value":true,
"points": 3,
"category": "",
"item": ""
"category": "다단",
"item": "② 다단 2단"
},
"2-04":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"path2": null,
"searchValue": "컬러푸드",
"value":"11339",
"value":11339,
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "① 크기-너비 (40mm)"
},
"2-05":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"path2": null,
"searchValue": "컬러푸드",
"value":"3402",
"value":3402,
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "② 크기-높이 (12mm)"
},
"2-06":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style",
"path2": null,
"searchValue": "컬러푸드",
"value":"DoubleSlim",
"points": 2,
"category": "",
"item": ""
"category": "글상자",
"item": "③ 테두리 (이중 실선(1.00mm))"
},
"2-07":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio>0",
"path2": null,
"searchValue": "컬러푸드",
"value":true,
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "④ 글상자 모서리 (둥근 모양)"
},
"2-08":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor",
"path2": null,
"searchValue": "컬러푸드",
"value":"12813762",
"points": 2,
"category": "",
"item": ""
"category": "글상자",
"item": "⑤ 채우기 : 색상(RGB:194,133,195) "
},
"2-09":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"path2": null,
"searchValue": "컬러푸드",
"value":"true",
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "⑥ 글상자 위치 (글자처럼 취급)"
},
"2-10":{
"path":"//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"path2": null,
"searchValue": "컬러푸드",
"value": "Center",
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "⑦ 글상자 정렬 (가운데 정렬)"
},
"2-11":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "컬러푸드",
"value":"한양견고딕",
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "⑧ 글씨체 (견고딕)"
},
"2-12":{
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='1600' and //CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"path2": null,
"searchValue": "컬러푸드",
"value":true,
"points": 1,
"category": "",
"item": ""
"category": "⑨ 글씨크기 (16pt), 진하게",
"item": "글상자"
},
"2-13":{
"path":"//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align",
"path2": null,
"searchValue": "컬러푸드",
"value":"Center",
"points": 1,
"category": "",
"item": ""
"category": "글상자",
"item": "⑩ 정렬 (가운데 정렬)"
},
"2-14":{
"path":"boolean(//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])",
"path2": null,
"searchValue": "그림D.jpg",
"value":true,
"points": 2,
"category": "",
"item": "14"
"category": "그림삽입",
"item": "① 파일명 '그림D.jpg' 삽입"
},
"2-15":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
"path2": null,
"searchValue": null,
"value":"11339",
"value":11339,
"points": 2,
"category": "",
"item": "15"
"category": "그림삽입",
"item": "② 크기-너비 (40mm)"
},
"2-16":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
"path2": null,
"searchValue": null,
"value":"8504",
"value":8504,
"points": 2,
"category": "",
"item": ""
"category": "그림삽입",
"item": "③ 크기-높이 (30mm)"
},
"2-17":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
"path2": null,
"searchValue": null,
"value":"0",
"value":0,
"points": 2,
"category": "",
"item": ""
"category": "그림삽입",
"item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)"
},
"2-18":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
"path2": null,
"searchValue": null,
"value":"6520",
"value":6520,
"points": 2,
"category": "",
"item": ""
"category": "그림삽입",
"item": "⑤ 위치 (어울림 : 세로-쪽의 위 23mm)"
},
"2-19":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='1. 컬러푸드란']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "1. 컬러푸드란",
"value":"굴림",
"points": 1,
"category": "",
"item": ""
"category": "속성",
"item": "① 글씨체 (굴림)"
},
"2-20":{
"path":"//CHARSHAPE[@Id=//CHAR[text()='1. 컬러푸드란']/parent::TEXT/@CharShape]/@Height",
"path":"//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "1. 컬러푸드란",
"value":"1100",
"points": 2,
"category": "",
"item": ""
"value":1100,
"points": 1,
"category": "속성",
"item": "② 크기 (11pt)"
},
"2-21":{
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='1. 컬러푸드란']/parent::TEXT/@CharShape]/BOLD)",
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"path2": null,
"searchValue": "1. 컬러푸드란",
"value":true,
"points": 1,
"category": "",
"item": ""
"category": "속성",
"item": "③ 진하게"
},
"2-22":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='2. 컬러푸드의 효능']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "2. 컬러푸드의 효능",
"value":"굴림",
"points": 1,
"category": "",
"item": ""
"category": "속성",
"item": "① 글씨체 (굴림)"
},
"2-23":{
"path":"//CHARSHAPE[@Id=//CHAR[text()='2. 컬러푸드의 효능']/parent::TEXT/@CharShape]/@Height",
"path":"//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "2. 컬러푸드의 효능",
"value":"1100",
"value":1100,
"points": 1,
"category": "",
"item": ""
"category": "속성",
"item": "② 크기 (11pt)"
},
"2-24":{
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='2. 컬러푸드의 효능']/parent::TEXT/@CharShape]/BOLD)",
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"path2": null,
"searchValue": "2. 컬러푸드의 효능",
"value":true,
"points": 1,
"category": "",
"item": ""
"category": "속성",
"item": "③ 진하게"
},
"2-25":{
"path":"boolean(//CHAR[contains(text(),'항산화 작용')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'산화를 억제하는 작용')])",
"searchValue": "항산화 작용",
"path2": null,
"searchValue": null,
"value":true,
"points": 3,
"category": "",
"category": "각주",
"item": ""
},
"2-26":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'산화를 억제하는 작용')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "산화를 억제하는 작용",
"value": "굴림",
"points": 2,
@@ -432,15 +486,17 @@
"item": ""
},
"2-27":{
"path":"//CHARSHAPE[@Id=//CHAR[contains(text(),'산화를 억제하는 작용')]/parent::TEXT/@CharShape]/@Height",
"path":"//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "산화를 억제하는 작용",
"value":"900",
"value":900,
"points": 2,
"category": "",
"item": ""
},
"2-28":{
"path":"(count(//CHAR[contains(text(),'미생물')][contains(text(),'微生物')])+count(//CHAR[contains(text(),'해충')][contains(text(),'害蟲')])+count(//CHAR[contains(text(),'재생')][contains(text(),'再生')])+count(//CHAR[contains(text(),'노화')][contains(text(),'老化')])+count(//CHAR[contains(text(),'오골계')][contains(text(),'烏骨鷄')]))*2",
"path2": null,
"searchValue": null,
"value": 10,
"points": 10,
@@ -448,23 +504,26 @@
"item": ""
},
"2-29":{
"path":"boolean(//CHAR[text()='서로 다른 색과 맛을'])",
"path":"boolean(//CHAR[contains(text(),'맛을')])",
"path2": null,
"searchValue": null,
"value":true,
"points": 2,
"category": "",
"item": ""
"category": "편집",
"item": "'이' → '을' 글자바꿈"
},
"2-30":{
"path":"boolean(//CHAR[text()='혈관을 튼튼하게'])",
"path":"boolean(//CHAR[contains(text(),'을 튼')])",
"path2": null,
"searchValue": null,
"value":true,
"points": 2,
"category": "",
"item": ""
"category": "편집",
"item": "'튼튼하게' / '혈관을' 순서바꿈"
},
"2-31":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": "과일야채 항산화지수 비교",
"value":"굴림체",
"points": 1,
@@ -473,14 +532,16 @@
},
"2-32":{
"path":"//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": "과일야채 항산화지수 비교",
"value": "1100",
"value": 1100,
"points": 1,
"category": "",
"item": ""
},
"2-33":{
"path":"boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)",
"path2": null,
"searchValue": "과일야채 항산화지수 비교",
"value":true,
"points": 1,
@@ -489,6 +550,7 @@
},
"2-34":{
"path":"//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"path2": null,
"searchValue": "과일야채 항산화지수 비교",
"value": "Center",
"points": 1,
@@ -497,6 +559,7 @@
},
"2-35":{
"path":"//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"path2": null,
"searchValue": null,
"value": "6268159",
"points": 2,
@@ -505,6 +568,7 @@
},
"2-36":{
"path":"boolean(//CHARSHAPE[@Id=//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)",
"path2": null,
"searchValue": null,
"value":true,
"points": 2,
@@ -513,6 +577,7 @@
},
"2-37":{
"path":"boolean(//BORDERFILL[@Id=//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
"path2": null,
"searchValue": null,
"value":true,
"points": 2,
@@ -521,6 +586,7 @@
},
"2-38":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path2": null,
"searchValue": null,
"value":"궁서",
"points": 2,
@@ -529,32 +595,153 @@
},
"2-39":{
"path":"//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
"path2": null,
"searchValue": null,
"value":"1000",
"value":1000,
"points": 2,
"category": "",
"item": ""
},
"2-40":{
"path":"//PARASHAPE[@Id=//TABLE/ROW/descendant::P/@ParaShape]/@Align",
"path2": null,
"searchValue": null,
"value":"Center",
"points": 2,
"category": "",
"item": ""
},
"2-41":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 3,
"category": "",
"item": ""
},
"2-42":{
"path":"//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
"path2": null,
"searchValue": null,
"value":"22677",
"value":22677,
"points": 2,
"category": "",
"item": ""
},
"2-43":{
"path":"//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
"path2": null,
"searchValue": null,
"value":"25511",
"value":25511,
"points": 2,
"category": "",
"item": ""
},
"2-44":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-45":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-46":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-47":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-48":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-49":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-50":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-51":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-52":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-53":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-54":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-55":{
"path":"",
"path2": null,
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""

12
scoring_criteria2.json Normal file
View File

@@ -0,0 +1,12 @@
{
"1-10": {
"path": "count(//CHAR[contains(text(),'♤')]) + count(//CHAR[contains(text(),'※')])",
"path2": "string-length(//CHAR[contains(text(),'♤')]) - string-length(translate(//CHAR[contains(text(),'♤')], '♤', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
"searchValue": null,
"value": 3.0,
"points": 3,
"category": "특수문자",
"item":"♤, ♤, ※"
}
}

View File

@@ -4,18 +4,26 @@
"searchValue": null,
"value":true,
"points": 4,
"category": "",
"item": ""
"category": "용지설정",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"0-2":{
"path":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//STYLE[@Name='바탕글']/@CharShape]/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE[@Id=//STYLE[@Name='바탕글']/@CharShape]/@Height='1000' and //PARASHAPE[@Id=//STYLE[@Name='바탕글']/@ParaShape][PARAMARGIN/@LineSpacing='160' and @Align='Justify'])",
"path":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
"searchValue": null,
"value":true,
"points": 4,
"category": "",
"item": ""
"category": "기본설정",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"1":{
"0-3":{
"path":"",
"searchValue": null,
"value":null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -2점"
},
"1-1":{
"path": "//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "즐거운컬러푸드영양교실",
"value": "궁서체",
@@ -23,7 +31,7 @@
"category": "글맵시",
"item":"글씨체 (궁서체)"
},
"2": {
"1-2": {
"path": "//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "즐거운컬러푸드영양교실",
"value": "10040115",
@@ -31,23 +39,23 @@
"category": "글맵시",
"item":"채우기 : 색상(RGB:51,51,153)"
},
"3": {
"1-3": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "즐거운컬러푸드영양교실",
"value": "36850",
"value": 36850,
"points": 2,
"category": "글맵시",
"item":"크기-너비 (130mm)"
},
"4": {
"1-4": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "즐거운컬러푸드영양교실",
"value": "5669",
"value": 5669,
"points": 2,
"category": "글맵시",
"item":"크기-높이 (20mm)"
},
"5": {
"1-5": {
"path": "//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "즐거운컬러푸드영양교실",
"value": "true",
@@ -55,7 +63,7 @@
"category": "글맵시",
"item":"위치 (글자처럼 취급)"
},
"6": {
"1-6": {
"path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "즐거운컬러푸드영양교실",
"value": "Center",
@@ -63,7 +71,7 @@
"category": "글맵시",
"item":"정렬 (가운데 정렬)"
},
"7":{
"1-7":{
"path": "",
"searchValue": "즐거운컬러푸드영양교실",
"value": null,
@@ -71,7 +79,7 @@
"category": "글맵시",
"item":"글맵시모양 (육안확인)"
},
"8": {
"1-8": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])",
"searchValue": "‘즐거운 컬러푸드 영양교실’",
"value": true,
@@ -79,7 +87,7 @@
"category": "글꼴속성",
"item":"진하게"
},
"9": {
"1-9": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
"searchValue": "‘즐거운 컬러푸드 영양교실’",
"value": true,
@@ -87,7 +95,7 @@
"category": "글꼴속성",
"item":"기울임"
},
"10": {
"1-10": {
"path": "string-length(//CHAR[contains(text(),'♤')]) - string-length(translate(//CHAR[contains(text(),'♤')], '♤', '')) + string-length(//CHAR[contains(text(),'※')]) - string-length(translate(//CHAR[contains(text(),'※')], '※', ''))",
"searchValue": null,
"value": 3.0,
@@ -95,7 +103,7 @@
"category": "특수문자",
"item":"♤, ♤, ※"
},
"11": {
"1-11": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "행사안내",
"value": "굴림체",
@@ -103,7 +111,7 @@
"category": "글꼴 속성",
"item":"글씨체 (굴림체)"
},
"12": {
"1-12": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "행사안내",
"value": "Center",
@@ -111,7 +119,7 @@
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"13": {
"1-13": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
"searchValue": "홈페이지(http://www.ihd.or.kr)를 통해 선착순 접수",
"value": true,
@@ -119,7 +127,7 @@
"category": "글꼴 속성",
"item":"기울임"
},
"14": {
"1-14": {
"path": "boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])",
"searchValue": "홈페이지(http://www.ihd.or.kr)를 통해 선착순 접수",
"value": true,
@@ -127,7 +135,7 @@
"category": "글꼴 속성",
"item":"밑줄"
},
"15": {
"1-15": {
"path": "boolean(//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3600 and //PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2000)",
"searchValue": "※ 기타",
"value": true,
@@ -135,15 +143,15 @@
"category": "문단모양",
"item":"왼쪽여백 (18pt), 내어쓰기 (10pt)"
},
"16": {
"1-16": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2024. 1. 27.",
"value": "1100",
"value": 1100,
"points": 2,
"category": "글꼴 속성",
"item":"크기 (11pt)"
},
"17": {
"1-17": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2024. 1. 27.",
"value": "Center",
@@ -151,7 +159,7 @@
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"18": {
"1-18": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "용일동보건소",
"value": "한양중고딕",
@@ -159,15 +167,15 @@
"category": "글꼴 속성",
"item":"글씨체 (중고딕)"
},
"19": {
"1-19": {
"path": "//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "용일동보건소",
"value": "2200",
"value": 2200,
"points": 2,
"category": "글꼴 속성",
"item":"크기 (22pt)"
},
"20": {
"1-20": {
"path": "//PARASHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "용일동보건소",
"value": "Center",
@@ -175,7 +183,7 @@
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"21": {
"1-21": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "DIAT",
"value": "돋움체",
@@ -183,15 +191,15 @@
"category": "머리말",
"item":"글꼴 (돋움체)"
},
"22": {
"1-22": {
"path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"searchValue": "DIAT",
"value": "900",
"value": 900,
"points": 2,
"category": "머리말",
"item":"크기 (9pt)"
},
"23": {
"1-23": {
"path": "//PARASHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
@@ -199,7 +207,7 @@
"category": "머리말",
"item":"정렬 (오른쪽 정렬)"
},
"24": {
"1-24": {
"path": "//PAGENUM/@FormatType",
"searchValue": null,
"value": "LatinCapital",
@@ -207,7 +215,7 @@
"category": "쪽번호",
"item":"쪽 번호 매기기 (A,B,C 순으로)"
},
"25": {
"1-25": {
"path": "//PAGENUM/@Pos",
"searchValue": null,
"value": "BottomCenter",
@@ -216,7 +224,7 @@
"item":"가운데 아래"
},
"2-01":{
"path":"boolean(//SECTION[2]//PAGEBORDERFILL[@Type='Both']/@HeaderInside='true' and //BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
"path":"boolean(//PAGEBORDERFILL[@Type='Both']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
"searchValue": null,
"value":true,
"points": 4,
@@ -224,7 +232,7 @@
"item": ""
},
"2-02":{
"path":"//NUMBERINGLIST/@Count > 1",
"path":"count(//SECTION)>1",
"searchValue": null,
"value":true,
"points": 3,
@@ -242,7 +250,7 @@
"2-04":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "컬러푸드",
"value":"11339",
"value":11339,
"points": 1,
"category": "",
"item": ""
@@ -250,7 +258,7 @@
"2-05":{
"path":"//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "컬러푸드",
"value":"3402",
"value":3402,
"points": 1,
"category": "",
"item": ""
@@ -330,7 +338,7 @@
"2-15":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
"searchValue": null,
"value":"11339",
"value":11339,
"points": 2,
"category": "",
"item": "15"
@@ -338,7 +346,7 @@
"2-16":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
"searchValue": null,
"value":"8504",
"value":8504,
"points": 2,
"category": "",
"item": ""
@@ -346,7 +354,7 @@
"2-17":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
"searchValue": null,
"value":"0",
"value":0,
"points": 2,
"category": "",
"item": ""
@@ -354,13 +362,13 @@
"2-18":{
"path":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
"searchValue": null,
"value":"6520",
"value":6520,
"points": 2,
"category": "",
"item": ""
},
"2-19":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='1. 컬러푸드란']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "1. 컬러푸드란",
"value":"굴림",
"points": 1,
@@ -368,15 +376,15 @@
"item": ""
},
"2-20":{
"path":"//CHARSHAPE[@Id=//CHAR[text()='1. 컬러푸드란']/parent::TEXT/@CharShape]/@Height",
"path":"//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"searchValue": "1. 컬러푸드란",
"value":"1100",
"value":1100,
"points": 2,
"category": "",
"item": ""
},
"2-21":{
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='1. 컬러푸드란']/parent::TEXT/@CharShape]/BOLD)",
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"searchValue": "1. 컬러푸드란",
"value":true,
"points": 1,
@@ -384,7 +392,7 @@
"item": ""
},
"2-22":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='2. 컬러푸드의 효능']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "2. 컬러푸드의 효능",
"value":"굴림",
"points": 1,
@@ -392,15 +400,15 @@
"item": ""
},
"2-23":{
"path":"//CHARSHAPE[@Id=//CHAR[text()='2. 컬러푸드의 효능']/parent::TEXT/@CharShape]/@Height",
"path":"//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"searchValue": "2. 컬러푸드의 효능",
"value":"1100",
"value":1100,
"points": 1,
"category": "",
"item": ""
},
"2-24":{
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='2. 컬러푸드의 효능']/parent::TEXT/@CharShape]/BOLD)",
"path":"boolean(//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"searchValue": "2. 컬러푸드의 효능",
"value":true,
"points": 1,
@@ -408,7 +416,7 @@
"item": ""
},
"2-25":{
"path":"boolean(//CHAR[contains(text(),'항산화 작용')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'산화를 억제하는 작용')])",
"path":"boolean(//CHAR[contains(text(),'{searchValue}')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'산화를 억제하는 작용')])",
"searchValue": "항산화 작용",
"value":true,
"points": 3,
@@ -416,7 +424,7 @@
"item": ""
},
"2-26":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'산화를 억제하는 작용')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "산화를 억제하는 작용",
"value": "굴림",
"points": 2,
@@ -424,9 +432,9 @@
"item": ""
},
"2-27":{
"path":"//CHARSHAPE[@Id=//CHAR[contains(text(),'산화를 억제하는 작용')]/parent::TEXT/@CharShape]/@Height",
"path":"//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "산화를 억제하는 작용",
"value":"900",
"value":900,
"points": 2,
"category": "",
"item": ""
@@ -440,20 +448,20 @@
"item": ""
},
"2-29":{
"path":"boolean(//CHAR[text()='서로 다른 색과 맛이'])",
"path":"boolean(//CHAR[contains(text(),'맛을')])",
"searchValue": null,
"value":false,
"value":true,
"points": 2,
"category": "",
"item": ""
"category": "편집",
"item": "'이' → '을' 글자바꿈"
},
"2-30":{
"path":"boolean(//CHAR[text()='튼튼하게 혈관을'])",
"path":"boolean(//CHAR[contains(text(),'을 튼')])",
"searchValue": null,
"value":false,
"value":true,
"points": 2,
"category": "",
"item": ""
"category": "편집",
"item": "'튼튼하게' / '혈관을' 순서바꿈"
},
"2-31":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
@@ -466,7 +474,7 @@
"2-32":{
"path":"//CHARSHAPE[@Id=//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "과일야채 항산화지수 비교",
"value": "1100",
"value": 1100,
"points": 1,
"category": "",
"item": ""
@@ -522,7 +530,7 @@
"2-39":{
"path":"//CHARSHAPE[@Id=//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
"searchValue": null,
"value":"1000",
"value":1000,
"points": 2,
"category": "",
"item": ""
@@ -538,15 +546,15 @@
"2-41":{
"path":"",
"searchValue": null,
"value":true,
"points": 2,
"value":null,
"points": 3,
"category": "",
"item": ""
},
"2-42":{
"path":"//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
"searchValue": null,
"value":"22677",
"value":22677,
"points": 2,
"category": "",
"item": ""
@@ -554,7 +562,7 @@
"2-43":{
"path":"//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
"searchValue": null,
"value":"25511",
"value":25511,
"points": 2,
"category": "",
"item": ""
@@ -562,7 +570,7 @@
"2-44":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -570,7 +578,7 @@
"2-45":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -578,7 +586,7 @@
"2-46":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -586,7 +594,7 @@
"2-47":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -594,7 +602,7 @@
"2-48":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -602,7 +610,7 @@
"2-49":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -610,7 +618,7 @@
"2-50":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -618,7 +626,7 @@
"2-51":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -626,7 +634,7 @@
"2-52":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -634,7 +642,7 @@
"2-53":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -642,7 +650,7 @@
"2-54":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""
@@ -650,7 +658,7 @@
"2-55":{
"path":"",
"searchValue": null,
"value":true,
"value":null,
"points": 2,
"category": "",
"item": ""

View File

@@ -0,0 +1,666 @@
{
"0-1":{
"path":"boolean(//PAGEMARGIN[@Bottom='5669' and @Footer='2834' and @Gutter='0' and @Header='2834' and @Left='5669' and @Right='5669' and @Top='5669'])",
"searchValue": null,
"value":true,
"points": 4,
"category": "용지설정",
"item": "A4용지, 왼쪽/오른쪽/위쪽/아래쪽 (각20mm), 머리말/꼬리말 (10mm), 제본(0mm)"
},
"0-2":{
"path":"boolean(//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE/FONTID/@Hangul]/@Name='바탕' and //CHARSHAPE/@Height='1000' and //PARASHAPE/PARAMARGIN/@LineSpacing='160' and //PARASHAPE/@Align='Justify')",
"searchValue": null,
"value":true,
"points": 4,
"category": "기본설정",
"item": "글꼴 (바탕, 10pt), 양쪽정렬, 줄간격 (160%)"
},
"0-3":{
"path":"",
"searchValue": null,
"value":null,
"points": 40,
"category": "오타감점",
"item": "오타 1개 -2점"
},
"1-1":{
"path": "//SECTION[1]//TEXTART[@Text='{searchValue}']/TEXTARTSHAPE/@FontName",
"searchValue": "즐거운컬러푸드영양교실",
"value": "궁서체",
"points": 2,
"category": "글맵시",
"item":"글씨체 (궁서체)"
},
"1-2": {
"path": "//SECTION[1]//TEXTART[@Text='{searchValue}']/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "즐거운컬러푸드영양교실",
"value": "10040115",
"points": 2,
"category": "글맵시",
"item":"채우기 : 색상(RGB:51,51,153)"
},
"1-3": {
"path": "//SECTION[1]//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Width",
"searchValue": "즐거운컬러푸드영양교실",
"value": 36850,
"points": 2,
"category": "글맵시",
"item":"크기-너비 (130mm)"
},
"1-4": {
"path": "//SECTION[1]//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/SIZE/@Height",
"searchValue": "즐거운컬러푸드영양교실",
"value": 5669,
"points": 2,
"category": "글맵시",
"item":"크기-높이 (20mm)"
},
"1-5": {
"path": "//SECTION[1]//TEXTART[@Text='{searchValue}']/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "즐거운컬러푸드영양교실",
"value": "true",
"points": 2,
"category": "글맵시",
"item":"위치 (글자처럼 취급)"
},
"1-6": {
"path": "//PARASHAPE[@Id=//SECTION[1]//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align",
"searchValue": "즐거운컬러푸드영양교실",
"value": "Center",
"points": 2,
"category": "글맵시",
"item":"정렬 (가운데 정렬)"
},
"1-7":{
"path": "",
"searchValue": "즐거운컬러푸드영양교실",
"value": null,
"points": 2,
"category": "글맵시",
"item":"글맵시모양 (육안확인)"
},
"1-8": {
"path": "boolean(//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][BOLD])",
"searchValue": "‘즐거운 컬러푸드 영양교실’",
"value": true,
"points": 2,
"category": "글꼴속성",
"item":"진하게"
},
"1-9": {
"path": "boolean(//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
"searchValue": "‘즐거운 컬러푸드 영양교실’",
"value": true,
"points": 2,
"category": "글꼴속성",
"item":"기울임"
},
"1-10": {
"path": "string-length(//SECTION[1]//CHAR[contains(text(),'♤')]) - string-length(translate(//SECTION[1]//CHAR[contains(text(),'♤')], '♤', '')) + string-length(//SECTION[1]//CHAR[contains(text(),'※')]) - string-length(translate(//SECTION[1]//CHAR[contains(text(),'※')], '※', ''))",
"searchValue": null,
"value": 3.0,
"points": 3,
"category": "특수문자",
"item":"♤, ♤, ※"
},
"1-11": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "행사안내",
"value": "굴림체",
"points": 1,
"category": "글꼴 속성",
"item":"글씨체 (굴림체)"
},
"1-12": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "행사안내",
"value": "Center",
"points": 1,
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"1-13": {
"path": "boolean(//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][ITALIC])",
"searchValue": "홈페이지(http://www.ihd.or.kr)를 통해 선착순 접수",
"value": true,
"points": 1,
"category": "글꼴 속성",
"item":"기울임"
},
"1-14": {
"path": "boolean(//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape][UNDERLINE])",
"searchValue": "홈페이지(http://www.ihd.or.kr)를 통해 선착순 접수",
"value": true,
"points": 1,
"category": "글꼴 속성",
"item":"밑줄"
},
"1-15": {
"path": "boolean(//PARASHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Left=3600 and //PARASHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/ancestor::P/following-sibling::P[1]/@ParaShape]/PARAMARGIN/@Indent=-2000)",
"searchValue": "※ 기타",
"value": true,
"points": 2,
"category": "문단모양",
"item":"왼쪽여백 (18pt), 내어쓰기 (10pt)"
},
"1-16": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "2024. 1. 27.",
"value": 1100,
"points": 2,
"category": "글꼴 속성",
"item":"크기 (11pt)"
},
"1-17": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "2024. 1. 27.",
"value": "Center",
"points": 1,
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"1-18": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "용일동보건소",
"value": "한양중고딕",
"points": 2,
"category": "글꼴 속성",
"item":"글씨체 (중고딕)"
},
"1-19": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "용일동보건소",
"value": 2200,
"points": 2,
"category": "글꼴 속성",
"item":"크기 (22pt)"
},
"1-20": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "용일동보건소",
"value": "Center",
"points": 2,
"category": "글꼴 속성",
"item":"정렬 (가운데 정렬)"
},
"1-21": {
"path": "//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "DIAT",
"value": "돋움체",
"points": 2,
"category": "머리말",
"item":"글꼴 (돋움체)"
},
"1-22": {
"path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"searchValue": "DIAT",
"value": 900,
"points": 2,
"category": "머리말",
"item":"크기 (9pt)"
},
"1-23": {
"path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align",
"searchValue": "DIAT",
"value": "Right",
"points": 2,
"category": "머리말",
"item":"정렬 (오른쪽 정렬)"
},
"1-24": {
"path": "//PAGENUM/@FormatType",
"searchValue": null,
"value": "LatinCapital",
"points": 2,
"category": "쪽번호",
"item":"쪽 번호 매기기 (A,B,C 순으로)"
},
"1-25": {
"path": "//PAGENUM/@Pos",
"searchValue": null,
"value": "BottomCenter",
"points": 2,
"category": "쪽번호",
"item":"가운데 아래"
},
"2-01":{
"path":"boolean(//SECTION[2]//PAGEBORDERFILL[@Type='Both']/@HeaderInside='true' and //BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')",
"searchValue": null,
"value":true,
"points": 4,
"category": "",
"item": ""
},
"2-02":{
"path":"count(//SECTION)>1",
"searchValue": null,
"value":true,
"points": 3,
"category": "",
"item": ""
},
"2-03":{
"path":"/HWPML/BODY/SECTION[2]/P[2]/TEXT/COLDEF/@Count=2",
"searchValue": null,
"value":true,
"points": 3,
"category": "",
"item": ""
},
"2-04":{
"path":"//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Width",
"searchValue": "컬러푸드",
"value":11339,
"points": 1,
"category": "",
"item": ""
},
"2-05":{
"path":"//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/SIZE/@Height",
"searchValue": "컬러푸드",
"value":3402,
"points": 1,
"category": "",
"item": ""
},
"2-06":{
"path":"//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::LINESHAPE/@Style",
"searchValue": "컬러푸드",
"value":"DoubleSlim",
"points": 2,
"category": "",
"item": ""
},
"2-07":{
"path":"//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/@Ratio>0",
"searchValue": "컬러푸드",
"value":true,
"points": 1,
"category": "",
"item": ""
},
"2-08":{
"path":"//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/descendant::WINDOWBRUSH/@FaceColor",
"searchValue": "컬러푸드",
"value":"12813762",
"points": 2,
"category": "",
"item": ""
},
"2-09":{
"path":"//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::RECTANGLE/SHAPEOBJECT/POSITION/@TreatAsChar",
"searchValue": "컬러푸드",
"value":"true",
"points": 1,
"category": "",
"item": ""
},
"2-10":{
"path":"//PARASHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align",
"searchValue": "컬러푸드",
"value": "Center",
"points": 1,
"category": "",
"item": ""
},
"2-11":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "컬러푸드",
"value":"한양견고딕",
"points": 1,
"category": "",
"item": ""
},
"2-12":{
"path":"boolean(//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height='1600' and //CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"searchValue": "컬러푸드",
"value":true,
"points": 1,
"category": "",
"item": ""
},
"2-13":{
"path":"//PARASHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/ancestor::P[1]/@ParaShape]/@Align",
"searchValue": "컬러푸드",
"value":"Center",
"points": 1,
"category": "",
"item": ""
},
"2-14":{
"path":"boolean(//SECTION[2]//PICTURE/descendant::SHAPECOMMENT[contains(text(),'{searchValue}')])",
"searchValue": "그림D.jpg",
"value":true,
"points": 2,
"category": "",
"item": "14"
},
"2-15":{
"path":"//SECTION[2]//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width",
"searchValue": null,
"value":11339,
"points": 2,
"category": "",
"item": "15"
},
"2-16":{
"path":"//SECTION[2]//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Height",
"searchValue": null,
"value":8504,
"points": 2,
"category": "",
"item": ""
},
"2-17":{
"path":"//SECTION[2]//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@HorzOffset",
"searchValue": null,
"value":0,
"points": 2,
"category": "",
"item": ""
},
"2-18":{
"path":"//SECTION[2]//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/POSITION/@VertOffset",
"searchValue": null,
"value":6520,
"points": 2,
"category": "",
"item": ""
},
"2-19":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "1. 컬러푸드란",
"value":"굴림",
"points": 1,
"category": "",
"item": ""
},
"2-20":{
"path":"//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"searchValue": "1. 컬러푸드란",
"value":1100,
"points": 2,
"category": "",
"item": ""
},
"2-21":{
"path":"boolean(//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"searchValue": "1. 컬러푸드란",
"value":true,
"points": 1,
"category": "",
"item": ""
},
"2-22":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "2. 컬러푸드의 효능",
"value":"굴림",
"points": 1,
"category": "",
"item": ""
},
"2-23":{
"path":"//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height",
"searchValue": "2. 컬러푸드의 효능",
"value":1100,
"points": 1,
"category": "",
"item": ""
},
"2-24":{
"path":"boolean(//CHARSHAPE[@Id=//SECTION[2]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/BOLD)",
"searchValue": "2. 컬러푸드의 효능",
"value":true,
"points": 1,
"category": "",
"item": ""
},
"2-25":{
"path":"boolean(//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/following-sibling::FOOTNOTE/descendant::CHAR[contains(text(),'산화를 억제하는 작용')])",
"searchValue": "항산화 작용",
"value":true,
"points": 3,
"category": "",
"item": ""
},
"2-26":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "산화를 억제하는 작용",
"value": "굴림",
"points": 2,
"category": "",
"item": ""
},
"2-27":{
"path":"//CHARSHAPE[@Id=//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "산화를 억제하는 작용",
"value":900,
"points": 2,
"category": "",
"item": ""
},
"2-28":{
"path":"(count(//SECTION[2]//CHAR[contains(text(),'미생물')][contains(text(),'微生物')])+count(//SECTION[2]//CHAR[contains(text(),'해충')][contains(text(),'害蟲')])+count(//SECTION[2]//CHAR[contains(text(),'재생')][contains(text(),'再生')])+count(//SECTION[2]//CHAR[contains(text(),'노화')][contains(text(),'老化')])+count(//SECTION[2]//CHAR[contains(text(),'오골계')][contains(text(),'烏骨鷄')]))*2",
"searchValue": null,
"value": 10,
"points": 10,
"category": "",
"item": ""
},
"2-29":{
"path":"boolean(//SECTION[2]//CHAR[contains(text(),'맛을')])",
"searchValue": null,
"value":true,
"points": 2,
"category": "편집",
"item": "'이' → '을' 글자바꿈"
},
"2-30":{
"path":"boolean(//SECTION[2]//CHAR[contains(text(),'을 튼')])",
"searchValue": null,
"value":true,
"points": 2,
"category": "편집",
"item": "'튼튼하게' / '혈관을' 순서바꿈"
},
"2-31":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": "과일야채 항산화지수 비교",
"value":"굴림체",
"points": 1,
"category": "",
"item": ""
},
"2-32":{
"path":"//CHARSHAPE[@Id=//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/@Height",
"searchValue": "과일야채 항산화지수 비교",
"value": 1100,
"points": 1,
"category": "",
"item": ""
},
"2-33":{
"path":"boolean(//CHARSHAPE[@Id=//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape]/BOLD)",
"searchValue": "과일야채 항산화지수 비교",
"value":true,
"points": 1,
"category": "",
"item": ""
},
"2-34":{
"path":"//PARASHAPE[@Id=//SECTION[2]//CHAR[contains(text(),'{searchValue}')]/ancestor::P/@ParaShape]/@Align",
"searchValue": "과일야채 항산화지수 비교",
"value": "Center",
"points": 1,
"category": "",
"item": ""
},
"2-35":{
"path":"//BORDERFILL[@Id=//SECTION[2]//TABLE/ROW[1]/CELL/@BorderFill]/FILLBRUSH/WINDOWBRUSH/@FaceColor",
"searchValue": null,
"value": "6268159",
"points": 2,
"category": "",
"item": ""
},
"2-36":{
"path":"boolean(//CHARSHAPE[@Id=//SECTION[2]//TABLE/ROW[1]/descendant::TEXT/@CharShape]/BOLD)",
"searchValue": null,
"value":true,
"points": 2,
"category": "",
"item": ""
},
"2-37":{
"path":"boolean(//BORDERFILL[@Id=//SECTION[2]//TABLE/ROW[1]/CELL/@BorderFill]/BOTTOMBORDER[@Type='DoubleSlim' and @Width='0.5mm'])",
"searchValue": null,
"value":true,
"points": 2,
"category": "",
"item": ""
},
"2-38":{
"path":"//FONTFACE[@Lang='Hangul']/FONT[@Id=//CHARSHAPE[@Id=//SECTION[2]//TABLE/ROW/descendant::TEXT/@CharShape]/FONTID/@Hangul]/@Name",
"searchValue": null,
"value":"궁서",
"points": 2,
"category": "",
"item": ""
},
"2-39":{
"path":"//CHARSHAPE[@Id=//SECTION[2]//TABLE/ROW/descendant::TEXT/@CharShape]/@Height",
"searchValue": null,
"value":1000,
"points": 2,
"category": "",
"item": ""
},
"2-40":{
"path":"//PARASHAPE[@Id=//SECTION[2]//TABLE/ROW/descendant::P/@ParaShape]/@Align",
"searchValue": null,
"value":"Center",
"points": 2,
"category": "",
"item": ""
},
"2-41":{
"path":"",
"searchValue": null,
"value":null,
"points": 3,
"category": "",
"item": ""
},
"2-42":{
"path":"//SECTION[2]//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Width",
"searchValue": null,
"value":22677,
"points": 2,
"category": "",
"item": ""
},
"2-43":{
"path":"//SECTION[2]//OLE[@BinItem=//BINITEM[@Format='OLE']/@BinData]/descendant::SIZE/@Height",
"searchValue": null,
"value":25511,
"points": 2,
"category": "",
"item": ""
},
"2-44":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-45":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-46":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-47":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-48":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-49":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-50":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-51":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-52":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-53":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-54":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
},
"2-55":{
"path":"",
"searchValue": null,
"value":null,
"points": 2,
"category": "",
"item": ""
}
}

View File

@@ -1,11 +0,0 @@
{
"1":{
"path": "//TABLE/ROW[1]/CELL/@BorderFill",
"path2": "boolean(//CHARSHAPE[@Id='{path_result_list}']/BOLD)",
"searchValue": null,
"value": true,
"points": 2,
"category": "표",
"item":"진하게"
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

12
test.py
View File

@@ -53,8 +53,8 @@ def convert_hwp_to_xml(input_folder, output_folder):
# 자동화 보안 설정
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
# hwp.XHwpWindows.Item(0).Visible = False
hwp.XHwpWindows.Item(0).Visible = True
hwp.XHwpWindows.Item(0).Visible = False
# hwp.XHwpWindows.Item(0).Visible = True
# 출력 폴더가 없으면 생성
os.makedirs(output_folder, exist_ok=True)
@@ -126,12 +126,12 @@ if __name__ == "__main__":
# 변환할 폴더 경로 설정
# input_folder = r"C:\Users\dra\project\HWP-Scoring\input" # HWP 파일이 있는 폴더
# output_folder = r"C:\Users\dra\project\HWP-Scoring\output" # XML 파일을 저장할 폴더
input_folder = r"C:\Users\dra\project\HWP-Scoring\input" # HWP 파일이 있는 폴더
output_folder = r"C:\Users\dra\project\HWP-Scoring\output" # XML 파일을 저장할 폴더
# 변환할 폴더 경로 설정
input_folder = r"C:\Users\gzero-ser7-win11\Project\KAIT\hwpTest\input" # HWP 파일이 있는 폴더
output_folder = r"C:\Users\gzero-ser7-win11\Project\KAIT\hwpTest\output" # XML 파일을 저장할 폴더
# input_folder = r"C:\Users\gzero-ser7-win11\Project\KAIT\hwpTest\input" # HWP 파일이 있는 폴더
# output_folder = r"C:\Users\gzero-ser7-win11\Project\KAIT\hwpTest\output" # XML 파일을 저장할 폴더
# output_folder = r"\hwp-output" # HWP 파일이 있는 폴더

1
zzz.xbook Normal file
View File

@@ -0,0 +1 @@
[{"kind":1,"language":"markdown","value":"# XPath Notebook\nDate: 2025-01-16     Time: 13:51:18"},{"kind":2,"language":"xpath","value":"boolean(//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@HeaderInside='true' and //BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim')"},{"kind":2,"language":"xpath","value":"//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=1]/*[contains(local-name(), 'BORDER')]/@Type='DoubleSlim'"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=1]"},{"kind":2,"language":"xpath","value":"boolean(//CHARSHAPE[@Id=//CHAR[contains(text(),'‘즐거운 컬러푸드 영양교실’')]/parent::TEXT/@CharShape][BOLD])"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text()[1],'‘즐거운 컬러푸드 영양교실’')]/parent::TEXT/@CharShape]"},{"kind":2,"language":"xpath","value":"boolean(//CHARSHAPE[@Id=//CHAR[contains(text()[1],'‘즐거운 컬러푸드 영양교실’')]/parent::TEXT/@CharShape][BOLD])"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text())[1],'‘즐거운 컬러푸드 영양교실’']/parent::TEXT/@CharShape]"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='DIAT']/parent::TEXT/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//CHAR[contains(text(),\"2024. 1. 27.\")]/parent::TEXT/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//BINDATA[@Id=//BINITEM[@Format=\"OLE\"]/@BinData]/text()"},{"kind":2,"language":"xpath","value":"//BINITEM[@Format=\"OLE\"]/@BinData"}]

49
수정사항.txt Normal file
View File

@@ -0,0 +1,49 @@
문제2
- 글상자-크기(너비,높이) 채점 안됨 (4, 5)
- 그림삽입-크기(너비,높이) 채점 안됨 (15, 16)
- 그림삽입-위치 (어울림 : 세로-쪽의 위 23mm) 채점 안됨 (18)
>> mm에서 포인트로 변환 후 비교하여 채점하는 과정에서 소수점 단위의 오차가 발생
>> 너비, 높이 등 길이 채점 시 오차범위 추가
- 편집-문구 ("…서로 다른 색과 맛이…") "이" → "을" 글자바꿈 채점 안됨
- 편집-문구 ("…튼튼하게 혈관을…") "튼튼하게" / "혈관을" 순서바꿈 채점 안됨
>> 채점 방식 수정
수시5-002294-우시현
- 1페이지에 문제2 답안 작성, 2페이지는 빈페이지 => 문제2 채점 제외대상
ㄴ> (문제1에 머릿말은 채점해주신대로 점수가 들어가는게 맞을 것 같습니다. 문제2만 채점 점수 없는걸로 해주시면 됩니다)
>> 페이지 별 채점 채점 적용
<워드프로세서>
1. 문제2-쪽테두리 설정은 해당 페이지에 쪽테두리가 지시사항 처럼 설정되어 있으면 정답
> (구역이 나뉘어져 있지 않는 경우, 양쪽이 아닌 짝수로 설정한 경우가 있음)
>> 특정 페이지만 검사하지 않고 쪽테두리 적용이 되어있으면 정상 채점
2. 문제2-속성-문구1-크기 배점 1점인데 2점씩 채점
>> 채점 기준 수정
3. 문제1-특수문자 (009866-성유나) 특수문자 3개 다 있는데 2점
>> 채점 기준 수정
4. 문제2-다단-구역나누기 (009866-성유나) 구역이 나누어져 있지 않은데 점수 3점받음
>> 채점 기준 수정
5. 문제2-다단-다단2단 (009866-성유나),(009890-오지은) 다단이 나누이져 있는데 감점
>> 채점 기준 수정
6. 문제2-속성-문구1,2 (009866-성유나),(009890-오지은) 글씨체(굴림),크기11pt,진하게 다되어있는데 감점
>> 채점 기준 수정
7. 오타(띄어쓰기 개수만큼 차감)
> 문제2의 표내에 오타가 있어서 차트 범주에도 오타가 있더라도, 1번만 차감
8. 쪽테두리는 구역이 나뉘어져 있지 않더라도 해당 페이지(2페이지)에 쪽테두리가 지시사항처럼 설정되었으면 정답
>> 1. 쪽나눔 (한글 내부에서 Control+Enter 혹은 Enter여러번으로 다음 쪽으로 이동)의 경우 SECTION 태그가 생성되지 않음
2. Control+Enter
"path": "sum(//CHAR[contains(text(),'♤')]/string-length(text())) - sum(//CHAR[contains(text(),'♤')]/string-length(translate(text(), '♤', '')))+sum(//CHAR[contains(text(),'※')]/string-length(text()))-//CHAR[contains(text(),'※')]/string-length(translate(text(),'※',''))",
기존 채점 기준은 오탈자가 나면 채점 기준에서 제외
현재 개발과정의 채점 기준은 문구의 오탈자를 포함해 유사한 단어를 찾아 채점 하는 방식이므로
기존 채점방식과 최종 점수가 상이할 가능성이 존재