From 872d5f6da6d55a569a87a71e20fe331309463693 Mon Sep 17 00:00:00 2001 From: dragdra Date: Wed, 14 May 2025 18:01:36 +0900 Subject: [PATCH] =?UTF-8?q?v2=20-=20=EB=AC=B8=EC=A0=9C2=2036=EB=AC=B8?= =?UTF-8?q?=ED=95=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 250514_DIW_2504회_A형_TEST.xlsx | Bin 0 -> 9498 bytes DIW_2504A_new.json | 276 +++++++++++++++++- diwScoring2.py | 35 ++- zzz.xbook | 2 +- .../2504/excel_채점기준표/DIW_2504A.xlsx | Bin 20918 -> 20976 bytes 5 files changed, 301 insertions(+), 12 deletions(-) create mode 100644 250514_DIW_2504회_A형_TEST.xlsx diff --git a/250514_DIW_2504회_A형_TEST.xlsx b/250514_DIW_2504회_A형_TEST.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8d23596b50fd0dc381e6e6d7836c7a46e36fb760 GIT binary patch literal 9498 zcmaJ{2RvL|)7M+{5=4*QiC#hwq7yX)OM=x_Z$XIOdyC$QvU&-k6Vamg-bIhzeT$Um z^}O$Q{p`B#%$%A3%sDf6&QX+sg+qb5x!A)BHE;j;^??BS23Q-I*{~}9qCvW)F=_bn zbp`TF8U_mL!5tu-!WU2NFhy~A8nUE99S*N?3UP~gn!JkBiN4B~t z*JzQ^s_kVSNIj)3ucqS+J)tpnd`Nh8?i<5euQfu(@_EdCTHrSv|Aq`10*AiETSaRN z%fG1on+z60=4kc@)_)V+$bk^p8X15L{*c|F|BWnfsSq9t%8m#M3g@3>x5Vr$jv%uw z4F!uyZrp1IuWj&!LLtr&^P6__N={JNXA-AOYRxxd{xDLshhU>nSOnA!A8mxq%9djA zvj>|4@8iu#D$&=}$8e}$tH=VSYEelv$(Z(k9$)Q0jo2IBz?jIIKtDWOoy+R&w zBA6;QX15*W6U&btfkF#yC`h3Vl*qKXoKXEz_!t`}YL39KiWX-bhqF@>9md~Zt6iH` zi9y>z`v)vZSC=3)a<|-PzY>o$r0HjKlzq4yRWI`^rU?dHHIT^IPNbu{k%Vy0uOcLZ z(a_h&#lGvOAh#B)>~8XNU0U@~7-}O%!Ce?VC#7qzvme%GV>ehPSy%9`nqwsJ@bp>1 zndf~w^!co~!rs7!q9MEs@D&Zg^D4DIEC+h*xM}bVyOL{j$k`?if$qARsTQzr0%n*A zo7HMAI&^w!0rs$nIT^vOS2nHUeuU?e-|F0Tbj*ErX%D{>eR72D>SzF-&RgK3d&9~1 zN)(9f!@0Z$uirc#gEs^1n4{Jx6J=UZm?-=*e?&8A$A%s5gFK5Gr-(^R1o9E|X#3As ziiz}%8*oG%d>yeenX<7WE|&|wqpZnkkY7?^C)bO$)y4MEP_j!n__YV|d4>B{0XU3{ z`8z__8wtK^y};Rer#%Dz*=8xDw(FzCoQA7Cadl#MEWquk{aAs)(!e{^ zNS3NbJfx2_v}pvs-KTMJ-^wh!q}XN-DU8|@SI-1~CSK2Q4uPR`aU126CF~d_V|pc- ze{MSU?$?9*=~j~O8levcleXw|=D%|yqb*Oy(Q{9ce)Ywheq+*xmQ7!vZQ{3CB)!ez zDYy_u^*qh>Ih-(gt1fK7w7~iUmec2H&bWtcTw>OtO3q<2+02i`bPNp9ot&{W{Q-xG zUSWudiLwsdR`sRzG93Y0tPj7DJd#j;S*rim`RVsDI2^GPv}W=CS;i#(><(j4!ppVE z9h=FS51_!LG>w$T%aqp#G|4oza3klw=$C0?4WT4w&zY}*@2kz)3g3;4yjh4w+(9-l z1N0D7)7#<1&Y7{nrIQ+ExA6%F&jHg4Js!Z1G=$Hs{I`U=DzH^;#R|SOEG?VM0 zO=+pf7G~8g8P>kzwjO3UGn zH=2|F$JN5(OA^aAXE*H*HI_t^1owKqCUaJ{&Jm;0c~NoVc*RFA-RS0AQtjOPCBwu( ztX(rIK!t)*U?Ep*`0-~pC1=j=X`gj0+?vDyIEq?Yui?P&Kzu%Ym4i6%>L)!ZZ>=TA z=or7-uQYh3zbm7INwcDjT$#u-B}Si}hm|*NgI+zz5Xt@aN*btWXqNj`zWB(VCeb1T zG)7|X2%Ire{v4mW`QVHnPl!>Wgt8v7<3*qir3aovu5#3h2QNaTfR9Dor@*Ho+GED0 zsHQ;iR|=y?D|&}aFAwE0@@lmL3$57uGqQwpPELf@X1peQqv+!rUN}Lif4{o0fDc=Y zDHy#%_?=DemUq&*roP9}P*A*(fy%b z(vo`fSYknYkTlimQt~y)g>(A{ktib8gySDJ^0N=ik_sa&4n#DRBLp+3L?{bX43#6Q zmIad_lh&N72;3C0$sVSmiq!6Pc(MQ%Bg6B_Jp9<`#n{0u(GKM?mcBw^iah9Jy1^B? z)o;;g^|ONq30As2mEF37($|yCt}Z+=O6frQczHvf99}p0ksN9mkWXvOPscX_zh)_5 zh+&&#=6SE4!j8v!Q?_xb;aJ+%6<@)_-lAz`Wdn3MWGYn(cpTDq<)k&GCZr4LAUm+4 z(B?dp?Kv@hl$3xw$uS@8PD^{va-s?>KS7pl)QW=)zX2z(eqYD!qJV_gliu)|+V1T=W!@DD6Q z$jA@}zV_m4q~eT9e6seY&0v@KqR)W0tmo}^HTJZJ{Ygv=J+n%O`bj66tNcRQz>7#5 zb1WA?Jl=OOIL3=0#zv|~QuT|MY<79(L(%u-*#n8$SCkrIx`J1tRCv_&STRmWVg_-# zF8QyR-x*tA_B=3YnpsMJ!Yo%x!7FuGQkeWP0+0MC9rI{CjX9!ZmE@5a}A+L=1k;}_d@a%kco)$+S7FND4R zjErSA3bKvUshVOl;?b3G2SnvIpI}MNo1>Kn>Rb$t%HKy!5}SZEZ*IpQ>?4tTfPuRY+6k}|?VQ#)BRP|%U!#U(be?z$kg{FHuBB^lF@t2y8 zV%oY>a=unG{#LW~Q#R4&iwY13-Z+{cM~t(X;?caP#E#d99)R*fIM~Qf;vg04fHS>b zVrY~+iAcL2_FCdlBnkmfa9@a{ubS}0A)nzIA+fG>Zd8Kr;>v34@oq;{DQHfu<~oqd z4eEDj-h~@ts*SokA{5jQ!T%XHJ-c z$XFg!Iu&2Y^(BgXT{^I4pVYd^4@fW*u1_jw`uX(aZB>#BYeHq-ag~%4mkiCat7=jH z|jgT&S=(Y5*)T|FTTHZx~r$UgZ>^LW4Ll%$5%eG!`$w2*$TkZ)>27!7&?TP zUsdlLoO-TZVX|I1W2^q&VKsIBBmQ7p`Oc4RL&q&s8wX`!he;EFD~M)mzYyb~hNvpOQRd=43nx2*XQO% zLBdDnc~x7xyyL3vgP&&I+Ct|oChJHYbdzOu^6ZX>8deIGVtd~w^K%Fu1*`Rf)OW6) z@<`HP7)-t|tg-1nHt(r^y+5;cp>Av1J3RrI1PeH9xJp$G4ziGjVB=|9ISdZ5Hbcj8 ziXrBp&xQh?5MD7Ay11QzLqI|#p}in$evfwim>m4G_IiU!o^w~AMfPlHimSO5S*2wx zGo9J|>}%QcK4BU2uqDHjFtY=Saf6`cTyMg$AT&`uT%e?7AY7HmZX$eD29(+C3}es& zD)M&N91D^Vuqg>!>y{!E?pS0O{=xPOXeOfJO9Fn^QY6fdWQy@Ja_7#+Ol4MZM+%m1 z(Bt1EKS-VsBd1&+sPw)-R(hy?!@SFf?Q%7!{9Xt}_m!ph%S4JMe97H51%*TJJK?*w z2ysRalYeY}V(kSj%yUV?crD00<`RoMzA%Q=7Zdf9 zsV_`!pLAM^hLq&$A5lSzmeET!#GcBn0a`9i4Lh%Q;PqF?p+!&GujBg~e9lKRHC^E& zpwccry4{fk-I*Y~0>C*NwY+|me`i7H>8RHg*HnYVe$nkH-3>GcMaT?~bxyDPZ!G-% zoM!N-;a1sOg83`130rkf2qeGd#aI7RzV&sy_wD^BI=|CVpR0A zf5(vSHkj`cC49hIw8XkKmd--Z2;Xyp1c!nKtz3+TM@;Nq^5PWr3I>74cL6gXlyJ-k z0Uf>ZRmR2Fbcp$VJgt z@e6?eLGZ`IUkvx}Cob*~q25FOd2z4tt;{`Fjj zlkM_M@-nV>wvPLH_!lNG)_bQKbpAjrq~x}8b@*q%Lx}w2qR~GPhYqDwyVd=H_2g_&P^b(dg!lhj7U>EtV{rD+fVw^SD2LSS0;MOCvRi@XIfT|M&^1qIKg=2R;y63 zc?fP&wOv_>z`K6ATSw_nGb!1ujP$Tfb;wjQQ2UEgerQebUZ|MT8rKqlLb(}-;-_Jn z<0;CeLH2OsjWc7~#TI(Re)5|aYT?|eD*5FdosO%rL7eHro%Q}a7;PJ$tF5;}{z1^* z6MgUbUWw4Ddd|%Za=8=HWf>QG821yfqSYrz@Znh+*0b#%vE!P#RX+TEwO+SDJAV$> zu9vMjBC;=p4FqvRmv_YXUu{ixR8FC0{8%1MT)^n9J!2ExXg^VOxSX4*OzwQ6&D{>Z zN}L|DJFc|4=wCYTjoP__{m-;5lZs764yh7dAzhgNQ6=8CVX~s8LlW39y#Z}|mtWl* zS6(!lWYDeasA#Hg9Zj$!6zB$-;Y3vJj8S394RPnsd_W}o?!rMTsS{Evfmj%P+_ zflE2V79E%^`!jTBG6!Db>i|tog^6Q;!qi+W(~szxgaDhsxy!GapGzyXvEICDqvpaH z-b1iQ$)c{nT#xvuW)puNt1s95;~-9w;gKM3!2u;{9v$2wQ5$~;k-$eI9pwiH+1TLf z&r(NzNtsTw6$-K)51H)KA092qu}7F4s&PvXYNM%=dHR(GR$**!X6b4Ys*WL#C5h~q z>O@dO=P>>3ow1Ag^nE0Ke&R#+cUBc!z3oEJfS?bw6&47Yg`%WIrO)Yg-Yh*HoE zox%x@qDIWm0yDkgaag}?dHE6`mqq-oV$Xx#Cx}rLwSd>dXLy*~QSg;ADoyIW6@jTs zqV&$lQ^Y#gN#pnWdM4MX>=%%zl0t=oLc4qSu(5q-W?*wu0S>E!6eig)uNY$*@N?Xs zXmW`&Vj}yeNwFCNrdy?$FR=O0P2-Mc9qc1$RMq?a&COgIk50F%+gEE(`0KQ!+>_(z ztJSbbli>*1qt~MH1)Bk+i%swnSy>EOqKpscxfp*gn`ur|=wirxWrBfHm2fl$u~THq z#>furJ;#@AlFts#d>BJRYoJFUCj+E{NA{dclO7 zB)M2SlbsMJzFg88e+A!`ic3M29cs)&vwqHFvI6KGE=yBYJ>bIvM?8+xQkI*i&jj+v z)}|+#hl(8M9L$SMgn`Zxc&Buh5HS7F3wKl#vkd=07GBcl`;&fAB7JvK8)@>FDy5o> z0Vwrs#FVS<(kvqtg0?1ClELXqjRVM1TMM5;uE?{=q{mi8&6@ESG}#iGy(9e);Od|>P#0Rkx16Z#O?0a`#-Jnfsxi&Rdq&cCg;rmM{}W{Sa4J zx+VX;#?WH&fo>*KMs#s#LJyL|z5>&7G_ggw&^{1E1U7eFWwCPHb}5doV+51EG;s84 znC%u0DzaFxw8ZLWMF8fQaT0{CjC%Hu4_}<|lOpO_9=6oIsxM-Kw{6I#80USzrjNDF zY*JOXa)t)3uo%>ab9cO)CG)gxfH4$?{?Em?6Gg5;0n#5yhAh4}?eEuO7Us4F=C%Np zca{b=+BcJ>N2SZ8g$?rpFT=DXI#W^FKT?dWoxAShbk@LNQm`M}anZ6y(1lXnbF zSfEas00(1Q(szg8uF9}J1VDflJ2s&sNzh@w(ii5Gz1QIs^cGPMNTo{1KGzn@C`Q5(q*Rp*ems*M9VA^ejIyN9Srg9h2&2GPLHvgM{Re3fvBB}> zI~i>hyo@qUtjUPi79o=Rtj&+zH{KLiVioZ|(+?Fe{L!U{>wV$fZ1tvg^$ULeM}4%5 z4$V&t`Au+j#=KdLAD>v#^iNi8DX?B$dLg-Sj5*Rae(>7c{4&x7 zF?}=pr}xQ6Ex*tW`)T57*i^NC(;sBQ1FZF4HbC+EpcecS54KQEysF zR=OBF3d1vsRjfu_tsHNnwc2WCFK2?Z2DM*6LZBG=e9D!{Vt>mA)5GrZR*;wD^n&ae z@pPmu%*b_%)xPb9L&AZe8bBehY_Q7$z|!lcLN=?m<9bx5lcCyPlpnd%Fr%fiBYd57 zG(WhrsLq3Ix?Obo9u;N9h#vS>n?OeUcEtxn z(=6V-jjEt_5`$A*?LdSQiN5+c=At?@~CylFkekvC(-rh+d+{kZx1PnY7~4YXhT zQvYpN@HJt>&>kcp1|Wg)=q`WVk==CL-dI?e-bBakCSgV7?fist6W^?h*~(0dqN|P) zEd-xKH){&}F(YqfgRkrJFtU9fxmdDbiy9fC=P#bt?zGY(m?Wu&QPU%pXK{eRcrLg_ z7z*Tm6L)Y}ZnE|Kh7Q*sr{AD*@u$99#a#8NM2~CA`FLrKia}xyU{|8OTue{SfLs1- zE(E5uGvU49{x%K}y!->`UE60Fm9W?nGKI|GprCN?kg_q-vo_FIwzW1k2i_+9_faA; zEo=ln*U}wLfo7lqkoknY-(yF0!I09nioR^Sj@D^}1#v{Dfk00ZaX~+H!cT67FGjBr z83j=H^4bLf5j*c9F>~HMeDRfjr-KcPCCwm^K&w1bp00+4PjHNJ*qfsI3p}^-Q$%_~OgFKicXUeCi762T6|wp3G^rg?BLJ8-8`A z^Xr#C6RpnFp_Bl4(Y~)QgNsI>*Yrxx_%d*@J)ymk2R_|Oc+1es?sk%wU3Pf7s|~C@ zf5EI)!7wS_VylS0u+~d>{qXhpzL+atSFi85V>|#2zo?}sws$t>6@MzfE`PCIv17bJ zr1MyAx@R7`3IAB1h&CeHZW|n?yC?z*1>Ks`ZWg(0(?^dd@IZv`sG%f@guEP-3tx7 z_4krYmzN5c8^l8&AoUo=ornGz#lhjV@-2`SJfyHkmm&(7$fL*Rara7vEidy|c$6PP zGR{Iz)F%W5i`3fM7|;sR{ebVWi_Qxcecjr)w10i%U~XQ3`X(ggnK6xbs7xS>1UZaU z+}hcRuA5C-Ksfhv#pWz1GBVGvj6D(zsym9Eq@|zxghGO()R0km_qynRRe0{$yz&kH4tj$QVbB3ag?x9Dl z1-#*T9Fw^d+0^HZ)n#%v2>w>1~j%q`;$l+vFnyJt?($yK*Qid{qHji z5Qjmoo8)wJ{a&kn^W4qB`)3&LXm38L{_xx`R{!5%H>=^@bu$o_^sf7Uv>X7INve+J{$0x?ar?IrvrWs1o=w;C)?k%0)G{~6L5e3>92sB zPW2!Ae(y&8W&gL@H@hu&*NvS6NVj(W$KK0->VALs7)!@#6`%U$~ zQb3TyDiEaqp~0<`+ZOwMDfi#;|4N~PRGt4t%IzEfeJS_f>HbP_!n>97_YLnp>-{?S zFKZg4=kQ;u-unXX7ixb6P(af2A4mQw+x~L@+mHVl<~YQ+n*aA{b-xJsJ1GA@+5Wkh z-kW82PQ0HY|H{!PxdZNg!u)H%orL>K_+JSKWPcp^yDU+ZfxkKI1ceRxQG#UUQu3R- F{{xjKT;c!# literal 0 HcmV?d00001 diff --git a/DIW_2504A_new.json b/DIW_2504A_new.json index c212857..aa365b0 100644 --- a/DIW_2504A_new.json +++ b/DIW_2504A_new.json @@ -87,7 +87,7 @@ "item": "문구 (클라우드컴퓨팅컨퍼런스)/⑤ 위치 (글자처럼 취급)" }, "6": { - "path": "//PARASHAPE[@Id=//TEXTART[@Text='{searchValue}']/ancestor::P/@ParaShape]/@Align", + "path":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']]/@ParaShape]/@Align", "searchValue": "클라우드컴퓨팅컨퍼런스", "value": "Center", "points": 2, @@ -184,7 +184,7 @@ "item": "문구 (● 참여안내 ●)/② 정렬 (가운데 정렬)" }, "17": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]", + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "searchValue": "홈페이지(http://www.ihd.or.kr) 참조", "value": "ITALIC", "points": 1, @@ -192,7 +192,7 @@ "item": "문구 (홈페이지(http://www.ihd.or.kr) 참조)/① 기울임" }, "18": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]", + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", "searchValue": "홈페이지(http://www.ihd.or.kr) 참조", "value": "UNDERLINE", "points": 1, @@ -229,7 +229,7 @@ "item": "문구 (2025. 04. 26.)/② 정렬 (가운데 정렬)" }, "22": { - "path": "//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape", + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "글로벌멀티클라우드협의회", "value": "궁서체", "points": 1, @@ -237,7 +237,7 @@ "item": "문구 (글로벌멀티클라우드협의회)/① 글씨체 (궁서체)" }, "23": { - "path": "//CHARSHAPE[@Id=//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "searchValue": "글로벌멀티클라우드협의회", "value": "2600", "points": 1, @@ -253,7 +253,7 @@ "item": "문구 (글로벌멀티클라우드협의회)/③ 정렬 (가운데 정렬)" }, "25": { - "path": "//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape", + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", "searchValue": "DIAT", "value": "궁서", "points": 1, @@ -261,13 +261,13 @@ "item": "문구 (DIAT)/① 글꼴 (궁서)" }, "26": { - "path": "//CHARSHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape]/@Height", + "path": "//CHARSHAPE[@Id=//SECTION[1]//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", "searchValue": "DIAT", "value": "900", "points": 1, "category": "SingleAnswer", "item": "문구 (DIAT)/② 크기 (9pt)" - }, + }, "27": { "path": "//PARASHAPE[@Id=//SECTION[1]//CHAR[text()='{searchValue}']/parent::TEXT/parent::P/@ParaShape]/@Align", "searchValue": "DIAT", @@ -361,9 +361,265 @@ "value": [ "DoubleSlim", "283" ], "points": 2, "category": "DoubleAnswer", - "item": "문구 (클라우드 컴퓨팅)/③ 테두리 : 이중 실선(1.00mm)" + "item": "문구 (클라우드 컴퓨팅)/③ 테두리 : 이중 실선(1.00mm)", + "desc": "1mm = 283pt" + }, + "7": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/@Ratio", + "searchValue": "클라우드 컴퓨팅", + "value": "50", + "points": 2, + "category": "SingleAnswer", + "item": "문구 (클라우드 컴퓨팅)/④ 글상자 모서리 (반원)" + }, + "8": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]//WINDOWBRUSH/@FaceColor", + "searchValue": "클라우드 컴퓨팅", + "value": "202,86,167", + "points": 2, + "category": "Color", + "item": "문구 (클라우드 컴퓨팅)/⑤ 채우기 : 색상(RGB:202,86,167)" + }, + "9": { + "path": "//RECTANGLE[.//CHAR[text()='{searchValue}']]/SHAPEOBJECT/POSITION/@TreatAsChar", + "searchValue": "클라우드 컴퓨팅", + "value": "true", + "points": 1, + "category": "SingleAnswer", + "item": "문구 (클라우드 컴퓨팅)/⑥ 글상자 위치 (글자처럼 취급)" + }, + "10": { + "path": "//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align", + "searchValue": "클라우드 컴퓨팅", + "value": "Center", + "points": 1, + "category": "SingleAnswer", + "item": "문구 (클라우드 컴퓨팅)/⑦ 글상자 정렬 (가운데 정렬)" + }, + "11": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "클라우드 컴퓨팅", + "value": "견고딕", + "points": 1, + "category": "FontName", + "item": "문구 (클라우드 컴퓨팅)/⑧ 글씨체 (견고딕)", + "desc": "폰트 '견고딕'과 '중고딕'은 한글프로그램 내부적으로 '한양견고딕', '한양중고딕'처리 되어서 프로그램 내부에서 수험자 답변에서 '한양'을 제거하는 과정을 거침" + }, + "12": { + "path": "//CHARSHAPE[@Id=//RECTANGLE//TEXT[./CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "클라우드 컴퓨팅", + "value": "2000", + "points": 1, + "category": "SingleAnswer", + "item": "문구 (클라우드 컴퓨팅)/⑨ 글씨크기 (20pt)", + "desc":"1pt당 100" + }, + "13": { + "path": "//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "클라우드 컴퓨팅", + "value": "Center", + "points": 1, + "category": "SingleAnswer", + "item": "문구 (클라우드 컴퓨팅)/⑩ 정렬 (가운데 정렬)" + }, + "14": { + "path": "boolean(//PICTURE//SHAPECOMMENT[contains(text(),'{searchValue}')])", + "searchValue": "원본 그림의 이름: 그림", + "value": true, + "points": 2, + "category": "Boolean", + "item": "① 파일명 \"그림A.jpg\" 삽입" + }, + "15": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Width", + "value": "80", + "points": 2, + "category": "mmSize", + "item": "② 크기-너비 (80mm)" + }, + "16": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/SIZE/@Height", + "value": "45", + "points": 2, + "category": "mmSize", + "item": "③ 크기-높이 (45mm)" + }, + "17": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@HorzOffset", + "value": "0", + "points": 2, + "category": "mmSize", + "item": "④ 위치 (어울림 : 가로-쪽의 왼쪽 0.0mm)" + }, + "18": { + "path": "//PICTURE[./IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]]/SHAPEOBJECT/POSITION/@VertOffset", + "value": "24", + "points": 2, + "category": "mmSize", + "item": "⑤ 위치 (어울림 : 세로-쪽의 위 24mm)" + }, + "19": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "1. 주목하는 최신 트렌드", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구① (1. 주목하는 최신 트렌드)/① 글씨체 (굴림)" + }, + "20": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "1. 주목하는 최신 트렌드", + "value": "1200", + "points": 1, + "category": "SingleAnswer", + "item": "문구① (1. 주목하는 최신 트렌드)/② 크기 (12pt)" + }, + "21": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "1. 주목하는 최신 트렌드", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구① (1. 주목하는 최신 트렌드)/③ 진하게" + }, + "22": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "2. 기술의 경제적 가치", + "value": "굴림", + "points": 1, + "category": "FontName", + "item": "문구② (2. 기술의 경제적 가치)/① 글씨체 (굴림)" + }, + "23": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "2. 기술의 경제적 가치", + "value": "1200", + "points": 1, + "category": "SingleAnswer", + "item": "문구② (2. 기술의 경제적 가치)/② 크기 (12pt)" + }, + "24": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "2. 기술의 경제적 가치", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "문구② (2. 기술의 경제적 가치)/③ 진하게" + }, + "25": { + "path": "boolean(//TEXT[CHAR[contains(text(),'{searchValue}')]]/FOOTNOTE)", + "path2": "boolean(//CHAR[substring(., string-length(.) - string-length('{searchValue}') + 1) = '{searchValue}']/following-sibling::FOOTNOTE/descendant::CHAR)", + "searchValue": "클라우드", + "value": true, + "points": 2, + "category": "Boolean", + "item": "문구 (클라우드)/① 각주 설정 및 문구 입력" + }, + "26": { + "path": "//CHAR[contains(text(),'{searchValue}')]/parent::TEXT/@CharShape", + "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "value": "중고딕", + "points": 1, + "category": "FontName", + "item": "문구 (클라우드)/② 글씨체 (중고딕)" + }, + "27": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'{searchValue}')]]/@CharShape]/@Height", + "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "value": "900", + "points": 1, + "category": "SingleAnswer", + "item": "문구 (클라우드)/③ 크기 (9pt)" + }, + "28": { + "path": "//P[TEXT[CHAR[contains(text(), '{searchValue}')]]]//AUTONUMFORMAT/@Type", + "searchValue": "인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경", + "value": "Ideograph", + "points": 2, + "category": "SingleAnswer", + "item": "문구 (클라우드)/④ 각주 번호모양", + "desc": { + "가,나,다":"HangulSyllable", + "1,2,3":"Digit", + "갑,을,병":"DecagonCircle", + "A,B,C":"LatinCapital", + "①,②,③":"CircledDigit", + "一,二,三":"Ideograph", + "㉠,㉡,㉢":"CircledHangulJamo", + "ⓐ,ⓑ,ⓒ":"CircledLatinSmall", + "i,ii,iii":"RomanSmall", + "정답에 맞는 값 value에 입력":"" + } + }, + "29": { + "path": "boolean(//CHAR[contains(text(),'Digital')])", + "ignoreWord": "Digital", + "value": true, + "points": 3, + "category": "Boolean", + "item": "Digital/영단어 미입력, 대소문자/오타 시 전체 감점", + "desc": "유사도 검사를 진행하지 않고 영단어가 모두 일치해야 하므로 xpath구문 내 단어도 수정필요" + }, + "30": { + "path": "//CHAR[contains(text(),'{kor}')][contains(text(),'{chn}')]", + "word":[ + ["전환", "轉換"], + ["핵심", "核心"], + ["확산", "擴散"], + ["보안", "保安"], + ["도입", "導入"] + ], + "value": 10, + "points": 10, + "category": "Hanja", + "item": "① 전환(轉換), ② 핵심(核心), ③ 확산(擴散), ④ 보안(保安), ⑤ 도입(導入)" + }, + "31": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'션이발전')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…보안(保安) 솔루션은 발전하면서…)/\"은\" → \"이\" 글자바꿈" + }, + "32": { + "path": "boolean(//CHAR[contains(translate(text(), ' ', ''),'이터유출')])", + "value": true, + "points": 3, + "category": "Boolean", + "item": "문구 (…유출과 데이터 사이버…)/\"유출과\" / \"데이터\" 순서바꿈" + }, + "33": { + "path": "//TEXT[CHAR[text()='{searchValue}']]/@CharShape", + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": "돋움", + "points": 1, + "category": "FontName", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/① 글씨체 (돋움)" + }, + "34": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]/@Height", + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": "1200", + "points": 1, + "category": "SingleAnswer", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/② 크기 (12pt)" + }, + "35": { + "path": "//CHARSHAPE[@Id=//TEXT[CHAR[text()='{searchValue}']]/@CharShape]", + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": "BOLD", + "points": 1, + "category": "FontAttribute", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/③ 진하게" + }, + "36": { + "path": "//PARASHAPE[@Id=//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align", + "searchValue": "클라우드 보안(단위: 백만 달러)", + "value": "Center", + "points": 1, + "category": "SingleAnswer", + "item": "제목 문구 (클라우드 보안(단위: 백만 달러))/④ 정렬 (가운데 정렬)" }, - "61": {} } } \ No newline at end of file diff --git a/diwScoring2.py b/diwScoring2.py index 27ddad3..ec13310 100644 --- a/diwScoring2.py +++ b/diwScoring2.py @@ -343,7 +343,9 @@ class XMLScorer: # Boolean 타입 정답인 경우 elif "Boolean" in (category or ""): items = root.xpath(xpath) - user_answer = True if items else False + items2 = root.xpath(xpath2) if xpath2 else False + + user_answer = bool( items or items2 ) self.evaluate_answer(scoring, user_answer, right_answer, points) @@ -387,6 +389,12 @@ class XMLScorer: font_id = root.xpath(f"//CHARSHAPE[@Id='{charshape_id[0]}']/FONTID/@Hangul") font_name = root.xpath(f"//FONTFACE[@Lang='Hangul']/FONT[@Id='{font_id[0]}']/@Name") user_answer = font_name[0] + + # 폰트 "견고딕"과 "중고딕"은 + # 한글프로그램 내부적으로 "한양견고딕", "한양중고딕"으로 저장되므로 + # 수험자 답변에서 "한양"을 제거 + if right_answer in ["견고딕", "중고딕"]: + user_answer = user_answer.replace("한양", "") self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") @@ -483,6 +491,31 @@ class XMLScorer: self.evaluate_answer(scoring, user_answer, right_answer, points, method="equal") + elif "Hanja" in (category or ""): + word_list = criterion.get('word', []) + + # 점수 계산 + score = 0 + max_score = points + + # 부분점수 (최대점수에서 한자 갯수만큼 나눈 몫) + score_per_pair = max_score // len(word_list) + + # 한자가 5개 고정일 경우 + # score_per_pair = 2 + + for kor, chn in word_list: + # XPath 구문 구성 및 실행 + exec_xpath = xpath.replace('{kor}', kor).replace('{chn}', chn) + matched = root.xpath(exec_xpath) + + if matched: + score += score_per_pair + + # 최대 점수 초과 방지 + user_answer = min(score, max_score) + + self.evaluate_answer(scoring, user_answer, right_answer, points, method="partial_score") onePersonResult['score_results'].append(scoring) print(f'scoring: {scoring}') diff --git a/zzz.xbook b/zzz.xbook index 1cb54b0..ce25fa0 100644 --- a/zzz.xbook +++ b/zzz.xbook @@ -1 +1 @@ -[{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::LINESHAPE"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='클라우드 컴퓨팅']]//LINESHAPE"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill][not(*[substring(name(), string-length(name()) - 5) = 'BORDER'][not(@Type = 'DoubleSlim')])]"},{"kind":2,"language":"xpath","value":"//BORDERFILL[*[substring(name(), string-length(name()) - 5) = 'BORDER' and @Type = 'DoubleSlim']]"}] \ No newline at end of file +[{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]/*[contains(local-name(), 'BORDER')]/@Type"},{"kind":2,"language":"xpath","value":"//BORDERFILL[@Id=//SECTION[2]//PAGEBORDERFILL[@Type='Both' or @Type='Even']/@BorferFill]"},{"kind":2,"language":"xpath","value":"//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/ancestor::RECTANGLE/descendant::LINESHAPE"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='클라우드 컴퓨팅']]//LINESHAPE"},{"kind":2,"language":"xpath","value":"//RECTANGLE[.//CHAR[text()='클라우드 컴퓨팅']]/SHAPEOBJECT/POSITION/@TreatAsChar"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//RECTANGLE//CHAR[text()='{searchValue}']/ancestor::P[last()]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//RECTANGLE//CHAR[text()='클라우드 컴퓨팅']/parent::TEXT/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//RECTANGLE//P[.//CHAR[text()='{searchValue}']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//IMAGE[@BinItem=//BINITEM[@Format='JPG']/@BinData]/preceding-sibling::SHAPEOBJECT/SIZE/@Width"},{"kind":2,"language":"xpath","value":"//CHAR[text()='{searchValue}']/parent::TEXT/@CharShape"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[text()='{searchValue}']]/@CharShape"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//P[.//TEXTART[@Text='클라우드컴퓨팅컨퍼런스']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[contains(text(),'클라우드 보안(단위: 백만 달러)')]]/@CharShape]/@Height"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE[CHAR[contains(text(),'인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경')]]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE[.//CHAR[contains(text(),'인터넷을 통해 액세스할 수 있는 가상화된 서버에서 실행되는 프로그램과 데이터베이스를 제공하는 환경')]]"},{"kind":2,"language":"xpath","value":"//TEXT[CHAR[contains(text(),'클라우드')]]/FOOTNOTE"},{"kind":2,"language":"xpath","value":"//CHARSHAPE[@Id=//TEXT[CHAR[text()='클라우드 보안(단위: 백만 달러)']]/@CharShape]"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//P[.//CHAR[text()='클라우드 보안(단위: 백만 달러)']]/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//PARASHAPE[@Id=//CHAR[contains(text(),'클라우드 보안(단위: 백만 달러)')]/ancestor::P/@ParaShape]/@Align"},{"kind":2,"language":"xpath","value":"//P[.//CHAR[text()='클라우드 보안(단위: 백만 달러)']]"}] \ No newline at end of file diff --git a/회차별채점자료/2504/excel_채점기준표/DIW_2504A.xlsx b/회차별채점자료/2504/excel_채점기준표/DIW_2504A.xlsx index c5d70d8a2304cf8b26cd7ee99fc444516d221a3d..181ffb75d0d65d4d3dc44f4a27d626180c8c4ac9 100644 GIT binary patch delta 10885 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

}rIkGV=c<-FR@7AVToj~9Rz5}~z=R#_)(D_< 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 ME+d-1)_>Oi52EgLcK`qY delta 10797 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