From c32e95878f1262127815ec5325d18287954ec381 Mon Sep 17 00:00:00 2001 From: pangbai Date: Wed, 4 Feb 2026 09:33:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A8=E9=80=81=E6=BA=90=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 25 + degree3/CADY_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CADY_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CADY_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAK_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAK_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAK_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAV_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAV_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAV_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAV_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAX_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAX_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAX_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAX_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAY_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAY_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CAY_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CA_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CA_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CA_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CA_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV2510_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV3010_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV3510_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CHV_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CI_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CI_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CI_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV17.5_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV17.5_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV17.5_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV20_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV20_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV20_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV22.5_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV22.5_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CV_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CX_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CX_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CX_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/CX_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/EV10_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/EV12.5_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/EV15_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/EV17.5_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/EV17.5_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/EV20_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FAV_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FV_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY22.5_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY25_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY30_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY45_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY50_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY60_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY60_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY60_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY60_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FYN_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/FY_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/LHY_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SI_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SI_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SI_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SI_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SX_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SX_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SX_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SX_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SY_仰焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SY_平焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SY_横焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes degree3/SY_立焊.xlsx_model_degree3.pkl | Bin 0 -> 1247 bytes docker-compose.yml | 15 + predict_with_excel.py | 539 ++++++++++++++++++ requirements.txt | 8 + 83 files changed, 587 insertions(+) create mode 100644 Dockerfile create mode 100644 degree3/CADY_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CADY_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CADY_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAK_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAK_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAK_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAV_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAV_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAV_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAV_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAX_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAX_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAX_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAX_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAY_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAY_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CAY_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CA_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CA_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CA_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CA_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV2510_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV3010_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV3510_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CHV_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CI_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CI_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CI_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV17.5_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV17.5_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV17.5_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV20_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV20_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV20_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV22.5_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV22.5_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CV_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/CX_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/CX_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/CX_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/CX_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/EV10_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/EV12.5_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/EV15_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/EV17.5_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/EV17.5_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/EV20_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/FAV_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FV_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY22.5_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY25_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY30_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY45_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY50_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY60_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY60_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY60_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY60_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/FYN_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/FY_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/LHY_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/SI_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/SI_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/SI_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/SI_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/SX_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/SX_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/SX_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/SX_立焊.xlsx_model_degree3.pkl create mode 100644 degree3/SY_仰焊.xlsx_model_degree3.pkl create mode 100644 degree3/SY_平焊.xlsx_model_degree3.pkl create mode 100644 degree3/SY_横焊.xlsx_model_degree3.pkl create mode 100644 degree3/SY_立焊.xlsx_model_degree3.pkl create mode 100644 docker-compose.yml create mode 100644 predict_with_excel.py create mode 100644 requirements.txt diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..2169bb7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM python:3.11-slim + +WORKDIR /app + +ENV LC_ALL=C.UTF-8 +ENV LANG=C.UTF-8 +ENV PYTHONUNBUFFERED=1 + +RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list.d/debian.sources && \ + apt-get update && apt-get install -y --no-install-recommends \ + gcc \ + g++ \ + libgomp1 \ + && rm -rf /var/lib/apt/lists/* + + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ + +COPY predict_with_excel.py . +COPY degree3/ ./degree3/ + +EXPOSE 8000 + +CMD ["uvicorn", "predict_with_excel:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/degree3/CADY_仰焊.xlsx_model_degree3.pkl b/degree3/CADY_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0c96e476a0b91f3121e566df451e8e774b4e4d84 GIT binary patch literal 1247 zcmaKr%Zn689LHy7cV=f>S7%oi5*0}h;wsp%hk(Mu<)+hf#(=CI_ih_tb2cR#$gD z+GJow1zmTb%q2A!4~FCrJd4O;UXWaJmfSoj`1lVb2a)yHJ&#q9)S;(p>ietT>+`!j z+5fRv$d{?9^Ne80-GnBDQBJI>o*8X_u!pbMi*~`3l_rU@XJI>+#H`EXh+@_uSf`RG zYd#*oB1t0SfG9=zs*AR@*36w58=f2)jvZ9mWK|Mky$MsJToZ`{O=FH?&bqc|c2XX& zv`vstv9cSc9LqM5))Y@zGdm0eaU2naC`Z=pIT!nk`YunSq>B<7K$4(rWXBaLarY~U zlLTHE2T)b1A26&SnR0Gr%@l9rOba3?K!_6vuXxRdwQ$yy+qw(q@Was#G^NwWY;WVb zZQ2D$qqt@pjmD`hSoz0W*48%;W-R^|MG;OQt$l;|axVxoy2>NMHS)U}it5!;|8gnF zC2kN);zlXcG#5Kak|5?v%QVoAC=682FknX%y}~t73Q!QYNuV6UvyCGrT3OqDG1;oX zFT96;meSh=W{a=oVIjqGV-|c@kf^Qc`BZl(6c}24WMbNLk_Mme!jDS^hujq>N?f8X6LbE)c1JBxvEH`>DHVQ-9r>T1GllGJ_6K z&93*35FT8i2r9;0Q5Ii6okVFHUl^_P@TG@^x;859ysV1?a znqDBb7cM|}4z$=^dB~08{wMMtCTrWOoMH z8w(1buP^UMFTDPP1KX*<&-2Z3)_)uWV67%yYo4V<2U{i+W|3pPafZ`|Md5NzkU7lVtweP(C>`=IpadXkj}psZEGqj xzz_(GU06R+{bqCT?Ss=xb-NCO6&?-UtbxQ-A`->23$>ks4*M~5sW-TFUjyLJ@CEYxN7{_hLcAO;v$5GT$5P}N?5Gw^*2_&Q#kPyYlK|X*l(R6k_&JN7Z?z}8u z2_z~(h}BUqogB&mZhQe~r8Wodh)dNkz#(u&;?f)Gv+I{oR56G3jOYK%^Y(l07dM{f zbJ;Rgb(0Y+xf|1%Fv^KFm8+xeFZSq<_MTlZC8bHM>DZA_Rd<(f$BYZ`GBan`eaGflbAk`6&0 z#mcUmQY1S>T9dzE&FnA?#BoRzq8wQ>cO&u`^<18WaSz4Rha^GSOpoWJ#J%eh$1%Jx z4xpkE&u3UcGNsJQnn~WlsTM>~fB?r3UjCsCs==%&b#xET!QRmhG==5Uw!i+!w(J6= zk-ux3&F1B8SlOqsq^)Nh%vf|Ag&~e1t$l;|GA{@-y2?YsHS&5IirT0q-u;4~NnAgY z#0?XsX(o1%B!0w|mWi(&ksGL-VZe^aH*ya}!AE}7A--}5PdAR3Xs2!WM6q3lUxqd1 zi=wn9$}KVZNK{&4YN3&b9ECG{Fw4>ryV?cNFP|3Eke`@oiQSN4_SRjo=kqK@)$6Z_ z+4c;WynFIsYxDQFKRJ{k_;zzNVkqldBX4%05IQ)bA(x)FQ_`W5DRh8pdi~7^ z;lULOp<>KM9#%k3^-891?dZqg%yg-S-~m~m#2VNv`w=kLPInvuhsrihC5{x;^cJ!G zU;)A_`4QwDkAnPs`KuFE`E%1*Rl1zlqYRn@R^ZVOV}4s`}XD%qQNq zxBuC?_SMS=-=91G@yhGv%P;EUuV26YaOq@y=q0z&9r<&{g@PfS|6jDNDJvgCATV}8 r{X*r3$F<+)|2S2*YcN>BiNH-8NK82-VI+G{+ezrK7eSZ$gIo7s*l+7- literal 0 HcmV?d00001 diff --git a/degree3/CADY_立焊.xlsx_model_degree3.pkl b/degree3/CADY_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3ef22ded955494314ccad627bdd6ddbdd2b8e8c5 GIT binary patch literal 1247 zcmaKrTZd(-Z^YQM8{rmQqclsyOA*(7FN9!C_j4#7H=L|OCc z_!UVK83#lu%9mWUrnP4F^w{vLk>S`urA?M3A=aBPHOe)SIM6iaDCVqddu9XW0ZZEi z`4lU=V#={>6KPFx(VCfI7>MJDC`383X7l;jXViCj8YNwn&;XJIWg|NtkrH>$NSq|_ z!Z?7cO8tOg1<90iD{H2B8)sS&K>$Yj< zAdTW>+h{aStisAa-h#HiaWG@?wg@#Fu+Pn9(I35w4Nn)lgKgmikvpK`wEF zSQ0l%nWnkeL6QV9S6Zflc0^&Ia)tprqUaT_iBf=qxJ?4(5T0!uG11D}?u*G*1%4UU zl+TOuvZyr0)OAs9igj~d5popH@WDJwN33s^K!56h*Z}#7>898S8Rl+ z=Ls_lOr$zV^_r#iCP9|}k2)!1*|~;>M52pCDj*43IPdOr=WXgQTT{zOhe~G90jk;c zwh_XED-=P+n2UU@fSlUNT;E*NkHMMlPz}KYvH?jnuvrOWV6K(zI06opZJ25jE2`;5 zVte5ngjWt?(m^)dGMKOM<8XVp!#~7O8I~W2sy_BO z{f4*I)vJH}?)>`d_>qG*KD+V!+0XSK|N8II*$4CWp_f9xGxFz*3k5^E<-KTIQ&9ni vKw#{``eOB)qbG0ecMjFw05>tst6w5Bub_zP|$IzwT;MRQ&?V;?V literal 0 HcmV?d00001 diff --git a/degree3/CAK_仰焊.xlsx_model_degree3.pkl b/degree3/CAK_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..11af9faad467605da2804249a10024da4fe39115 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@@d(b*Lxz9cAuu7VAF5M2v z1~hEIU3awbl3Fl1n42d-yyTET638d;3z&;a%x4hRr+Z#jC0K`^s;U1|&)e@=o!l=(<#r=dPgi%hMtzH{%e{?5*aCh9iEo(y(?UrFXmk8G9BBq%22sWuA+S#L% zR}@K<2#MB|ulQ(N>+IaMiQ%QO;lx3uOI8#it~q7vlpCUOXsF;waMpJNyNmLWrCovo zinZIYWudx6Ia|Ew?CdBE#BoeCq8vH9_qqre4Sb%)NgpLNgd{=P%8pA);r_P@CkebT z381ReAY@oWGUeRL*%{u&nHEG)fCwiLUUAJu^=Q_XyQUB4=)iafn$p#CZm@CBwcR|V zQM~P1t=89Du<}pyf^mWMFk|8tiesEWT8D=5Rg7G#7hFkx+1LR2mvj7KSQs6tE|Y&BB^2g(wtV5^9g|Y~#tPPS*B7PIoHs%dnw* zL6+BLr7dUf$!c5fm~R##N9m0o%(L|5&Q1yRSI@~^ke{rz>MzWnj|&bmaaJsviyJ4OBu_~bu=Op-6To_NzlRt|BS!j(qP@$dPX`_GJ_6K&8`oQ z5guNl7%Ikm6krYH)UV|F_O^ZkPOV1`1P{oDBr(8dB^1D1C);rZ9BS9H)kJ7&=uP4V z(L97#4h88U7wsF)SM)`6C_3Dn9>NuU6&h9pzF8FSzF&KO;ooDWmn$!p{@h#~32a$megkDww<8DVU22f_RBH59{lmk2Mlfhn}jb|Eu@) zdux+hH}kn{nW|c01WWG5G$xF4VomwnXnWlr{n1{sHB(fY#L6zgb~cV!k4GWJtV^&? zBvICUI(|ixSVlfkit=R_?P#r;JvTP|Vq`dWQ0kCnNr-Jsm@4I(NbGAGaTIaZvwgFN za-Ss~f;@_q-898Wc8Ihlzi7?OFbu?TNED(RS+no^$Ya!Vc@oAw6jL9P1Z6Wlo|Y2# zzLhwR;e~MkWtDh7!wQlqW>(fr@eWS4Ac6t}IEL`@>o%wcGp5+lJvavkMmx|H&YrOS z%`3KLYmi2M)i#^WueM=jpT>f=o^dc^(GMsLaSUl49K@G-L735H9ulsR*V9ncMm6!) z3VtSW{YVlwOqiyb*g=x`5m#C!zIH@zpmK%*J0jo6t&4(>{HQ~Gk!D zS&FLHUlKFz3Ya{|citx6hBeicbf{zs z9iWg&TaD_ss7;}+_6_8Uslj&PK`Y||_F4Yh`AnTJ@1Dhp30_NK3jw9eu*`_JS zk)oPjAhsXWAiSa~D15eRi}h9X^7zBgzJC4Y(fL;k-?Z|7{`K4HgRPT8fhkJNS5P{2yV8M87?%GN zRekKS@{YId?faFhCx3o^==9_Le_vj@{Zswg)msOCf03&Xz2vsKBY)1gP%xx(|B1FW zCFNrX1ja6?FP8sUf3kAupYQ5+0|qNN9=K@(i7AC7jARdLI|Uu~BIr_oaO=JWVZrVX literal 0 HcmV?d00001 diff --git a/degree3/CAK_立焊.xlsx_model_degree3.pkl b/degree3/CAK_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fa173101770729c0c07cd09271789a581b031b33 GIT binary patch literal 1247 zcmaKrPiRy}9LIMz+0EwZnoT638WnqKw*?>MP->vyN*}SRq=Dqpz zY!_09ki@JVJm>_(gWkkLp`JV_^bbAv;H5qGq5%)R^x8xEdvE{5O6eTl&g^`D^ZWPt zZA|Vy&gZgas_F(KSaLU}F=3PwYsyzg+xzyDTlO1UGexCItn4am=i-RqN6>DaPVIYn}q7dcCnxkJv9;2SilQ8a~nEH?;D4Xf=yp*_i zUE(-~7sdgURpR*!D@dl8Sy?m1J2=&X2nrD37{beM*`ONCnqo)y;2azq?Lbqwa@O{D zZrhfvK^pmW+iW&3?Ze7GjdR+1#=(q5U!gF>F{HIPh%fVkFr#ZcBwQn}r=h5gYT|7a z{7mBdktA-IFikVDgCy}IuCz>i?TFk!+?gqZ^-5*;V{z|uA*L6-fGx(Q?Hxr&BFqMJl2APHKyC{c91Dh}`|0k;Y z*kk1#Z~OZ{RPHQ4*gJXt)xsZ}tKWZHzkBDqW52x3)rVekyWNpLXIv;4()s^H+nSQ{ xF$4l*7t~kE8w;nN{{G^6-EPBR1!n>`Z6GnFkc5%!L2aj?!(Iek>JM(+e*nlg?bHAO literal 0 HcmV?d00001 diff --git a/degree3/CAV_仰焊.xlsx_model_degree3.pkl b/degree3/CAV_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..75be9b257a8d9c22e5c95829c27792b5251969aa GIT binary patch literal 1247 zcmaKrO^Xyq7{{k)cV@@d(b*Njmk^Q=%qAfX3lUZjc0>`e!zgpf93o|PPtA74>gukS zR!4SW72Vx|LIi6sK@>cggE@vAl0yO-@*O<8q8}jV&C@+EYb2x&Jylcxr=GXpvo^i; z*eMmuG}Ki_u;gA!Q^F`G*3>SIw-4;+x9qB&Hx;Exs_bRh&ZP4Be@WZGxR|lzI*MbQLR!a$@fBVWW^|dygliP^H5AovWWicFEF@l- zNaDpA)3gw~NRlw&O3N(Nt|$#v?kHeaIDYA_D2FIax+GLC;rYfDQ=Po+ftc=8;g?}e z`GTmdi)vfUY=~N0?3wo+$WgeX2a7CSvA0tO{l!JG5AqZBw%89D7H_SH1Mg=k8o}VQ znC;ZTD8*6&*8F~5rPsoRqeY{szspQxG>kM(!F z?d)8c>OTGRp>z7l&(AixYOVSAi)Y_$emdJ6c`0r6#{S$%psN0!Zk}!0br`JZtH{e6NK7>*aU%Or+ZpI^kU*CP!&~nkY#8g8 literal 0 HcmV?d00001 diff --git a/degree3/CAV_平焊.xlsx_model_degree3.pkl b/degree3/CAV_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b72d6d392a75bf10e655a95a1a7142fbb60d9d8b GIT binary patch literal 1247 zcmaKr&x;dD6vvayBoo^i%|u+*RYXD7QL$kTg2FClR#?Pnlw8a~sjco*rc0}%m|j;jcH66<;0rux#9MPJ@AkH+s>Gx(j->)B5bR1#JW5RDP|plbs~wfX7A_~ zNn#oKL@CPWU9_RKrh0B<`1{asn@yw9m5@H3TKbn-tv-d+8IbA zf7Lb`jZ^EevQPcEww`e?W6_@|3~>x;?d->wc|n-bc^(q3k=NBw)OscH77BhQas5aV zH%yqOnb<*+_z_oHCcbt=uCHbmA2gzGOQ_| z6~#qSYKn;^QErM&Gxa>=D4fBAS(c92+$w`^fZ`H88f*a8`5Z(S8zzs^!ryxv7I z-I@ZE_jmq%_vF#q^;>I?R}YFR)?%CIuACggw}qo2Ls{SId9xXX(7_=Mx%7V2>$uzJTeMuVBgnOu^5~!Tywzttn)mEhv1p zN)Ml&dHJFG{KNhKet351?eUv0{%3C%y3baQ4FskrF~5w`soRteY{IboPE@s#$EnY} zt*`$v)?R&mJ3n{t;e(~NTBv<|_29ztzUkV)OKznz^yiEU1w*?1n`m28Qa*-2VC;h0 piE>MteYxL$t=UBwtl)6qrVS*f6p}EKU8wB@bl8iaOTGTB`w3vA?Mwgw literal 0 HcmV?d00001 diff --git a/degree3/CAV_横焊.xlsx_model_degree3.pkl b/degree3/CAV_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b72d6d392a75bf10e655a95a1a7142fbb60d9d8b GIT binary patch literal 1247 zcmaKr&x;dD6vvayBoo^i%|u+*RYXD7QL$kTg2FClR#?Pnlw8a~sjco*rc0}%m|j;jcH66<;0rux#9MPJ@AkH+s>Gx(j->)B5bR1#JW5RDP|plbs~wfX7A_~ zNn#oKL@CPWU9_RKrh0B<`1{asn@yw9m5@H3TKbn-tv-d+8IbA zf7Lb`jZ^EevQPcEww`e?W6_@|3~>x;?d->wc|n-bc^(q3k=NBw)OscH77BhQas5aV zH%yqOnb<*+_z_oHCcbt=uCHbmA2gzGOQ_| z6~#qSYKn;^QErM&Gxa>=D4fBAS(c92+$w`^fZ`H88f*a8`5Z(S8zzs^!ryxv7I z-I@ZE_jmq%_vF#q^;>I?R}YFR)?%CIuACggw}qo2Ls{SId9xXX(7_=Mx%7V2>$uzJTeMuVBgnOu^5~!Tywzttn)mEhv1p zN)Ml&dHJFG{KNhKet351?eUv0{%3C%y3baQ4FskrF~5w`soRteY{IboPE@s#$EnY} zt*`$v)?R&mJ3n{t;e(~NTBv<|_29ztzUkV)OKznz^yiEU1w*?1n`m28Qa*-2VC;h0 piE>MteYxL$t=UBwtl)6qrVS*f6p}EKU8wB@bl8iaOTGTB`w3vA?Mwgw literal 0 HcmV?d00001 diff --git a/degree3/CAV_立焊.xlsx_model_degree3.pkl b/degree3/CAV_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a67fcda3aa066b16034aa4c083d989ff1522479a GIT binary patch literal 1247 zcmaKrO^Xvr7{`-LlF77=CL@Bbi@30?qhP}v1VzEffGkF$(Hr6{hxZ?e$Q%o^J%e= zFI(5wIKfKz2}=lPf;d~dG}%6MNA9}YZqZh>A&GXEVY`sTd?4b8VcsX$q>5-~zni|I zNTTA9XwAfmkG8eWE?k-#o|_m>9aMW{MG@j!Gq%ozAqt0v#RA2G58Tl1WFq8gkD!2I z?KW&BRz0GeEiOCT7>9ubj)+D~AZPbnjRVdCU!+koKnV*WNl>=4<5{Kf;3tKX1YVd1 zP}6A;a;zblN^a%stmxrP3nC~0#R-I0yzgk8Hf*J525_ePCp*xTE}n41jdj;?i;za~ zmTR}$=eJjFB+9M*{cygwjwLOsKZWVqxHcTwZ z%9^Zp!S)s|YztZ~S1Mr6+fEOQ64aLhgk8`^-S_fNV$-18i2q7?|s3JAr^h?b^1M#F`m)owy-g zgzze1O!~;ty`%Y}`{)7sZL2(jiyowhY^nbVOs7ACsQ@t1A2#UWjFR0MWFIXke7>Ij zjFzuF+4pzj@x6cVJpKR7t5e5*d;f6tug#NVfvqSkuAyw|=CXlJIaXhZsyX#I|B<(? ztt&IV=l?t|p8fUr7wbK}+I;uw#V;G*H=1KFh0XrNpEoTO4C&r4qU~%|hZq8Zv7^o9 o8V&winkz3i-5LxQJx2Ykfy7oL62)o&wVj0y2QhSMIJ)&e0KKj2vH$=8 literal 0 HcmV?d00001 diff --git a/degree3/CAX_仰焊.xlsx_model_degree3.pkl b/degree3/CAX_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0624739c72c66bb175333d67998408497e14e7a8 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3XJ*GZ-1n zUL7!CK-V28ajH?f2X& zZ~a&-E`i+|h5{H*U#Rv>}OhS76&n1RHP>Q_T7Vn^Y0) z>?hM#6iJi_iPn^_`Dj<`Y~%9O@Z7|3>Y&;qYl;xpnz41t4N*8WRB$9X8@Qp}OL@rB z9zg-c+HKm3P(7lYEuM9DVH^hHI3^lVj+{MkRRoL%K2PIhfD#%)lAvs7$1_Ud!Pg2W z3A`{3pr+FxWLQHomE6kNS>D5$7DP~h2qzF;@s5k?(Soh?%mB{O2a_FWN~@>baPzL~ zxFtxVc+<7p?Tb6G@=t5UxWIatF>xKmF-{<@L!+N!6)tx}jv z{7@+3$0;*37kfyNP;hNj8X8X)Mk;R{uqTVH!W~%(Q7C#O)E?p4#*;JMtnGm;cdPKr zu%UceRyJg{BWLf*T1W0#Y84?z>5U)Ev-IR#w*>mtQ*tllC+9nIA7q%nbyMztGfPw^=7M^`9@iZLGrSOYorOS!(YtDk~1-=_wG2V_H%7+|v+3Sh3A?KlDswQJj2A~ZF0 zow#AN1mRUeLHfu=i=+99-j5DNAGXRPxT24uk8P>{8cd(R0aF2BiVkl^M>0zGXOO+J zpz!(n<5Bsi>fApoe?8k?6b~P){QK#jy>nkSwzp1?1-7CvzlO4@+mj7!%CLGzRL!Z! z`B%K{>^y(`)qC5wFP!<}#ihSjFaFw;kM5uR|NM#O*h^unKk?^H3k5^E_*S%?t?Cd% vATV}O^K9+E{x4S_tS>j+1`JkoJo2*!5?hT)EYtvMI}05S1axUQy7gZI_;l@s literal 0 HcmV?d00001 diff --git a/degree3/CAX_平焊.xlsx_model_degree3.pkl b/degree3/CAX_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9b3439905567e735123602c05c6a919d2d18575b GIT binary patch literal 1247 zcmaKr%WD)#9LHxSnaS9iIEjdli0H+Qf(?;fA0T8j;A>7p-ycvJp^N7l_b?B*@`u^(o`uuK>u074? zvSljj8Y5V8H>NRRloM;pmj>Gh_TU|R%g&gh(j->)Dr~3Xh;?`rQq0-}>qHV|&Hmvl zlEgCdiBgm=x@bdd&D5o#;hBNq&_St179}CJHexE2Ya+3)X~a>)S;uzG7Rr5=vJ(&*e!NcTh}yND`Fw^ms~2-1%MNIEEL7 z0hCqZ`3x&arkGh-Gsasu)q)5L5a1ZX%ips>C73kDmhQkg*frRJrm%3_c2`$y!_Gh& z`6XMg*DtKY%09I@Z9U^)#-bZ23~>x;P50u_{t$X-8f>TnYP^%qs-vmbkhO)lZ@@6v%p@Rb&a_Jf09G*wa z6flwKIMExHwl)f~?0?iw7)#F;)F%>MCsF}P(85{wH+R-1-m*27lys{RE)XE!wSf$T+H;14gC5e1dP}#aE$C09%UMIF2 z%s_ZWKO${pgYCWf3U&t5!JgV^53XQuu+J3QKfrYICzx^oQ*dB4_$8%eYYN$S3ksjD zqip{D%jv)8_U$;Uj)~WE506}V@nmJt8-z-tpn?`BSIAUi@p}!mFzI=h3g9&mF1uz2w%~1Aor2P%xz1{}XL%O3KF&2#j4& roiFG9c)qlA*Ws#NhQSIB2X5LxVoD(iBiVu4jzNdL2)fkm-MZfZ&41~n literal 0 HcmV?d00001 diff --git a/degree3/CAX_横焊.xlsx_model_degree3.pkl b/degree3/CAX_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9b3439905567e735123602c05c6a919d2d18575b GIT binary patch literal 1247 zcmaKr%WD)#9LHxSnaS9iIEjdli0H+Qf(?;fA0T8j;A>7p-ycvJp^N7l_b?B*@`u^(o`uuK>u074? zvSljj8Y5V8H>NRRloM;pmj>Gh_TU|R%g&gh(j->)Dr~3Xh;?`rQq0-}>qHV|&Hmvl zlEgCdiBgm=x@bdd&D5o#;hBNq&_St179}CJHexE2Ya+3)X~a>)S;uzG7Rr5=vJ(&*e!NcTh}yND`Fw^ms~2-1%MNIEEL7 z0hCqZ`3x&arkGh-Gsasu)q)5L5a1ZX%ips>C73kDmhQkg*frRJrm%3_c2`$y!_Gh& z`6XMg*DtKY%09I@Z9U^)#-bZ23~>x;P50u_{t$X-8f>TnYP^%qs-vmbkhO)lZ@@6v%p@Rb&a_Jf09G*wa z6flwKIMExHwl)f~?0?iw7)#F;)F%>MCsF}P(85{wH+R-1-m*27lys{RE)XE!wSf$T+H;14gC5e1dP}#aE$C09%UMIF2 z%s_ZWKO${pgYCWf3U&t5!JgV^53XQuu+J3QKfrYICzx^oQ*dB4_$8%eYYN$S3ksjD zqip{D%jv)8_U$;Uj)~WE506}V@nmJt8-z-tpn?`BSIAUi@p}!mFzI=h3g9&mF1uz2w%~1Aor2P%xz1{}XL%O3KF&2#j4& roiFG9c)qlA*Ws#NhQSIB2X5LxVoD(iBiVu4jzNdL2)fkm-MZfZ&41~n literal 0 HcmV?d00001 diff --git a/degree3/CAX_立焊.xlsx_model_degree3.pkl b/degree3/CAX_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1b47fe29b345adf4827d63891d7e2e732e6a0f48 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3XJ*INU3*s~F~*=5vkEq@Bw!%0qlRE?nUxWBE>cwY)NGelS9iU% z$$)}_t~*fVlG>1jU~W0*5KM^39=s~(cThh-F1clWy60t8#5(j;P5qyG-hR)`>iTcx zQn8Gyt}=op_fnb?Mme#jac;c*!5+G0Z`cJ>Q<|j8UWV;_ny@}kVv1RhV4X>#tT`}w zMUqq|AyJC*6%TD`t(iYJG5mULIB`(#k`+ma^{0$Wxh4{ankF12ob~O%?4UekS(l)I zVrAD%EsQI4$HbtMTH4LqL3X&^GnRad;uxop*4|-!g%^YwUEwj|8U=j~MfKe*xLFAci5Di4 zcyY!wEyNCzBuu!{G7GgMN<)=13fK{4zjQ}bLKG%l5-NxAeB+3zPTuxFR6BL}Wmr?b zC~B*s-WJn$MWZdYE%;@~Q8=Rqi!2?ny;A}G@^P^P@)I*{F$)&$@3%X_z_TPP|DBvyUBUV z%mWjdPBXn_Y5gk5ivLkBV=OmqWoOGyU4jrJHUw<@4 zczA_ks2KB5fEAGAo-Oq4E&T+XnI6>;JRlpAR0Es!FahQ|`HmytP}!Dgq=}-MUL$r8 zEkJm+Fd;o;qus;#iaw0?Mj!jtAzaZX(SB3uy#dpgZ^2Xon4*Jg(Wf~jJ9EfhTTu97 zJ^JclORPOz`g`NP|Lc!`EuFk@{>JPRcVqpFk-*d>=2uZZb=&fR%@~&NiK;pAIP;pf z&CUOwU;JR>_BSU^{(tuI@|i!I;@Qui{d@XYbL6G8-W&UKCWV3_-Th9qt*NUJLm)7A rQS(&ekLtdkbmeH%uEJnNM}SG3~#+xzYXiy literal 0 HcmV?d00001 diff --git a/degree3/CAY_仰焊.xlsx_model_degree3.pkl b/degree3/CAY_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..25bcfb9b361fb5340bd2efc36f1836e98c3c218e GIT binary patch literal 1247 zcmaKrO^6gn6vt;~cV=f>S9^COF;T=^bQIFCfq;R4BSH+BWYoDh7b&WHYPKs|UDfr` z>VSa_WY--iOdz$F91_SOr<^1Bfu02qddVpei0(0m9FxQ5brQ>?zHkj&)rO?nU4`vZD%gOFgkshw*kp=m zXWyB=qDZPlM6{-SH9&h>XO}Kb4L_O~P94;GWK|L3S~J$C+z^E$Lj^~Ivw<7h{gg*6 z>k$-EtlgHa3e_XZ+46a37sp{BjuWC0<;dCP&qc^+81O7f2PmZxBnirPemtiX9$Zm4 zP2q)U0Ck;(5yKjisTNkw&hZ}3wIG55#5jfU${Q~B<3(HTnE{;RwwDc z;~J1g`KD{P+n?;hDn6~V#)a0yjEUy@aG z1d&iANHS(J{>EHa)fja1$^U{97?r43n$P$YUJ(jMXY#*;JMyzQZ!?bhIz zVMF!v*TdX~}; zhgaodcL7XxzW?g^yLZ2E49*~VlYJkmJB!IbYzT*fu)UIvosnFEW zYs3xX2836Q1nDCe9~#Y9d^kQ5A8pN!;EIpM$8Dwm3QQlq22%-Oicf6CCv!>;=8(O# zpzy_7`}K`~e*4USbmz|FXP2M;e)jOsJI#~VZ#>-oU@Wjzh4~uFr*1wU*oAiU>`?1+{n=n}MyK#^=kl0#65}^iA+d1fPD4Mz_tpFLd28jZ zyTwAjY+YYq1S{?*G$D*~;%x2AWc#gq_nN!v8n&VhNwhl;+r>n%0T(gFtWU5>717SV zHGM^qM2V1SP5G*icC^keo|zhcHZhz!sP@RJBE+?3Y@KpL6b=m)90|?_ZfJK?9(>NKRgocnLDBIcbxKemyQm&5*h_AgGeb@~*Z@P|a zKpMp>uH9~bu?;K#w2m1USPwHME}=Na38Zyk6kqNIVMbSZOt?Y8z(7%3^)y&3g}KBJ zg(7~OGDCB*hZG3~*G8qG@nm77^2Pysve+uD%TkC!(IcVu2+ua2oatt54`jJpg# z&og!rm`F{MnjK5mDuXQlAN5nlvU44ci9{EP(m)claK-<~UvX)$;cPu49V(eY2dHM( zZ%hy#U7;8%#(WfD4dm2M<@(N!ehSWfpBe}rkPS&JUR9 uFm_S%MD3UR2QM#IKW@4W7_8|1$j=%`Y&9maPy?v#EOa;!(52z%*8d01z3fE* literal 0 HcmV?d00001 diff --git a/degree3/CAY_立焊.xlsx_model_degree3.pkl b/degree3/CAY_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..896c44e56f8583fad6ac83f5e784d1308e4fef99 GIT binary patch literal 1247 zcmaKrO>YxN7{_fVcAO;%P9mhXR24n6xF8mSR5eIdF+!qMT^Zya@CA)#*W>KK?99%~ z2CRaVR!xYdQK{6)rK(z~hkk?h&=>XPh{S75^ng?!nXzQzbv+)rpi80Ey->ZS4a8~4uV?v|_DvNj~q?h0&|62bah#1yk0!6sEi zJNxG36-5#yLZUV0Yd+f7I=ggfVt8R}IB`(vk~Kw$Yfjl3<%TF68Y(yvob}zn&QTt+ zv`bJxv3A?GEL4{$XN%{ZT^xmhIF5-%lp|-CuZn=tz~^b4^ie`XND`E-?08No+`p`F zlE4d-0IE6-LWVUYQ_iiNo#9=aX+Z=9h;Rbo6*pZ}ixzFUYx;1GULEg1Q@Xh72HUq? z+tneB;!W3TwLad1m4BLNjSH-Y857r09ODGiIy{Uo_ku8^Ydj|0prCJ{sLfg$Y?Q)W z;)g;JKTesUx!6OBgo10M($ILaFjRS?fIV4k7B*!mM4{-CPJE) zh7IK_vb-fLZ8>vWR@-v6-Yi0n(i=UPXX(iUof7CTuF5&cPtLdH0%VxKbyFUEK1*2( z23O=_XC6#;zyI>_Z@)bG>f0y3{&Y+(VI!9Vf9Inydv=+JP!qF18B(d*6WAzaZL(GgqfJpE-dHv6wGb4d5E6lH@4{>j~G4fK_>5ct)lS09e9(p0#&Q^4Y wArKh5sByl!`rW5<$Nu@C;kIC~q7#vyHIUd!Ok$z>P}>>ka3G*dgW;|JKTV43xc~qF literal 0 HcmV?d00001 diff --git a/degree3/CA_仰焊.xlsx_model_degree3.pkl b/degree3/CA_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4a8862088e8af14de245e43a21fa005222367b0f GIT binary patch literal 1247 zcmaKrO^Xyq7{{k)c4lW=S9{k8CWep@aMyqhdk|I#?udy5M`mR%nH;33?y1=>x4OFP zrPVkV{U!-24DuvU$4aWmST8=&73eKlQx*o*Og6 zhfb+j##5V&V9EWIri4*Wtf`-$Z135lH|=%1Y^q9=RM`u#T}%_!=SfU4>k+IoNt898 zO<$2Dl}SjHqI|_AgqU$uknJGO0? zAr0r6ZM9lwcVHEt=9;#FaWP}bWfaFag|rTj;w!u$%;*M>3D+p-Yba{d%Yqx_u#os+ zB8eYoOw&T_B1yu8D=o87yP`Bwx#NIc;WSIPML9%a(j}pC3C}mKsC4qS2V$mEgI|U< zpUVs5$VK#sy4KUiexianh&=+{@pUdT_(x5Ylluz2g5*#B;p!V3l$ z#6o8tOkO^?_5A6R7k7Vr@!L;dh()Z$fxsVrGl6d(M-zsMzBL`Q2gT6A2@R$EjIT`3 z6|)FTWIE0CuBC0xfUNi*^)kltvxmk+qDw?7APHKy;ve@{Y!+-;ZK9PeDAZ|~}-;LP`^hTs9&kfa*etc3|M*U5Jr0f)-AOg&8$)$|gv zgJ>DTtA+{bAsZbW%~y0NIvjo6oEgCteG+|Y%DuN>`tlu^N&r)IWII~QDcPSx_Qrz3 z7whrUUzWc6_u1OdbHlGItADLM?tlL0WpnoT;fb-pR3+w{D4)8yd|)$%<$I!POg+xO z;caKfyZ`*3xnG@Ak1EH$dVTf##B0X++nSmRF$4l* t7d1}T|G4#PY4h(78g>f?D>@eWc>{^5#UxH-A8I=b9S#!c(qMG!{|D<;>t6r> literal 0 HcmV?d00001 diff --git a/degree3/CA_平焊.xlsx_model_degree3.pkl b/degree3/CA_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b9f71ba6d3ef22de30e6c93a47e2db08b83ddc74 GIT binary patch literal 1247 zcmaKrO^X~w7{{k)cV=fh*`#+vAQ}<9#7Q6>_8>$NGa(|93A4*woJ%OGYihPDTV37t z(yN0BBw{u@PzaJ*0xIz)2nNJ}2SxM)coMHUCGq4J@U(fl=Vg-+Qiq0zOi*VV>(lLRck+h2=9;#q4b8N>4BM3~VKHBq%$@@w`%a__4xS z1~1G4Xy`m59BW9XR$4i`Ao{q_f(Qx_;|#*{Zn`*#mu;dXlS6Q?I4e?S4k-e zNvdd=?1`4|0_L)1w?YG&9L zb)&cm;nhe=2gt=o$MY2*i;u^zwdcoh#jnS2*y`XJnBIF1rV79mpV*1tDkwQzK=#yv z!k25|PILX+|LT8|t$PoC`0MX;=Kj4CKW=aSvHQ+MU~3ACO;k+XVll8e$Lb|fwPqfd zp7OT07ku;R!Q#)}`TKLHKluN%&sz^~f3^0$cdRw>QrR6${rR&(!H^z(A==K?HNg-F tj9uKi(D>?i;L literal 0 HcmV?d00001 diff --git a/degree3/CA_横焊.xlsx_model_degree3.pkl b/degree3/CA_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0764d65586c4f8e845295b4b601dc1b1a8b83ae3 GIT binary patch literal 1247 zcmaKrO=}xR7{|4;CCi&QUONPmrkLi^ItDNJU`QY@3Mr*jMGiW&>cI@NtC4r2+1Z_! zbs~~L5)#LPp-?=&G?3o<0g}=~d&s4feuQ3pYEtM&$jN+>Y0m~{!(nIy`Z zbCXvjNo5ier6}L>(UI1g#TygD&&Gxm2h|SQl7!gCl<_FnMB-4>grkJBz8#q3l!q+q z5EM|X?5?RKvO}ab&UI@RMqwb1W16P)KnIP3@b>cQdn6t!#gr|2FAsVCAUx<;}p_5JB+XJf-s|7JSJSDps%5*4KEAsm%~Eh zhlwP9oH0!cv5O=L6Rxz(LhXvuQ00ySc7@X@Jr?B=Qk?JE2- ztSMg;l^s!SiJ2#&))KSJ4F_@*?&!fHOII9gmqEXAK^%wt#9T|9fDDVb?uz;MvlL!1 z*c1!xIWYPA*`rs#{`~se?_dA&%BV~(L1Iyk1Gl%MhK z$$82w0uz}|Gks)f8`B^w{zu)6vHa|z5s_${NChN83)lR0f6ZpWjx}CRI#e=;4p7an zKNurCyh1TljQJ?Q3dr%kEcC4-{REu3F4Yh`ARCfY1Dn+_0p{BIjw9eu*`}$biK3cr z6FZ2OA-qbMkS?;(so{J@r=zpchmGkWT+veWktuiIf$7qFFqHtN=;Ph!lbn+I9J03- z6uwyN_1}62m;ZU0o>}?o4gUS=AH9n|ZD0E4<^IKyz*HpWJ(N$~Y(B6V!}5Qks!u%5 zz2)uj(0lsoVD`Cl?ZwpUr*G~&tpBz5-NqH?bbaKdwBH^3b0>v@AwBh>kaF9Tk2E$wbU%89wVgLXD literal 0 HcmV?d00001 diff --git a/degree3/CA_立焊.xlsx_model_degree3.pkl b/degree3/CA_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c082ee00da387cee3cda3bab437b84b40c372e27 GIT binary patch literal 1247 zcmaKrO^X~w7{{k)XJ%(R*=+BGKw>ng2b~CM*nur+Z#DhLAe+R89S#dftA|?b^Xt zUZq?%&^w%BCBlqllruq{ZC;yi@4E9Jx({62*0rITcGqFs%2GZSX~HlcQEYNWwX@GH zUQsktDWO_3u^pl#t+TCb3&Ypvh6@LcA>CG#y6%z~SUt&xaI6 z3~RS<>!})2<*awb+4Wf%NZ^EO!~}BoZVX%8Bu1WvcRL0sGSHR_@3uK_negqJ1igjW3r5McX4;8#LgTW5dLT ztnbQ3UoP*-W?!zfyB_2y{n>+MmcBeTsDgg$qC5`y$<@9*0U4HW-I8mMW+{Vca$T+u zR>9=2FF(Hb(+~GQ`TYKm-@GJS*vOMncyM(N-wA={43&NBdiEGfpo4Q7D#aPUw>U4^ z7BG>UEH_7%u3H0H`9B)voEPT+&4@%dsM0_Zv~VMQIoxo0wCik8kPekBpaWEk>!;=j zPp?n{72_d_um*C1H%op0NWTDQb;Jw=56BXl8DO(PQebXS>;wW1wd>htmTG3$4eBOw z8^WuTl#Y;#Pfh15J{_NppYGPCaK-21XKi)#KbS5(0#gNGieK1|Uo0qDDQ;(@%{f+2h^n*jxcZQ{ z!^7ZB4LOy#G<>&%2*)z3QFr%)C?%Mst7uqEIlTryh&8vkgr!1Oj6h scdj(QKKEJg%)hOU+l9f3FT`QdKx!KaO;R<6+Ac$fqZGO{ncjx~0rA}FjsO4v literal 0 HcmV?d00001 diff --git a/degree3/CHV2510_横焊.xlsx_model_degree3.pkl b/degree3/CHV2510_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4a4d52074df242349ac30b3659b32be805ea430b GIT binary patch literal 1247 zcmaKrO^6gn6vt;~XJ*IN)!to16N4m|xC%DxL0BQOvn)u+$S8BkAV^W&Q?p%KUETH3 zYX(cu)|Mb50=`@Gc&cV=jSgauCnCWqsZAu_|I6da9=Wuin@1ZI_3S zi-mj{SKVL)OYS8!A&hcjP3_8L`-44w$KJL}rlK@Sl)VPqg(PM@9!C_jF2OpLL|OCM z^c6`G83#lu$~Qc;ueE03%GB`U#Bl1M+94Z~5ZjnBF6Ej?9B3MI6m!-%S-c+mjQSo=qojut8bFeuY-YzbDRJ*>iIW6g zmZz@f5DQ%hn+HQgk3 z5H3M@l^`ZvWW%GQ`3jGRC&Et}b?cj7w^DS0GPth`{AjKk|P;pZ!9Q$ zzFz&Y6^J9UjNX&1bZ0ZhV1Di4|KM+-Y>T&K3 zZ+m;Sm2G+K$Mv;K-#@9II`^c0_1l-NTf61@*h^v9o%nO6g@PeH`d+lHsj2`&ATV}e qeZ5xL{-2}%&#QI^1}i)pdRYUBsYWD%9i!r|mHS literal 0 HcmV?d00001 diff --git a/degree3/CHV3010_横焊.xlsx_model_degree3.pkl b/degree3/CHV3010_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c2056dd501aef31d0229b32f1b81a5d27af5b7eb GIT binary patch literal 1247 zcmaKr%Zn689LHy7cV@@d)!vaMkCl)>&`rR`MFbNP91%irWR&sXT%@S(so5&6uI_sD z>I4HDaMvBEkG=>VlHf+RuN&X1>+!h=f+ zrzyNJ4WO>GFydH4GS$M$**Vd}xfVoF0E$xxue{-?PZw;pX9jSlZ%uZfshmIQhFiB> z$1Ot|%YIZv*kIL0ZYwKR&a@PaUBt0E@Cpm1QIs4YJW*DFyW z38F-iAkMg9h1f%iM2XNwWs&h@X{7ST0eiCCDs9M0grcNJBJB~8Z#+5E&D$Qz*=`Mf zIW|nJ$m*u7b>!SFS?|a_%dIlxD82E6MV6l2+pU29{7JbF@{{u&xgRnt-ntB%3>D)63b6)q{BwoAv#XziGv8+hf(K+Hk{V#M7A3%3H{S^a9BS9L^)%7U zur=a_bQ!{{MhWR7M;Ax)Mc<@L^iXSd1Q&gWzH2M}|H1UhOE8rHCVF^_9?2;=kVE#u zg2ET;C^@%!^XVJSzdwCgxpd->Uq62Kh|OVn{ljO6IFBS zasCBwJ3E`lDqrhI<Q(YZz@7W_a?RC3o%1V<&*^97UNMhFGaYQle60B26 zlr^7EUXdh`aX^%!e9c4KT5A?oCx&Ooh7$*s4q20g*v6EpQLc%^fu=D>F=stHFtd~g zEbS2FQ>^T|DaW!yq&0;z*36H>KpaOzA6BP=F985MJT74Qt`NDR*=a&f%xy9cYRx$L(PK zj&0dRNTYDgHk-}!Td?v^V_93@xR|l{M-)XkfwT?`-Cdg-`w4N^Z4OWv4FMM>w6pL#_;XtXv|RFw?@Itpa?oRroqY1 z`0C_5Wfp*mR41w4wzQ2B$nyVDH)Sk4*U*SabcIL-BtZ+8ykp*yP5r(#wTyJAWCk6e znqBW7BRsr95mbzM$j1uEseO~{Tif~xICEX9A$UMGAc+PxD?tp*wX+>Zz@f5DQ%zz; zHN8UYAY6p-%0W!J$cFod^A&y)9tb~cl!kDH2g5_A*!>8mQ#)XC0H*NpdiZ5V$({_d z4;B(w@+;!1}pq3^s)vLQ;A3v%O2Er8anL9(51of)_V^)@#{bU literal 0 HcmV?d00001 diff --git a/degree3/CHV_仰焊.xlsx_model_degree3.pkl b/degree3/CHV_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..913ac8818cc50b9f1cd87f10dec51afe693f1315 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@@db!S&3F$U2?;%*=v_7Knzva<-HP8gRFaV}C;_tb2aR#$hu z^d>_#ut8mSLLq_FULqL0>ye(@(674R-b}or|Ps9 zFN_1I>NE&B){sm&w{mt$ba18x5fp&p1i~xcbhJiiZMkE5aHfYwJJ6KQpK$%HTdw8i zA&ug?Yc`wbc3|b7#*%S?^)To0cPNT*0%;u{#Fu+Pn6p(85n)i!Gf>nve+oxl%)`bafgK3BO=>)a-yBJJ&=>_3jA_x zm{^qMO<8Hlsavwzl6&SGMaWTl!w2&$J-N4C0{!_Dav$U;r(1GAWSGCTE@$4)Qr3e0 zWjWiP29tm8-uV0R!&kR|d-dp#&*U67@<8BkpBcfoU!V~~dEXjEyB9^!!4VCG?2Nx3 zpC{}bFp-)hHM^FsF$uE#f7DGm&(1Y8BoeI=rGX@9;iCVgzv$9n)7e@^I#e=)4p7am zKN=xCxIz(BjQc3S8px@Ao9kP<`Y|}uU1lJ7KsF?a0X8dP49vB&oj|~$c1>GNV$BR& zBd$;9A-r-JlP+@f;9$P!hx9Q0xG_0^iyomzZK?YXOkckTQvqP2pKj6P86`6rWN$4f ze7@A{4=%jE_(^^9%JL6i6#rVf_w>QDOP%D&_Q|2ZmK7G)P&RdYvVl!GR{s-Kee7}i zEpIzJ3z9Cg+vk?={JZhz-4_q*_rJOG{O4c3st>&sw!0&L-ndXOqzC^KZD%Vw#1IIK s9j%|L)>r7ui`UQA-6jkc{haz)1BtCfB#KoJYC8oT4r1t1e{k!+0eYV7i2wiq literal 0 HcmV?d00001 diff --git a/degree3/CHV_平焊.xlsx_model_degree3.pkl b/degree3/CHV_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..913ac8818cc50b9f1cd87f10dec51afe693f1315 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@@db!S&3F$U2?;%*=v_7Knzva<-HP8gRFaV}C;_tb2aR#$hu z^d>_#ut8mSLLq_FULqL0>ye(@(674R-b}or|Ps9 zFN_1I>NE&B){sm&w{mt$ba18x5fp&p1i~xcbhJiiZMkE5aHfYwJJ6KQpK$%HTdw8i zA&ug?Yc`wbc3|b7#*%S?^)To0cPNT*0%;u{#Fu+Pn6p(85n)i!Gf>nve+oxl%)`bafgK3BO=>)a-yBJJ&=>_3jA_x zm{^qMO<8Hlsavwzl6&SGMaWTl!w2&$J-N4C0{!_Dav$U;r(1GAWSGCTE@$4)Qr3e0 zWjWiP29tm8-uV0R!&kR|d-dp#&*U67@<8BkpBcfoU!V~~dEXjEyB9^!!4VCG?2Nx3 zpC{}bFp-)hHM^FsF$uE#f7DGm&(1Y8BoeI=rGX@9;iCVgzv$9n)7e@^I#e=)4p7am zKN=xCxIz(BjQc3S8px@Ao9kP<`Y|}uU1lJ7KsF?a0X8dP49vB&oj|~$c1>GNV$BR& zBd$;9A-r-JlP+@f;9$P!hx9Q0xG_0^iyomzZK?YXOkckTQvqP2pKj6P86`6rWN$4f ze7@A{4=%jE_(^^9%JL6i6#rVf_w>QDOP%D&_Q|2ZmK7G)P&RdYvVl!GR{s-Kee7}i zEpIzJ3z9Cg+vk?={JZhz-4_q*_rJOG{O4c3st>&sw!0&L-ndXOqzC^KZD%Vw#1IIK s9j%|L)>r7ui`UQA-6jkc{haz)1BtCfB#KoJYC8oT4r1t1e{k!+0eYV7i2wiq literal 0 HcmV?d00001 diff --git a/degree3/CHV_横焊.xlsx_model_degree3.pkl b/degree3/CHV_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..913ac8818cc50b9f1cd87f10dec51afe693f1315 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@@db!S&3F$U2?;%*=v_7Knzva<-HP8gRFaV}C;_tb2aR#$hu z^d>_#ut8mSLLq_FULqL0>ye(@(674R-b}or|Ps9 zFN_1I>NE&B){sm&w{mt$ba18x5fp&p1i~xcbhJiiZMkE5aHfYwJJ6KQpK$%HTdw8i zA&ug?Yc`wbc3|b7#*%S?^)To0cPNT*0%;u{#Fu+Pn6p(85n)i!Gf>nve+oxl%)`bafgK3BO=>)a-yBJJ&=>_3jA_x zm{^qMO<8Hlsavwzl6&SGMaWTl!w2&$J-N4C0{!_Dav$U;r(1GAWSGCTE@$4)Qr3e0 zWjWiP29tm8-uV0R!&kR|d-dp#&*U67@<8BkpBcfoU!V~~dEXjEyB9^!!4VCG?2Nx3 zpC{}bFp-)hHM^FsF$uE#f7DGm&(1Y8BoeI=rGX@9;iCVgzv$9n)7e@^I#e=)4p7am zKN=xCxIz(BjQc3S8px@Ao9kP<`Y|}uU1lJ7KsF?a0X8dP49vB&oj|~$c1>GNV$BR& zBd$;9A-r-JlP+@f;9$P!hx9Q0xG_0^iyomzZK?YXOkckTQvqP2pKj6P86`6rWN$4f ze7@A{4=%jE_(^^9%JL6i6#rVf_w>QDOP%D&_Q|2ZmK7G)P&RdYvVl!GR{s-Kee7}i zEpIzJ3z9Cg+vk?={JZhz-4_q*_rJOG{O4c3st>&sw!0&L-ndXOqzC^KZD%Vw#1IIK s9j%|L)>r7ui`UQA-6jkc{haz)1BtCfB#KoJYC8oT4r1t1e{k!+0eYV7i2wiq literal 0 HcmV?d00001 diff --git a/degree3/CHV_立焊.xlsx_model_degree3.pkl b/degree3/CHV_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..913ac8818cc50b9f1cd87f10dec51afe693f1315 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@@db!S&3F$U2?;%*=v_7Knzva<-HP8gRFaV}C;_tb2aR#$hu z^d>_#ut8mSLLq_FULqL0>ye(@(674R-b}or|Ps9 zFN_1I>NE&B){sm&w{mt$ba18x5fp&p1i~xcbhJiiZMkE5aHfYwJJ6KQpK$%HTdw8i zA&ug?Yc`wbc3|b7#*%S?^)To0cPNT*0%;u{#Fu+Pn6p(85n)i!Gf>nve+oxl%)`bafgK3BO=>)a-yBJJ&=>_3jA_x zm{^qMO<8Hlsavwzl6&SGMaWTl!w2&$J-N4C0{!_Dav$U;r(1GAWSGCTE@$4)Qr3e0 zWjWiP29tm8-uV0R!&kR|d-dp#&*U67@<8BkpBcfoU!V~~dEXjEyB9^!!4VCG?2Nx3 zpC{}bFp-)hHM^FsF$uE#f7DGm&(1Y8BoeI=rGX@9;iCVgzv$9n)7e@^I#e=)4p7am zKN=xCxIz(BjQc3S8px@Ao9kP<`Y|}uU1lJ7KsF?a0X8dP49vB&oj|~$c1>GNV$BR& zBd$;9A-r-JlP+@f;9$P!hx9Q0xG_0^iyomzZK?YXOkckTQvqP2pKj6P86`6rWN$4f ze7@A{4=%jE_(^^9%JL6i6#rVf_w>QDOP%D&_Q|2ZmK7G)P&RdYvVl!GR{s-Kee7}i zEpIzJ3z9Cg+vk?={JZhz-4_q*_rJOG{O4c3st>&sw!0&L-ndXOqzC^KZD%Vw#1IIK s9j%|L)>r7ui`UQA-6jkc{haz)1BtCfB#KoJYC8oT4r1t1e{k!+0eYV7i2wiq literal 0 HcmV?d00001 diff --git a/degree3/CI_平焊.xlsx_model_degree3.pkl b/degree3/CI_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..56ef489cddc0ce55e5f1b46dd9e44f7deb4a9a06 GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@?4S7%oxo4ADJpjibQ78DeOogjpeiK9#i4#-ke_tb2cR#$bs zv~heP8xq$YC~`@ypn@Tn5OUj#hvX2yLOwwbYA$;7BpxZ2X4vvcRihM$cL#||nTvZ@GijR{+$+z^FBLj^~Iv!3hQ-IRwc z?GO}Dtlfq!3)LaY+2R>zXNO@Rj$@(`<;dB6mqfs5;PW(2dMKeGBnir9cKlQ++`FJ~ zlE4e&0IE6-LWVUYQ_iiNo#GvwX+Z=9h;Rbo6>qty7R}mn$MoPFy+7K4rgZM4>u=n4 zEw>116mPg@v-!m~to+khHZHIpW=wp8;ut58*1MQzm5V67D9 z5LKKP)3AIOfw(;adJ8OF&C)*YH zW!O-@B+Kiv(vnlRWwj-DEjEgfqx6Ok=2?1jx?KYOxs!4?2VRzd;HwX+>Zz@c_cTTO(f zhF&4AA1y+7U;iSupZ|4gOa1e>xV5}_YACQ}h52QaP2H|+U{i+GJEE$O zJa+QaFRs-OmEwg<^ZV-$?|wD?l5Z^!y%aXPBY)nwP%xwi{uga$D>}pw v2#j4+KT|z^b>+9S-@f}A+a#}VuDD5RKm2-b-t%9?|t zS0ssL0B#9q!rDfu4N96h{XArO>^7Y(ZQSgx;wTZ7B!qbf-##(9HJu%)Y!7sy_ z@;Oml5v8V>SQX`_*fv|wLyp23JeXzah{;v~^yiO@?U0|SG{p|cFnjBU*!g9aqU!Z7 zi>X!xO#XXv=ifgzUfqB6>i1_y#5C4om*=jZ8N#=Nqaj0C-|BfYi9+b$kcM1(#@9yY zF*6NJBsxy?mZhzagDm?WbrQzXa}^DUM9V}fAPHJH=N@zCY~rn0Q%y;SN~X{Os_FH< zA;SGD6hg(Ai#)7=oa(tu-`vuVz^QbohTs8NpTrv2Ecp>I*GhLB0f)*qOgWAe)pVKI zUN8&c75#{GkPY_q=PQ^A_6G;*<9)b-?}Hyqq4OC`^IyP}1DJxJ)`Fi?N_M7@eX^kN z+4^|sV)^ew2WxLG-TOyAfBWalWm%bDeX+29VjwU@iTM&rr*2z1unEKR8&TCp9xI=C z+uVG-_zKXUrCFNrX1ja6? rohqA+_w!4?e)pGMfx!xn25#CwVoD(iBiV)8PC$pf2)fkk-@5+;-xTY0 literal 0 HcmV?d00001 diff --git a/degree3/CI_立焊.xlsx_model_degree3.pkl b/degree3/CI_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0973be297f0646e1c2bb25495fe717a3ea4c11cc GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@?4S7+AE=b{GZ{I3gM`ft=lQJ`Okwe33>;4<#&wBthBCjz1`cduJ3* z5_n-8Kvkzf$gzfG%DI)ZQ=)@2Er_516ekc~@rI){I%~@v(}Ocz80|n)I(5wT*KfL( zTZA--ypu+3&NbOiiiku~CE^r8j&q&(f3A?Goru9g{mDKRMHqyCB2-t;=%v$63l+ z&_5?<+cRMD_r2?{A8)?-?e?3$9)2U|u#tNLf8(bSe7gi1F_ibMQMA)2f)0*oC}d~+ z>-aoj=YWaSB&pf9bd5=n<^Q8@%6WFKp&^mzB2gMhf)+0M-}y@}4c45kWu!wTGw1-- z?E1?Q!hWUhcW3QNB0iqi_X)1bbn)V02lp=9<-(I2QVG~2&MwSL=UgiBN-*TGsxas zQ22Z;{P$w>!2!R%a{WY;KL7v8%ipiu3M$W*H@+VVY*}G(0cBISBOBP1WA&M+>SK>H z?|IwWy0iMv{Momc>R*?l{paVusBix9^Yp*s&*h<)!bW%G&l?vChIH>I(RQ|?Lkxky t*wOk*_3p`6kLn9YpSm>|Ecz|=vj!4diAWTy9@KUUIvm8%rT*a7e+LlS>s|l= literal 0 HcmV?d00001 diff --git a/degree3/CV17.5_平焊.xlsx_model_degree3.pkl b/degree3/CV17.5_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f479d27bd3cd01215a36168a6dc6a55cbee0ad68 GIT binary patch literal 1247 zcmaKr&u2v&;JN+3mwqf}Lek%Qa=rV<)v*W>Jv+1Z^R z8?XdYTF4KJ5f>(x9?Gr#2dW<0Ls7*6?mbmKZ~zXd;@U$G;qCfI03qhEp7DI&ykDQU zUfj8#&t=Qh)G8xbayO}A;2ZEP=M6pwb zUxqd1bE32<%55>dB`R&PZ?>6-9ECG_Fw4>r`#S~DFP{+yAU{!Ui-VA1_SOw?=%VYhn4t|D`{6&W;48Br#t_>D28@2R30?z9*{2 z#AEd}Z@asH(TD4I<}NMfzFFmefwo&A+1JNK82-VI=!d+iB>q7eSW>!&~(S!| z6h_c-0>xgo=Hg-Zupr*tlZV}d;(y@HlU{TWp1pV)f8BYEidctERqFez-|O>RDX;%k zEac0$>Lw#taxb9?VU!bVYL`dbKkU)F_Kux56{Sg{>~+}AB{A#qIHH(!3D&73%9{P- zS0qVf91x`_U-HnV)|$D?W5e?!!?A;Ehb&1#Y-7T>lxre!plQre%vsO&%~r|-mUam8 zDOPsPRASj7(wgF;HM7Go5XTWwh;n4j_8YO!sPFMKN_r@v0VD~^W_CO$CGK67I7#4z zaR4=y`T@fVlBwiY)=csa&a@zc0)#k$@QU|s=!UbV($PIQhr32Q(3CEnvi-FOwq@rb zjpA+FY&I`!z{)?3v)cN`!HmVXP!!<=(%LhKFZY5lqf0y@TqD1yp{NZv^;b$kF7bj` z5-&=brn%Tbk_0hVTBd<^L}8$Eh5Xv=5O5=Ghb&ZT)%%^ z%(kb&T z2{Q*wq&i9UrloC^L6-lIx+!DX*+oMl(K3+=NP-qFcqhCCoBFHPxEbkC$qYI`HM`zD zLU?e6BB&VikdGCR<6g}5txf$Hoarvr5Ii6okVFHU)gT7u+S!gH;85A7sU@+Znl2OD z59cAgN)VGSvf+-we1$v1J>lL)c>q`VW4OiqKGXP=xz|2*^#JzGCL6qt&{{3gn#Zc8?>DZ}zRQPsyDr$6(y zv4MWMvg^d&Yv-Ipciwz_{G#6Z__EM{y;vW5DXe!#{+w~4U`Tg-6K!j%D!>p3j9pk? qtgXC1SnmGx!*ja|gB2bRy{v)6R3j3_vIn)Dgbw>Lbg4hM^*#ao7U=c> literal 0 HcmV?d00001 diff --git a/degree3/CV17.5_立焊.xlsx_model_degree3.pkl b/degree3/CV17.5_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..98574809e41b7916e977537625dd5162817af472 GIT binary patch literal 1247 zcmaKr&uf%N7{_-v+0EwF=q4e>*0$)yL}^~gL5xyy#UiCE8(D;G4`G=1-Pycj=AHMQ zA8&NQmIO3rVd$k3C_S{$LvJ2>&_g{a2>t^e1rNpa;9pP*C4Js^ex;o$SSzc|n-bRUQ(qk=M~s)LJF+ zHVS?was5aVH%yqOnb<*+_z_oHCcbt=uBUSP0XrgJ%RLYUANf&>_{t$X-8f>TnYP^% zqs_Vq(>CfZa(@PMpOVhwDT{0Nw9raO*+LuKox z97l?3x=w62n1k?&eni^H1~a|+3QhzkgO6*YJ-C8TgHxu^eh;S455bfJn1VCg!E8#& z@f5NH3ksjDcYpu#=C9^t_4WMA`r}*oubjKE{MjeZ$DZw6>R$B6^p_V)g0ZGKxg^Yzu`*OxxHoO@BdJbV4sqm?hJeJ{D4_Q0PrEEEjs%zvV7 zO-cC}0)ep$s@KX@^UrTToH+g5Zoyy$^MRW-keE_P!bowPyax#PHj(;lx3uO;#i!wmxNC$~BQV&@|>K=B#V`W*6lFOWOqb z6f4^^OJh~tPTL^-l%@AcSc)c1HAC0&%z0Fne{BRig#5_hjkoFwqV zB!H?){eWQw$&_;|Yi4*GXIc|dqA*lBqktVztQT&JQhoQdp^ukxPJed zm}|{~$$$5L`uF+M&7U_mpFKP-=CKxgeQ$7a4Bu{!#th|ss~62q6hQ~aG!(Kk{%&%f zGV{Phs*_Z2TiW_G$nyVDCuJ-NtK3coO=&U-MO{Q#x{z!V&`rR`MFbNP91%irWR&sXT%@S(so5&6uI_sD z>I4HDaMvBEkG=>VlHf+RuN&X1>+!h=f+ zrzyNJ4WO>GFydH4GS$M$**Vd}xfVoF0E$xxue{-?PZw;pX9jSlZ%uZfshmIQhFiB> z$1Ot|%YIZv*kIL0ZYwKR&a@PaUBt0E@Cpm1QIs4YJW*DFyW z38F-iAkMg9h1f%iM2XNwWs&h@X{7ST0eiCCDs9M0grcNJBJB~8Z#+5E&D$Qz*=`Mf zIW|nJ$m*u7b>!SFS?|a_%dIlxD82E6MV6l2+pU29{7JbF@{{u&xgRnt-ntB%3>D)63b6)q{BwoAv#XziGv8+hf(K+Hk{V#M7A3%3H{S^a9BS9L^)%7U zur=a_bQ!{{MhWR7M;Ax)Mc<@L^iXSd1Q&gWzH2M}|H1UhOE8rHCVF^_9?2;=kVE#u zg2ET;C^@%!^XVJSzdwCgxpd->Uq62Kh|OVn{ljO6IFBS zasCBwJ3E`lDqrhI<zUDXKe_>2j*8yFPj} zFoKGX2^3zoa!^4pA}F5s;2zww!XCZsWe@6A&tAsYosUrw>(Hr6{a?MW-@889f0WN< z%T&}dBUo}brZHiZ6Kl#BN83N`;T!gvoi|0LNv!N8*v`fg>+mR~n6(Mki6qLJpU1CA z63fUZN>RS#q7AJzvlqvPzl;pW4oWSuBnh##2~(k56N!CIBaR}@I<{xFQ0}v&MUY3a zvRzY*WQ#~^@@K7?8HRy44v9jPBWt!_jyy&^mnUJ|K{53qNl@0);~6P&=MRbF7+x3$ zP*#cOGprz)VrFH{6mQ{F3nC~$fMW)x>qI}d5( zS8css|8*T!_NkrL)-w)fEV_ci5XX?#?m>K+7lavI;vwN0c^wT!tyL25dcn^mt{+L_ zh6&R&6FW!}KjKQu#Mh3<4OGrBU`OO@x!a=PBR^^pUpa)Q8%Inu)3$qJvRQ&(hBf62 zqPQkX4KZ~`lpA8xd@T<-3TOCWmZc*$Hw&P@uqd`beqy>IwnB#4TdQK*w^@pc*SjQU zn$uwN{^6~+fB*IF?)`T!o*WUgSc~nR+dnsgZ!1S5hO)lZ@@6v%p@SnDa_Jdg9iJ!6 zEHIJiIMExHwl)c}?0?iw7)#F;G$azO5UGG9XyJl;++DDVw`NTxB^@f6LI)umW-_=QDj{Lq7&*x=l3%56Jo?*1%@TkAS&my5k5qRJLx)aiplGE5!DK zc?hrQN2HBxFgKX5U`Mb!_^CEIfGgM=>@$V-S1_IY2BsXq6dddZhf+$mrI3BGpzzuH z_y6B^-OV}GJ?PVm)!(0(Rm literal 0 HcmV?d00001 diff --git a/degree3/CV22.5_平焊.xlsx_model_degree3.pkl b/degree3/CV22.5_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..021e25b80420048130e4ed94f941a7da6f6e4cd3 GIT binary patch literal 1247 zcmaKr%Wo4$9LH@ZcFZOrPAC#@wU;zS>Pk6ON~@x{LP8M+gRH6;Av(;i$Jr^fvpbIk zEP<3tB*fB)3zJI@ATDq~LYyM{P;d0qYo%Pc0XP1J@Z0qxDMFpYddBnp&F}U3t&DCw z%IC6WD(X5TSaLU}F=3PwYswb~+XwcmU+o<`XNpRbSlO$vorxpX;ZaC2YZI&!Nt88T z3}2BXmXS}CqI}s!yIN~zE)EUP3=D@3N-eT139+>iQ=wcFiG58Yjv~%FwreIR_gT^+ z$fH=&Xphk-Z_i9(bkYYzMpd5n54Pr|r^V(LSZpsc6IAEd;cOA^O1 zyf6%)tP;;>SV1zy%*vWE-omLCL{NYL#}HnA)drPd+7w&51LxrIU<+B#Q(M&5GY)1fx{1ON$B@?1UVNDsgc)7tA>kT%9SudTRT6Kd;Aaxo zk0f!!glU?I9VCe#aiwMAYe(dIDyJW?Bl5M}swnu#k6Of64&mv>5hKmC?VcEImf)9R zP5Hbiu8C4ZjNKFEhS)b(%R`RB=|7ld>4@=W0rVFZ#02CgCL3ZuWSG5mTTFeNrKot_ zt75u22`29z-hK1O*4z7=Z-0MsQp{j24tVay(g42w91R%C`c})EaTG!a2Q=i;Grl!E zkC+)?BGGZ8cP(vg6lB@|sGTsDo-3$NB)UPQ0+OJG^X@n9yiL3{Ybq(}P{|ZJKsCKS zGC;U@g+izpbCHJ?kW)FA=^MNHAvlw5sv&ql)+ezBHcNg4%r(;;N5G-7byJQbMK!%a zY&V#L@QQv!+Q3XTTHYNI{4f)l~#rqKQmOy7S5Qx0GXX4iu+Q%a^%$o4EK ze6~JYkMAzc=Bh8xKl^w4%Abo*e|rA+^w}4GZG77on4-k|I!dQ*UplY}!}5Qkst!F) z?(w#>v-b1E_UnIMRo$iEHoq(XSlxVl`Bdrt`^CPO+(vug&lwg9hVy1iTX1BkooIsgCw literal 0 HcmV?d00001 diff --git a/degree3/CV22.5_立焊.xlsx_model_degree3.pkl b/degree3/CV22.5_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4f08a3e137b11adebf2b1661e82f8898b891a498 GIT binary patch literal 1247 zcmaKr&uDtMLOB!E+3NCWd*2KYTa#)P2?6T@PGV!?Z^Z>O0cJnc{v zFs$9WEyt=um9xdu&dv?PKmtcpBPNiuyD!B7XMr!$DCwbu5l9l0&FpweDct*6;Us|< z#sO4y8W4^(Bva01qg8h;T7+?uolkQa>w-G9DXs{fu?l+sOztSJ|v)Mei1uOqFmW&ImhdGb0qA0=%q_uw#U+x8A&Q?T3g+W2jKv5gDG`LkFxx^>2 zqJETe!*a2Q6eY3HMy14fvM^A2!+SEh8N&nL!7rX4hYi z5FT8i2r9;X6krYH)PBtMt!@1noS7~&5Ii7DXkviP3WlS|M>6X*3#_S^Xn(yJz64Xet-Ea`1j<-4?}@1D=aRfZ0dGo1DkTJ{wJ#X*yGFx z-nO<@FHXPs=lNfC|Lmj9W7VJPo4@{YqH^!e($Gs`qdW5FjSB@sy63ZKJ6q8NLm)7A sVf}P<`OecLFW&C0yHyyh@Vn5@8c1y=qEW1RP}?c!a1cY6`h#2lJw@2=QUCw| literal 0 HcmV?d00001 diff --git a/degree3/CV_仰焊.xlsx_model_degree3.pkl b/degree3/CV_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5fa0b97c19d61fac2c49d22ab4cf2538c3a68b33 GIT binary patch literal 1247 zcmaKrO=}cM7{_NOnaS8DW|APN5pnmhM$yI`1O>s7fQT)l%wcyfp{VYuNtaevcfE9U zKtaL83>03hTs-JaKY=gof{5%%L2vsBR=>d>_F{ax=Ot0ZI`mXc{hxZ?e$Sop%_qe| zzD!MBX9P>`CNv?8a$-&O>Tvte9=&UC+XYirnk33D!*(`_S(nEV#jHcHP9;&+{4#n) zl0?P!>Ik&QAg12#|1rZb=#0i8~T(e;l+6%7T-WogcC?>z8_!i1z|>4ctp5Hepf?Ly;|zuDFwO24Pr^$ zC}o=FVh2eQ#9V2a2HFvYzRDQ{?1-XQSQDiH1#z1M${{@4IAW}owcQuvtqS}ytSMg< z<#kbMii!K8+7!DMydvZ%oWX;6mX6rnDuMpWX)y`;iK(X80~zLT-4fH^XDMoaZ&}Q= zroiO$<9q-9_2ScmN1y(DdQ8k>E#`c8^WqS`Jsb@g%KPRO&2AJy2ZuBivNOIpI**xI zU?SB?s<$nzHx9D=f7D4C%g!}4AQG(-semMC;i7xWU9_pcZcQyC9V(eY2dHM(2Zjju zuTTUPV=nTs0&;4XbA5ALKLTf}Lp1~s$Oa_Qz-A?gfw@+;;|MrZwqdGCtf;1|#P-4k z2(KK(q=Rg@w?ALuzHmM~=#BT`3J-;cO{wz@OlQA?sQ@sAzios^GD@a1$aX9!e7@$_ z-=FBxU+W)8^y+!?&$(r)7cW0N`FiurKw!!e^Xn*^x?S18rVPuUL{%SooZ8`SYirH> zd-C0J@BGK!+ojdHm-YYapP&6cceXz8QrPSa{W+sT!I19#A==hdRDdB67`w2(RDDyP m{_@}0g}Pmb!3s}=Zq`6zDiMid*@fCpK!^Ppy4366x?cfCe(I_K literal 0 HcmV?d00001 diff --git a/degree3/CV_平焊.xlsx_model_degree3.pkl b/degree3/CV_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5fa0b97c19d61fac2c49d22ab4cf2538c3a68b33 GIT binary patch literal 1247 zcmaKrO=}cM7{_NOnaS8DW|APN5pnmhM$yI`1O>s7fQT)l%wcyfp{VYuNtaevcfE9U zKtaL83>03hTs-JaKY=gof{5%%L2vsBR=>d>_F{ax=Ot0ZI`mXc{hxZ?e$Sop%_qe| zzD!MBX9P>`CNv?8a$-&O>Tvte9=&UC+XYirnk33D!*(`_S(nEV#jHcHP9;&+{4#n) zl0?P!>Ik&QAg12#|1rZb=#0i8~T(e;l+6%7T-WogcC?>z8_!i1z|>4ctp5Hepf?Ly;|zuDFwO24Pr^$ zC}o=FVh2eQ#9V2a2HFvYzRDQ{?1-XQSQDiH1#z1M${{@4IAW}owcQuvtqS}ytSMg< z<#kbMii!K8+7!DMydvZ%oWX;6mX6rnDuMpWX)y`;iK(X80~zLT-4fH^XDMoaZ&}Q= zroiO$<9q-9_2ScmN1y(DdQ8k>E#`c8^WqS`Jsb@g%KPRO&2AJy2ZuBivNOIpI**xI zU?SB?s<$nzHx9D=f7D4C%g!}4AQG(-semMC;i7xWU9_pcZcQyC9V(eY2dHM(2Zjju zuTTUPV=nTs0&;4XbA5ALKLTf}Lp1~s$Oa_Qz-A?gfw@+;;|MrZwqdGCtf;1|#P-4k z2(KK(q=Rg@w?ALuzHmM~=#BT`3J-;cO{wz@OlQA?sQ@sAzios^GD@a1$aX9!e7@$_ z-=FBxU+W)8^y+!?&$(r)7cW0N`FiurKw!!e^Xn*^x?S18rVPuUL{%SooZ8`SYirH> zd-C0J@BGK!+ojdHm-YYapP&6cceXz8QrPSa{W+sT!I19#A==hdRDdB67`w2(RDDyP m{_@}0g}Pmb!3s}=Zq`6zDiMid*@fCpK!^Ppy4366x?cfCe(I_K literal 0 HcmV?d00001 diff --git a/degree3/CV_横焊.xlsx_model_degree3.pkl b/degree3/CV_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5fa0b97c19d61fac2c49d22ab4cf2538c3a68b33 GIT binary patch literal 1247 zcmaKrO=}cM7{_NOnaS8DW|APN5pnmhM$yI`1O>s7fQT)l%wcyfp{VYuNtaevcfE9U zKtaL83>03hTs-JaKY=gof{5%%L2vsBR=>d>_F{ax=Ot0ZI`mXc{hxZ?e$Sop%_qe| zzD!MBX9P>`CNv?8a$-&O>Tvte9=&UC+XYirnk33D!*(`_S(nEV#jHcHP9;&+{4#n) zl0?P!>Ik&QAg12#|1rZb=#0i8~T(e;l+6%7T-WogcC?>z8_!i1z|>4ctp5Hepf?Ly;|zuDFwO24Pr^$ zC}o=FVh2eQ#9V2a2HFvYzRDQ{?1-XQSQDiH1#z1M${{@4IAW}owcQuvtqS}ytSMg< z<#kbMii!K8+7!DMydvZ%oWX;6mX6rnDuMpWX)y`;iK(X80~zLT-4fH^XDMoaZ&}Q= zroiO$<9q-9_2ScmN1y(DdQ8k>E#`c8^WqS`Jsb@g%KPRO&2AJy2ZuBivNOIpI**xI zU?SB?s<$nzHx9D=f7D4C%g!}4AQG(-semMC;i7xWU9_pcZcQyC9V(eY2dHM(2Zjju zuTTUPV=nTs0&;4XbA5ALKLTf}Lp1~s$Oa_Qz-A?gfw@+;;|MrZwqdGCtf;1|#P-4k z2(KK(q=Rg@w?ALuzHmM~=#BT`3J-;cO{wz@OlQA?sQ@sAzios^GD@a1$aX9!e7@$_ z-=FBxU+W)8^y+!?&$(r)7cW0N`FiurKw!!e^Xn*^x?S18rVPuUL{%SooZ8`SYirH> zd-C0J@BGK!+ojdHm-YYapP&6cceXz8QrPSa{W+sT!I19#A==hdRDdB67`w2(RDDyP m{_@}0g}Pmb!3s}=Zq`6zDiMid*@fCpK!^Ppy4366x?cfCe(I_K literal 0 HcmV?d00001 diff --git a/degree3/CV_立焊.xlsx_model_degree3.pkl b/degree3/CV_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6e661d459519385cf81cf2613fe76a85f98a8c9c GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@?SS7&z+k{Bhq=o++P4}!viBMTw1Wt2IXAs|I{PtA5|bye4o zUL8=-kX?76l1pkYK@tdC5&?7Z2j_N`;|L!*WGr@wyF(DwYv)2rBtv17YW6zPq4`p z(aydzQmoy!tqRp6%GvUovy0;}5XTA8h;rm?^O^`54Sk*^=>VlPf+RuN&X4Dn!h=r~ zPE&Yc8bDoVVZ^Y8WU7Ugvva(Mb1jIV05MJ>yz-`t8}Xv8_RIjz@!OLfXeyV^xZ(Ca z*Kx~`M){U&x7!zXVHKa?oN=M`Fk|8dN)ntxT8BsR61B;wKq1v=Dnpkw|cDR2CUemPRUX9Iz+LL1|M~A{2=piL^&}zVYNtH*b3=XS+4{ zW!O-@BCA`n){%4fWW6KzEeB=DQF`MCi!434zgq$Qr89CK@{ppj-nu0ZzM7?M zgu|=H1MnKUzdmM)kDS@A#WXN=|N1{xEIHi*(d60~r|Kkcu$EZlOok&_OU%%KBR z^Xqpe2#>B%0u^IE3b6)q8W#(FXHP!`XQ59G1P{nYBsIWhEfT<7H{Wpt9BS9L^;BqT z=mv4acp1X0MuPN_iw}+FD}F0J9KRdPj^K)q#_!om|9>#8z5-JTV2Y1z$H#L@4(5=( zw4m_C5+8r}{6Xhf>)+3^BcGoB^V}CduHL=&PxkZ9*|ES@73SAbK6U%@fz23JZ-}Zj z^|%;J5kTPX_1z82-Ap(R|eUul4MQE6vr`*h^`rKk?^H3k5@Z=(T7&ThkGS vKw#|R)>^&v%U}1KKV4|KEf}o$RP5&sB(|22M5qDOb`Clm3h2^sbnCwWW|-_2 literal 0 HcmV?d00001 diff --git a/degree3/CX_仰焊.xlsx_model_degree3.pkl b/degree3/CX_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..13614af8c916bb314c4b9e0d534eea5c0aafa11d GIT binary patch literal 1247 zcmaKrO=}xR7{?`9l9jcctZhQmq?G2;IDszsU~r)%GKLVML=J*dQ3%8AYUG`Ic6R4w zoromhLj0m;NDmo9>7j){^ASp^54|+!eu=u5^wKX-=h@YZ6B9Cr)r{u<%=7kpw#xfI z7Yq3^uG(M(OYS8!A&hcjP3_KT`^;Yc);_WerlK@Sl)Vevxg=&i9!C_jF2OpLL|Joj z{E8%rj02(+<=nXKZ+VWH@$E?T~dzh;2+5mvT)c4m6E9iaG1qzL};xU}=XS zpJHYAOeK~bBCRQ|S~EKg192P?g(yeX%zqR6jQSo=qojut8bFeuY-Yz5DRJ*BiIW6g z7za>OsUI+`Ael;TWz8h-;7ki5C_so42(P$pLpPi?m5%PgIs9<615Igd+4lE#ZObk| z8pVgU*=*iCf|Y+7*R=JGgBgqOp(w%$q;+8sU+x8AM%Q^nxJG_YLs1)U>Ti{TT;c_> zBwmy?n>Bne`!v`ho-h{8bS3{n-z<|9^4&w`&LgZajT;@&48Q&xZn2k(h6wZ0b&B1Di4|-xF1R>~ZD| zZ%0S9?pY4-U)qp_jsbcjV6*7Yc^->^sr6rm6xAfxy^> r_0?LTu=w(2>&YK>2L>zrEcCJl5>t&x6w4meb`m=5$Izwz;MRK$wCU@K literal 0 HcmV?d00001 diff --git a/degree3/CX_平焊.xlsx_model_degree3.pkl b/degree3/CX_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..335e99cb20359fed87ac88730caaa6e21dce0f2b GIT binary patch literal 1247 zcmaKr+iMd`9LJM1N#km5+9F=@@^Y-A3*{j6fE*(Q5hH2Mg9br{+0CRoc6N5>vYr!E z=mD*b4Eo^oML|K(XMOQOAN)Ifx4wvfL;daMQjdu9u$jqxfAhP2eyhce7x`SaOjWHg zf+crj8WTo2v8J*#+&-}<{9!JiG58Yjv~&wwr6%x?z5y#kVmny>!uXR zHj&ok7p$2Ygn>8?i9(bkYi4dn9;2SilQ8b0nEH?;C>!bVyp*_mP2xC)7e)b8RO0yz zD@dl4Sy?mA+c?#N2nrD37{bfnw?Q?SGNrce!a3MK+<~UBIB$FF4{X!ULK^uyw$W%@ z+JcpR>gTlejDs1A{y|}gV@T^@KfcTh!i+BSkZ_H>u7;x4tBJQ-@H2_)N0PW5o4{i?Vc#M%J9purhHD6)X^+~LO&9WZ>bFFm85pbw%!&Kr(QB7|V+Y4qPypkW0 z4zj_X{(J@df`h@Kda(~za5y+>3Z4JKboM8hasX5C$9ix)rDQUN?1u$~&(`|4eM<*e zxprl7SsnTF%{jgJ_SD_0xBuSwYalQsiTMgjr*20&unEKRH&N9_9w&bAwzXB6UzK}b zEu6pn_+|O{nU}Te55G2VZx(954DTgGCWEW~X4juL)=u)qL>wX7U#O8JY literal 0 HcmV?d00001 diff --git a/degree3/CX_横焊.xlsx_model_degree3.pkl b/degree3/CX_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fa5234b6541b00f28c548fa81164abfd5bc2ecc0 GIT binary patch literal 1247 zcmaKrO=}cM7{_NOGn273+DQ;y-_Xk@3O3{*WS8AdLQuq!QRcFPAVqagO}ezYy6dIY zL4_=6l35BpSh;vm5cDGm>Ont)2S35ai+%-(PxrjU6|oLIRa5_`p10q#THbtGEac0$ z>N+D>axb9?VU!bVYL|!GNA~1D_O6{Z6{Sg{>{ZxKB{A#rIHH(!2-c}2%9<0SS0qVf z91x`_U-8h6)|#oyBg1n;!;yn(o2*DeY<xKKG6rdn(lR!CyXB$V1wX(MRqTH&&FT-VmT$<_pz ze0*~6zc(+p9z5Q9{o<6E!dguG-sbrse0w<>GL-kNUNpN=1RWgGP{_{s*62KDrhti5 zC#l}CwDmH`^8ZmMWh^_pXh0;oL8JnbpoMeZ8E?*}{+cyzMmkh7gAP#5t`7|n?q8t@ zD#kqIV+G{67ju1cM?V5*qC+(V56A{2(ZFUkh=I9Qw&MsmRJLJiNvx=*H;C!VB4e}4Y`ug%{E0#lKgUq{*0?aBr=Wmx_ss>PAViEq4ZZ`bBm z<$>qROBWwLtInKxws_^=PtDs~<;8)Q!e(da&lwd8hIIcA(YB_l0t|t`*oBMBwL;;Y k`^sHiuxl__;px!J8c0kvB2g^6P}_0nupdL0di`7PD-K}h!T&1gdkDI4^Ue<_Mhn}jb|5MM~?^!Ev{#h*K z%ed+$BUo}Tp$TD>6KiT$C)>yN#65f0E|`kaBvJMTY#T|;20V@^W_^NnDv7e@*z^@i z5*Y_XDauzow4=4Aadm2Vabh@iQ0@(_nJdKh8N@xH{g0h_*&r691KS-P;@WM2J zno9kEVFk%law}_Qc@Jk=5J3S#oIrTR2R3xWc~j}>0i44xCOgoSt}NN%#zWh&3y?;tS zN|~m)*g=v6F;`lqfp$b;q;kdqJEGVsJP@S-1#yoA${{@4IAW%owcQuxZWVqR)|4-b z%DSj_#Oy;+>xf+ots>+oobiKsmX6rnErI^ZlGp?JiF!xug$(nz?ufaMvlOmBydmbh zbufAJ$NksO|JnNG_pN7tpA-$O#XjHL{C)!8UXCUV<$Y@v&2AJy2PZTXvNOIlJ5E#3#xm+u( nJ-W6!``Zh<4uchb8+us-iK#{;isb-mI}085W9ZUwbnE>GyO-!9 literal 0 HcmV?d00001 diff --git a/degree3/EV10_立焊.xlsx_model_degree3.pkl b/degree3/EV10_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c1ce89b872bd01afd1be02ab1207de96f2398c7e GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@@d-JP99OkyH>Nj5?nmJm>4*p-DOIAN5zI2S3ZYihPDTV2)l zqfG`3D2eM16cR}7As!SH$R*^c2St*j_Yj1DHx2n0JZ)b0{8%F)b?B*@`o4OR@@XN7f zVpUbQRjs4uZm4=k9aw3VAx9OAA1tyA)WL2A^yg2hLy(`E@2CaHuz2f=T6{H2)rf|d z)KYgIO#Zt4&9jI1pWnRo{J~ErRTEpa9EH1|PT*S*Xu?p@w^rF5Lxq-$+qRUhpAPHKy8h#M2`YhV^u91@tmCT_7RP*aM zCJ2wNPy!X>A&Rg8avGl%`p&+73eJ3=SqL7GB{a3bW{pT-uAA=!0uGIDyLu`Ov+OeU z!*~V4s}f23$j66A^A*1qAC2E^&5q!TkHyDbrT;IO&b$Is31Euf-ihDIDOt=Rduc)8 zi)BwPe0aM0{`%Hq^Ok(_$FE10fBcsHLe_Rqj|Hx(vDiZS)E&qNHse_TPgLtukMl2i z+uLi-{Q2~UyNhS<=_7YvJnpUkY+n5S(X&TuV=txM{={D}Effst;r~S2yP6>w0)erM s*Ei~)eE;{x&9BXGej5fWelHI522xi`Xd?9hYC8uVjwEzxIJyo00UX%uOaK4? literal 0 HcmV?d00001 diff --git a/degree3/EV12.5_立焊.xlsx_model_degree3.pkl b/degree3/EV12.5_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cd4f302c3303fe3a338252eda33d9adc849c8a53 GIT binary patch literal 1247 zcmaKr&u1&DA0;T7+=s2EC~C8w2J59Tm-wMj z#E(;EXfF1UBB9{gs5CU5EDTlNC}2+(n}s{F6rxacNvJ)-vyCUGI$7HTS?*NfmtjNs zqO5GlYFkd*u( z**Rb$HA!lAEnTw=viyJ4OBu_~bu=Op-5^Q>NzlSY|E$00(qO~cdPX`_GJ_6K&8|Nh zBRsr9F;tBCD8L%Xsehg8+q?P+I5RzJAb3DFB#8kwtDykqI@yjR;844kttCQJLvIi_ zh!!BcN+?JVx#;k4zM>DKqtVCB@(`|QK00Pgy*FU`>@AoI08{koW^^*6eplI<$KE`FNLk%*q=8k6b$L%ccSfVRfiY?fw7Ak r7izC&PaOLG$E#1=1`JkoCi1fe5?hT)EL0zAI}IHU1axUIy!HPFS$^u~ literal 0 HcmV?d00001 diff --git a/degree3/EV15_立焊.xlsx_model_degree3.pkl b/degree3/EV15_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cf673a9c64afe82a4b0f60181b64e394e9e2228d GIT binary patch literal 1247 zcmaKrPl#JZ9LJMvl1*Q`-Rzb^Yem$9ZUrA~p{0VbDT_snq$L+~DZ{*%$1FU}%(P!tqBD}svX)vGrZdMK?21u4Dsxc=VDpRGkYhnJbm_cyJE-@`mL|lv7hIDGOEiuxlLAS>hkoo1F%k2u zPf*0L@jI?2b)RVO%A4M;Ov69|C&VBokatJkmJw%BD6%9SqLjsuBq%%i@toFp_?E_L z3NOq9XqYUDIW~|?t+4WLQS@=H1rZd0;uOLw-}JOeS6r=chj6CHXFJeTE}Zq_om;-^ z*C37ZHQ(uU-q?dxeA*kkv z#!{0o$+%^OI6#`jQW&eV*aoUJQ3cb0166L9ZmLR*V%aCL35duyfm-P0ZI4v7SBGDY zEfediHd6JjTD+wiU3FlsU4|T0FnzGdGEfJ570_Qes}4baYN@LZLx#m$*VOXkS*m6< zzNA)qOJMTn$M4Xi6lyOtb-#poQz<>2Td=(a5`IPC8UFhYnE9 zub-MBJh?&%RE&ox!Uo7`zFFwI`}#RJO9N&hctAELsRcIcu>|IN`A#6<(D;sPq|z|U zE)zedYY<*7mSliDJvx~$dW@c+Pq(WRxac$VSyvhS2c}magQ)~C(HC~;i#a9BIb@G4 zD15P2{`v5$2c^@k(fX;qR|@BZ>%55KGa-MYJZ=F8uIeXVtJ`}6F^H=k}yy_9wbGk?LnP%xxN{}*lV>L$hz u2#g(VZ8j>uQ2G3iTR-~|3>JNvhIs>tt0yFpdI+^$gbqg%x-_2LhW`S)4ep5m literal 0 HcmV?d00001 diff --git a/degree3/EV17.5_横焊.xlsx_model_degree3.pkl b/degree3/EV17.5_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f1c633a11936ac0b32e0ed6edee32b7fce7b3ea9 GIT binary patch literal 1247 zcmaKrO>YxN7{_fVcASNPlPFRls453SKw_mFDy3@GIM6rM$OLn!FVSdrJ-2QGa{9^CeMN?Fo#LBM2b|#KkhesjBtWB^^BvIC! z9lat+EF+&NMfrw{ja0i;gwPoAe-LVb3 z2x;WEY`tFp{t#C7sjX=183!{K{fNR4$B@>1KfcTh!i;Y4kZ_H>j)tPvDv8%E_?g7@ zBT3vaVVY)Q2T9^bTxps3+7Y?F${7Ugh$;E;w~dd5GE z&SPcGkxPoKLTf}O*I4$$oeGKz-GyhfVpP6;|MrZwrXGa*PpN8qhLNbQycHY6?`0gVhZiIVEW=6m~sG9u&^7PPboQ>LiWaj z!e{I9=^F=YPv;)q{?A!2U46EaGyg6;Ug$p9`)nXEMTz+>luq4bIpCE7|9OQb^Q|JHpCk8cR zf{qg?_MjC654*Sh2LunhhxOoP|As{neBjZuh~uw2k5Lip(5Xs&fAxEPek+sxKl8b4 znX0aP->H9Nry`;q8lg-aSUng8pM}*L735H9ulsR*VRzedNuJ@3VtSW{YVlw zOqiyb*g=x`5m#C!zIH@zpmK%*J0f4t-4_KP`B9tr${{@6IAWrew%rqxtrGk)tSMg* z#Z^&iim3;p+!UMU>v_mgIKv0CEFH1ARRH~kBVr5WCn`;`6*A1;x+SK+&r(#q-W4&^ zs({J6KkmKx=h@repS=D1uLEKhYq8C9`)5b+ZRKdhP}aA4-fTu8bZ|sNE z1tt<5Cwjxu)+a%h{f{~cW9hkyhD4(4L@FQ&TDagIb{A~oty)t}Nry_N&;hFH_0AE( zgDVt5#h8mctbm;A`Apy3(2v2Xbf|{l0a>5K8rUrP5ir+EcN_tS$~H_njuh4OIOd75$PZs%njx%*dFW(cGo8da0R~vznVhl8<>uN2U8AU3ihrA`%+4#Q^>wrQ21=E zyg$D8-NU)(@0Sj3f4uwUV*XRVaz@rgUHvhUHJ9s*OEXzVf!d z{{N+w)u)$U)n0ritvySq_Vl+C$I!>ui$gEDerM#*85atMbnb^}TT@a#hCpEKg4*fw o{@eD$(toFFb`=III2gET1BoexB#dMiYC8oT_9Ey~Z*c2=0Xfy|egFUf literal 0 HcmV?d00001 diff --git a/degree3/EV20_立焊.xlsx_model_degree3.pkl b/degree3/EV20_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f6bbd04f796ec8efd2c29ffeee5975bf7d669dde GIT binary patch literal 1247 zcmaKrO^6do6vvZHlF76a&5R1_=%TRbDA+Kd;IhI*21JZR35Y?EqPkO=F0HQa`e-$v z;KI&0fnqOP10t+0xa`II9Nfct+oLBhp4Gb^TyNv+&c~>Tb?8*3{;%HG@7*h|KhEc} zWoqgMBUo}brZHiZ6Kg7$M%&-*(O>LcJ8w!#lUUhnu$_$~*5gq~G3yen6G@achsLi+ z63fUZN>RS-qAjg8vzNw(XGex(2jvb~mW0^GgsD-kiNwC95l0bcJ=-_al>02{5ady; z?3yV>vO}ab`6X*+hG8I%L!uDn$eNwkBaczfBd)YeeC>$bK;;Yrc0|6BTM-2x`B8`X${{@6IAWrmw%rrOb{T#d)|4-Z z(yA!8#N>TZX^E-%Mjmn$&hWu3OGj*L7eIgUl$eJ6M71ThLx$N~cf^jbvlKP2e@)D^ zt6=i>(XX%n*?9BY!#B_VJ|9NF=&Rqymzlg$wRUcfls!sx`Hgbf{zs9iWo({TQ5Tmud(eko8Hdfz7fX0dwti#}RO-Y|~WYNKs91659{v zA-s|wkuI{q?!kNodxE)Of1@~nEBGNeXbRmgU^@L3OgVrlIJ_1dNh#TpLiX8$!e{HR zy}KTLJX3uB;l;bh8wX!5=6+l&{_*tozw18@1*Rl1zk$-Jn@R^ZVOV}As`}Vt^)qjq zn^On=-1Fe_^ZL^Ct+|!MKi8k0eSf}ibz^bpCAZ!k`E$mFf+5}gO|-2kD<4B3Fm^$G qsq*Sc^}_%Eov7PY7_8uU;HC{ErW}$ml0B&HBy`w|piBM1t@{Z^wCXzm literal 0 HcmV?d00001 diff --git a/degree3/FAV_平焊.xlsx_model_degree3.pkl b/degree3/FAV_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..81a2cfa355bd2c993003eb5c1b55c1ba24ced9e2 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@@daeGIEB!-|MW)*DMgTz2!Mn&yO_{Qiq+`P9 zZ~j;=70deiGN)LHAZ01#Oi*X*=ce25+|e8EOSf#R+R#+Hi?D5`2_K3iW|$8sHkqQ@ z*+a8e6irn^sMbuZ1!za>Z1ddA@XXY3=AhQ6Yl>3Wp0hp^hAK=9O9V;;AG(p$CnYTM7k>lIQ+ z0+J{i#2GiN5PL{bk_c^7MvNy*W0f}v*puaU>6WYzM3O!w+M^=hcyg|nw>^~ey&C*- zY?xS))pc3x%7xpq-j%zS+hxd6dXoo>EIqlqR{{OmlX4H_CmUV47cwl~x+)i6&rHhyj+u52X7y^N@ ti(04aKhc{T?|pjoH@6Oh6&;U)yn)o#Vj3rE2(?{+4u=VJX*9kKUIM1u@1g(z literal 0 HcmV?d00001 diff --git a/degree3/FV_平焊.xlsx_model_degree3.pkl b/degree3/FV_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..81a2cfa355bd2c993003eb5c1b55c1ba24ced9e2 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@@daeGIEB!-|MW)*DMgTz2!Mn&yO_{Qiq+`P9 zZ~j;=70deiGN)LHAZ01#Oi*X*=ce25+|e8EOSf#R+R#+Hi?D5`2_K3iW|$8sHkqQ@ z*+a8e6irn^sMbuZ1!za>Z1ddA@XXY3=AhQ6Yl>3Wp0hp^hAK=9O9V;;AG(p$CnYTM7k>lIQ+ z0+J{i#2GiN5PL{bk_c^7MvNy*W0f}v*puaU>6WYzM3O!w+M^=hcyg|nw>^~ey&C*- zY?xS))pc3x%7xpq-j%zS+hxd6dXoo>EIqlqR{{OmlX4H_CmUV47cwl~x+)i6&rHhyj+u52X7y^N@ ti(04aKhc{T?|pjoH@6Oh6&;U)yn)o#Vj3rE2(?{+4u=VJX*9kKUIM1u@1g(z literal 0 HcmV?d00001 diff --git a/degree3/FY22.5_平焊.xlsx_model_degree3.pkl b/degree3/FY22.5_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..639ff99134ad2ab6a9f229704bdc014164ba7aca GIT binary patch literal 1247 zcmaKr%ZnUE9LHy7cV;J@-DGw`K#hjYMK=LEY#o7*Ij*;#E8-QSV;NDJL)D=HMUU`s<#@#vs+kWOxf9P-dbyqi*rp8}|Z97dwE|ZvJF{0RJni}s; z&0oDbOqC|?^kKHntL}WvX zB94vUarHzGsrIgV(Yw`Y7)aun8pI{??%1^?5 zG^#g!uh)BLA6EJ4ZdxC?01J`4kK!1okk*Mwe5DtJ1>ce}l@>+0g`##_S#-NbN=Zl( zO~W`7mY3oHX-X1ltj>rHRAr(HrU3`4+O6DCHG)Voq{IYN7MnmV42rf#YH`qjUx6)` z8>+so8hy2NS2g?U(0aEDIjUg#V3}p04i9RezjQ$@Lw;(duZ}>5N1t!R8z ztqxYeTWE9l<*C5cHI~;=F?ENEfz1Tg{}WYb?s4TY zZ~OZXAAFnNyYhSIkH5~|U;aAmko)4)tIyrqoO-G3j%NOXd7)rPkN+py-Zc!t5D1JN s>s)N+kIuc(_~^_k`P-TGgZnpk=WNX;wa**YkOu7 zGp5wmT{s5^hda;|&Mw;C z=7w$Bc}OF_W*d#hS39t>PkmWi&p4Q|=o$(`979@%`|)L75N33hhlFe7bu|>VUQN84 z1wWIxek6$-CQQ>z>>x?}h$}4#kYswcyX`l^S`6DZ0yW^)my|_H^lH2MG{W+sT!I19%U$m_$ yD<4B3Fm^$0rE=2Fow(mR|A$?N!3sVL+_ZtjltU6mvJ15xhYouYbg9?BbzcJ@jqO|j literal 0 HcmV?d00001 diff --git a/degree3/FY30_平焊.xlsx_model_degree3.pkl b/degree3/FY30_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4f0a1c522c47e4bc9b026c6f91a86994cc084ac3 GIT binary patch literal 1247 zcmaKrO^6gn6vt;~cV@@dU1wL87?qG5Vm5&^>_J!|Ix9jDCz+M;khw@v-BYtwvAVkJ zqcsC77}RwKN-x%Wkf665a?S@yz=T{R5Ip3Pv!VfWNFZm!=5^10mTh@jo+MR*zToUu1h$Du1mtd1B zqMdzf{E8xpibJ9`6RSSj);c?PYHax7$Z+hS(jlvg5Z9QnH6{#EI5aF4C>Ffu`gRu+ zAx}F51q^GqVau`V5an#~xU;jvFp$6z(TEA;?4D2KfV03CX_WL(!a_(Al+EmTOex&^ zMByZX7sdfpbsB^mYe=S?TRA%=IylpU2ns-P0^t>}I9j8#w%jp2IMdfhJJ6I?mRx`1 zs%yCgNTaysn$70PEm--dQ8zBI9_BngkD>@CkkNRcoW+Nd-%o-7Ph-Y{TK78`{tvJ|2)?vPM>L}VLJPPDVO2XeAq zfnSad6N|FEE-NiLbyZeda>qiW2suh`_+Xx;CwI0>pkG;%yC6R~-I6nqVgA;d-2Gyf zvKI8u$l3NZnEZMB@}nQWeSH1a;~&0!PtIW@_XPgti4lA=0*x5T`_?GhohX71j%X-k zXZ+dtJYna6iPR*i*|v0zNs#6Lqi)K1cCMizk?0&z8c2c`F8YW3MVAKa&ek&0p^_PN zfNFNVZ-nsR3Pn&c?xO%}AgA_Gu5WGY$KXtNnStN|*^nd#*sO#xFxSp@0s)8GHElJC zH8boSaecY~;g!RfbdjU;gZZL+>3({kF*$&XzCqu#rS5YueeeQI1%Qbj+@SAdl$TnfA`h*ckb4QUJ9Gtkw0%-C>YZDm!j=# yMTZyyfw7~@$E#n===pnV59)3m28+H={j7n+Rw5F`st2{5f({2Ubg4hM_5TN8;P7z( literal 0 HcmV?d00001 diff --git a/degree3/FY45_平焊.xlsx_model_degree3.pkl b/degree3/FY45_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..639ff99134ad2ab6a9f229704bdc014164ba7aca GIT binary patch literal 1247 zcmaKr%ZnUE9LHy7cV;J@-DGw`K#hjYMK=LEY#o7*Ij*;#E8-QSV;NDJL)D=HMUU`s<#@#vs+kWOxf9P-dbyqi*rp8}|Z97dwE|ZvJF{0RJni}s; z&0oDbOqC|?^kKHntL}WvX zB94vUarHzGsrIgV(Yw`Y7)aun8pI{??%1^?5 zG^#g!uh)BLA6EJ4ZdxC?01J`4kK!1okk*Mwe5DtJ1>ce}l@>+0g`##_S#-NbN=Zl( zO~W`7mY3oHX-X1ltj>rHRAr(HrU3`4+O6DCHG)Voq{IYN7MnmV42rf#YH`qjUx6)` z8>+so8hy2NS2g?U(0aEDIjUg#V3}p04i9RezjQ$@Lw;(duZ}>5N1t!R8z ztqxYeTWE9l<*C5cHI~;=F?ENEfz1Tg{}WYb?s4TY zZ~OZXAAFnNyYhSIkH5~|U;aAmko)4)tIyrqoO-G3j%NOXd7)rPkN+py-Zc!t5D1JN s>s)N+kIuc(_~^_k`P-TGgZnpk=WNX;wa**YkOu7 zGp5wmT{s5^hda;|&Mw;C z=7w$Bc}OF_W*d#hS39t>PkmWi&p4Q|=o$(`979@%`|)L75N33hhlFe7bu|>VUQN84 z1wWIxek6$-CQQ>z>>x?}h$}4#kYswcyX`l^S`6DZ0yW^)my|_H^lH2MG{W+sT!I19%U$m_$ yD<4B3Fm^$0rE=2Fow(mR|A$?N!3sVL+_ZtjltU6mvJ15xhYouYbg9?BbzcJ@jqO|j literal 0 HcmV?d00001 diff --git a/degree3/FY60_仰焊.xlsx_model_degree3.pkl b/degree3/FY60_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8dc8168f1137312b413d8f9ecd82b44375712c36 GIT binary patch literal 1247 zcmaKr%Zn689LHy7cV@?4S9^C^(3k`RqT{P!55kIpohXEm38TygujX zs{;x?_BBxGA+L1*GJ+-d5}FW3IkBdCX|(;p9=~mG+L|dVO%i1)F29OL@T3 z4naP}%5Ir*EIUM6Q@mi!>@W<(aYPiN99c7eCH5KhJ)TBM4<$5!BthBCj$cWMd*4f( zB=EvGfT~LUfMEs6lyfUC~t^LOH6HwYD?^?HHwg|~ZC9xOs6EiKb4>HW(x*_(zpQUj9 z{$(-So&l4W57wUl`RK*HpI-d&>j^Q3wV3z4?Qcf#?c->~P~Nvj(M+QVIyj=Cke%`M z@p;0`0TZcCQoUQ5(fNVe#4Qy6|7?^8kJC1-uWt*m&#ENQq zmDqk*gYe2hOuER13xoLz4}^!pPaBg1xWdoF!=}`I2c|FIgQ);8g-5r-V;Lp;Gsxar zQ22bETL1gU*K70jNB(D<=l}cn@zdJx>-X30E^nV53QSpIzKXJ`+mj7!%CP)MRQ0jP znYX;{?ELfd$)#7xllqZ6cUN!koU0%H<*)nC{(rnY^itUFj{G^}Lcx$Od=PDGDk{Jb u2#j4=zfk>cVcK2poPJ_AV6ei|p_es~m`X&VSoWZ{Q_x{QhA#C7x8574lI?2% literal 0 HcmV?d00001 diff --git a/degree3/FY60_平焊.xlsx_model_degree3.pkl b/degree3/FY60_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d1880e2aadd9714ea4842dccecfad83152863d77 GIT binary patch literal 1247 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 literal 0 HcmV?d00001 diff --git a/degree3/FYN_平焊.xlsx_model_degree3.pkl b/degree3/FYN_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..442a5d4a7e415476311bc82b9491fd587bd0a77d GIT binary patch literal 1247 zcmaKr&x;dD6vvayB$H{4W@Zp{71_P$jIa$O2nvgnMG!ShlpHh{DXKe_>2j*8yMDB8 zKtW|4CsM2|Te!bVM=5dlg2ZtQ zFN^~ytHkpeR*+0Fv$AH2w{fZk5fmW6F@%@DWrJ!kV~TCvg>$fHv;$4y>`~iWyKS3x z9@5BPwT(vO%qFbtQ(w~7GY)1fx`M(G$B@?EL427Pgc)7tA>kT%T@6L8R}=4g!OtYF zA4%ed3DYzaJ4g~g;!4ZJ*N(^yRL(G9N960dTcY42KWY8Dz-y@qS6#QAj9mft77NpS&FLH zyC`N_6)<^!@0WLfKiv5BkBvuv9ul)yi#gBjpBllpgQF2cS>Nh;vkisN!4VC)^o)NV zpC`;LFp=mu(OZ_bJ_)kyf7D4BOV3p_BobXFQUOWO!bSIpyJ!<{)tYKbI#e=+4p2?6 zzZoGsxI!URjJe3e3dpJclig>b`n;R7 z!+XU-zHCij;S?+3CoG|y3F>ThZL5^1 z-=DssXrf|5wPs@7N4r{Q7uTkS=O>0!2bC^eSCqQujIA+YsKUgsSfE(&z8lzmOc0)S zDGC_YZp)Tq)uqbW;;OR?<1moG5!HwZL72035m8}K&^J)jW-SeFmPjt~ zNvx>))-EVNN6F`g`pRNgpXPZpbnJF-L&iMy0&kBV&L$(c^p_CU^dD)7s( zVPaX9H)W+Q=kCgCTkfehi;$!A#t-IMdU9{41p14o3PO30u!l8QnPF6nzJCw|3|%)^XyzhV4>L**WRShK zpz!$;Pc|N3J2&_E`O@0?pUL)0>%pIAUw-%5FT*oqfh{X6uApq{_GAN_a;*L*s>amg z{A=EJcK-Ng>vwzqug0&#N4GEhw$%9QWc%L9zi+RMy%dJMi9c^zC>YX1|B1G<6-_V% u0%I38R;xcf-CnIfJKJ!ZFj(P<(9ar3Z6%^ntol&fIp}Z@Lzf1lTmKaU!tVh9 literal 0 HcmV?d00001 diff --git a/degree3/LHY_平焊.xlsx_model_degree3.pkl b/degree3/LHY_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1038753fc446557f7208027ec4eb98312e87217a GIT binary patch literal 1247 zcmaKr%Zn689LHy7cOJIxI=ixvs3hiMHW6F)AQ)KK34#$PjxrFOixky0HQS}t)m@L) zjF_Mh*BvP0VQWDnd7K3Q0YN?NDTEMj-aH6G%st1PHoxw9tV&27da9=uau!M3ZsI#^6IDxbd4CBkaAk5jSh^R0q=o=_%vz`VwN+g%~ zBv#aqQf^o-_K>0^7TTzk7*7_4DsL39CyUL(EmrGqddxuZfGnYj0X8cn2Ie~1P9We=yOymbv1W!{ zp>7Z^LU?5o(;jl+!f?LA_re3=!RGW3uJD8KkS+Dzf@%33mcz8YhIHP252H6`6 z3ZJh(x;LL+TmEf}Jb3)eorR5+ufBNo;qsHl*5+p;fh{X6E~9Mfc4Y&ba;*L*s>a0Q z%p2aew|g&MKK#4-W8>HAv3pOi9cla%6gIxSzqK;*QrPT`{dto@!H_QeC)&arV9qhMnMK|#nYL0KIcW%l4)Vo}{wlP;~U?)qqT zKv9=X%s?RvRxTd&BEnuhcvu(quon;B)`NHx)RRY#LVVrxktkvvda9=Wuin@1-5One zn9pU)RMcfgu;gw`W5OsW)|Af=w)gCT+xCW?F-4_Gtn318r{aipcob61+63!F5@pTL z!&fAUW#kj3C|`8Zy4ISh^FzZ^1H++%Qj07~LTqisR4CU(VqepUqlmMP?V8P$`z&b@ zufOnpcal=bxZi_AgEcg%KI?%0N% zfi&{hZM|MUvj!{s)aJDHjDs1AuA(r+F{HJt7hmQDVMZ5uNVrB`M?+C-mBhPM@H2_) zN0PW>R6c2A5pOYqCE zrhHZumqn=|#_ou6LyXVV@{pr&`VVGVI$~3^0Qz&s#Ae7(OfI}Tvk8UJ!2u1q^o*|! z&m(3Em`HS-=ygk58wFYRKWZn8rRNIj6N#=6semMC;jDYqowbR#Y)vI49V(eZ2dJjk zKMWA=U7-*v#$4oK1>{uDX8OjuehAJ)n`#Iiko8Hdfz6U10dviC#}RO-Y~7UONKs9% z5ZeuAAiSa@EV9EhZ!M>GXe@e;L6tWEq z3ZJc)uYbF{XW`A<{N7JD|7$+^_y2#Uk1w5$=T?vR1*Rx5zl_qU8&3x|VOV}As_M|= z#0GC`YxfU5d-`GiuPQtI@v44xw0ijB_@h6kpU?HZ8f3Z!3quqZrVU%N+Ag&*@4=QL5IBvy43C6x}O2FrtAIy literal 0 HcmV?d00001 diff --git a/degree3/SI_平焊.xlsx_model_degree3.pkl b/degree3/SI_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..66389c22f96ff18cde34561880015d23889fd0c6 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@@d(cTfkM3Ll@Oaf`xgR+XaBSHvH7-a&<1R_OsPtA5^tE;O|!uvb9+B1*PgyfR4g+x<5rrs6*6jT<_8Ij(o<_+4B{YB}LD|lZC#A%L z&m>L~cwrhqRi%Ewu!3aDxs^3@yoWO_h@b!=P9VJEstw(6-jsWK0O#TE2O5gna#R0O zDaa*W5KH1kDbq9;J4lis=1R*n(2gjKRL(eHM-*FyRZ$915cf!+9Ky4WBWAi;+kG+H zt-vqCn(_rvUK5p$n7b^h9kHX)DngFJ89$h3>4=@(66nt?id~SOsCC3{$S{BFqS*6t zmcsRi=fr%s1}2Ygez$q&_lH-mKm6mz_eC9RvDf!DKAOO{o1+OsdEZ(^vlB(o!3hn8 z?2Nyjo@Y!Qm`HV!>TOHgngv<@KkBE9WoH+SiA3j#R6r86aKSt5E!fmwv&PLxhe~G9 z0jk;cn-hdbS15vtF%S7z0Xgo+xxTZlpMq2CQw_lbvH?jnuvrOWV6L0(I06opZJTNm zE2`;vVuxV^!Yc_n^CeS zgY1O`h0oW$BR~DU`grs1gZsBXe}3)PrGK9N={8S%a(CnCSYXN$^A(g$-HvQvQ-YXxuSDCL ziV83U0%I38PgRfo_2lHrokr8H!C-|SgkIJ_Vk!}dVmW}?&OwL$7`ikZ-Fp84;DGWg literal 0 HcmV?d00001 diff --git a/degree3/SI_横焊.xlsx_model_degree3.pkl b/degree3/SI_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c6a2a5eb2348478f2e01be2d878e99b1b2304d92 GIT binary patch literal 1247 zcmaKrPiRy}9LIMz+0FWr=q4hxS|oa~X~73UL`(ndiXbH`tL(+~5QcegXY;1coA>6= zvt6*Qg&MOkc**3VqBjvd_0S&bL606pym%=HB1x~k^-|jO_ul@A25}B=XLi27`ThI+ zu8yzY&F8XZD(Vs=SaLU}F=3PwYs%+`+co>iPxgB|Z;DEjSlK1m&c+ez@+hR3bqLmp zB+8mYqgNz}W#kj3C|`Ebw$_^2^CQDEL&K4SQkyJGLTr7^R4CU(VqepUqlmMv?U^ac zeU`Kd@+ekz)f6MyCeoVxX=`Q%VIYn}q7dcCn!Vpd9;2SilQ8b0nEH?;C>!bVl$5x8 zLE<=u7e)b;RpR*!D@dl8Sy?l|+c?#N2nrD37{be6vq2@8F~zp-!a4YGxC2e$+)3M8 zy>6R!9@5BPv5iJ!aSK-VsaLi2jDs1AzC~e(V@T^jKfcTh!i+BSkZ_H>u7;x4D~Wft z;Aaxok0f!!glU?I9VCe#aiwMAYe(ezDrXR|Bl7j!HBs=9AGL|E9KzF$BgR^3+dVPf zD#0(qn(_rvToI+Fn7A&=O|fgfo`)QTGk7q|(h-xb0_e}36jP9&m~M*QkYV=L6|rY$ zmZIYImc&eJ8chDY^Yg~T-!^aD-2DCCr(zasvDb6gzaGN3o1-B^S>Nh;Gl@dz;E;w~ zddA<4&SPd4m`HS-=xs||9|u|XKk6imrRNG75Q#1msemMC;evbIU9gF_VofC_9V(eZ z2dJjk`-cekuTTgTV=nTr0&*&6GktSgKLTgELp1~s$oeGKz-GyhfVoz>;|MrZwqeR~ zq^PEsiR}gR5MI%bNC(+qUw^)W4}t^1NA>YOT*1L$&J;Rt!Suxrm~sG9aAY<3IHhDy z3fUVA3ZJc)5B}MB^~Xka?8_q;|9z@q-rYJGLgwmxdsX#arV9qhMnMK|#nYL0KIcW%l4)Vo}{wlP;~U?)qqT zKv9=X%s?RvRxTd&BEnuhcvu(quon;B)`NHx)RRY#LVVrxktkvvda9=Wuin@1-5One zn9pU)RMcfgu;gw`W5OsW)|Af=w)gCT+xCW?F-4_Gtn318r{aipcob61+63!F5@pTL z!&fAUW#kj3C|`8Zy4ISh^FzZ^1H++%Qj07~LTqisR4CU(VqepUqlmMP?V8P$`z&b@ zufOnpcal=bxZi_AgEcg%KI?%0N% zfi&{hZM|MUvj!{s)aJDHjDs1AuA(r+F{HJt7hmQDVMZ5uNVrB`M?+C-mBhPM@H2_) zN0PW>R6c2A5pOYqCE zrhHZumqn=|#_ou6LyXVV@{pr&`VVGVI$~3^0Qz&s#Ae7(OfI}Tvk8UJ!2u1q^o*|! z&m(3Em`HS-=ygk58wFYRKWZn8rRNIj6N#=6semMC;jDYqowbR#Y)vI49V(eZ2dJjk zKMWA=U7-*v#$4oK1>{uDX8OjuehAJ)n`#Iiko8Hdfz6U10dviC#}RO-Y~7UONKs9% z5ZeuAAiSa@EV9EhZ!M>GXe@e;L6tWEq z3ZJc)uYbF{XW`A<{N7JD|7$+^_y2#Uk1w5$=T?vR1*Rx5zl_qU8&3x|VOV}As_M|= z#0GC`YxfU5d-`GiuPQtI@v44xw0ijB_@h6kpU?HZ8f3Z!3quqZrVU%N+Ag&*@4=QL5IBvy43C6x}O2FrtAIy literal 0 HcmV?d00001 diff --git a/degree3/SX_仰焊.xlsx_model_degree3.pkl b/degree3/SX_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..04a06e7133be2c5ca435fb184692f148b6bdb2fa GIT binary patch literal 1247 zcmaKrO^Xyq7{_O3cV@?SS7%p*L_^ezSp^$b5DbLO1R;nMMwvsLL!_v#so5&6uI_qi zlK}$;;_eO<@sL^w9t=Sc0=dRRa)@{ecLX}w#yGBf;iYB+OH>(g~jsc+A@2A7s2xmb!YV%PruC5vun@_YD2{OoX&oKMS9n2K@O2qeX;Cz^P}FuKi*8p) zAqh#MX&7h1@HuU|ymd<*d_7Cm zh(_1ca&HMt{<;6{^WPu6`0n0|-yWV;E7+<-QMi3^3f}>VrVJH*YnR=A6hjB6G?el) z{%Urfb1T3^X4A~>S^D-o$cq2bAQK`#H_(JgbdzcWBtZ+;!gJx8&!P?Q8ae4u$s9UB zHNQSGMR$H|j{LFx;Y8r78p|6fpSpedz-9vLw?x&N zd0cwM+wSh>pJxWG2hUn(|H>9$vX5Kx=eti{Ht#hjUP{}8slQ-WC>YYiZ$#U>njshh tfw5z)3-$D0vU5K?*76%LSnLc7^9E8^i)ozbA=GvOIvgd?rP25{{10*p?fC!z literal 0 HcmV?d00001 diff --git a/degree3/SX_平焊.xlsx_model_degree3.pkl b/degree3/SX_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d95a26f90bc2f40f31e310b955112f0f4f17ef4d GIT binary patch literal 1247 zcmaKr&ubJ(6vt;KnaS8XW|9zaRTlT6QL!PQpde&|uq=*@G6>E^it3)4bZK>U*N;{Q zR3dC*1`0u}>|q7Hc@Vq`t_K(Pw7W+ydN=Anu!j{PzV7)E6|oLIRa4(r@7L!okFP(> z=dxw0>M|o(ayO^7-#Jtpc*(7IhW?yUp4ArwCaN(fAp-70M7lbH8J95Kwh6q{60 z?d&__R}@WDOsLjOtodk1>+Jl6vEiAK;n+c?L)R3gt}$V2Oc<&#F)S7+7QE;Bb~h7* zryYs{hPB(YTtc7#7+%Y{khxjp9|;Y&Oqs!^%I672^WyVb0^vQ54|>(pntEmwQ2&vo#S>VNlRBP}D{(4X&3+ zF7ZjMs2`==uw3jRMM*5QQ7JK=EDTiMFknv>8--i4L=cHPlxUBNY~#s^cGmVlPPQxX z%duf%S(Z0sr6s3s%W6yRT51#_N9he8%(L|5bh`xl^C#qP$WP9+eoD1r`-XeeZ7 zd}Vx|u=Bt~YLe9KSh~g}$nyVDH|0D#*U*qibeSp*BtZ+8{p0?!OM?w(YZ>WK$qYI` zHM>4ALU?e6BB&VmQGhj&Q#+UITRZwOI5S;lAb3EQ(8K_n6%qq;?QACyaHw6=R+CsW z!!A?T50@akGKpyyxo}}HU*W!RF?_2rIe;rX7`|;w-Irkc;1!q(08{wxW_T#0WKRa! z3kwRLuP=YPxITO2;r;)*A3b{f*KaHTyE8X8emQo3>*P>i%LRDE&!GxEu^yDLL4g{|($pEoWP4C%sa(RQ|? x35Gym?85r#>NnqYy5|-S*WCsTR(Le@vj$RIiD(q79@KUUIvm8%rT*a7e-6Ab?C1ah literal 0 HcmV?d00001 diff --git a/degree3/SX_立焊.xlsx_model_degree3.pkl b/degree3/SX_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ed3712849a50fc59de1529bcaf85a62239299caa GIT binary patch literal 1247 zcmaKrPiRy}9LIMz+0FW5;wBPMQ>4ArwCaN(fAp-70M7lbH8J95Kwh6q{60 z?d&__R}@WDOsLjOtodk1>+Jl6vEiAK;n+c?L)R3gt}$V2Oc<&#F)S7+7QE;Bb~h7* zryYs{hPB(YTtc7#7+%Y{khxjp9|;Y&Oqs!^%I672^WyVb0^vQ54|>(pntEmwQ2&vo#S>VNlRBP}D{(4X&3+ zF7ZjMs2`==uw3jRMM*5QQ7JK=EDTiMFknv>8--i4L=cHPlxUBNY~#s^cGmVlPPQxX z%duf%S(Z0sr6s3s%W6yRT51#_N9he8%(L|5bh`xl^C#qP$WP9+eoD1r`-XeeZ7 zd}Vx|u=Bt~YLe9KSh~g}$nyVDH|0D#*U*qibeSp*BtZ+8{p0?!OM?w(YZ>WK$qYI` zHM>4ALU?e6BB&VmQGhj&Q#+UITRZwOI5S;lAb3EQ(8K_n6%qq;?QACyaHw6=R+CsW z!!A?T50@akGKpyyxo}}HU*W!RF?_2rIe;rX7`|;w-Irkc;1!q(08{wxW_T#0WKRa! z3kwRLuP=YPxITO2;r;)*A3b{f*KaHTyE8X8emQo3>*P>i%LRDE&!GxEu^yDLL4g{|($pEoWP4C%sa(RQ|? x35Gym?85r#>NnqYy5|-S*WCsTR(Le@vj$RIiD(q79@KUUIvm8%rT*a7e-6Ab?C1ah literal 0 HcmV?d00001 diff --git a/degree3/SY_仰焊.xlsx_model_degree3.pkl b/degree3/SY_仰焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..83a7978d56976cdc11c5ff16289865ac781a4b97 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@?SS7+A<8l%KZvI(Tg5(EQDc4Q$0M@AV02SJMJnwss3)m2?T z+BmQQ199Df!i%++9Fm(}1CkufA)0Hz{1aIrH*X<_FnQhcV^xB6=&73ezIwkt@7Db8 z59Ly^T*F-F6l)QtETxRtWPbbHUg_l^JBuez$SG&TMjY*$jr2SO$c^FGBk)6{r( zdiIK@sg{Hq!^CEY_O;%vT$&kvJ~f;w&hhc-4m6dEXZ>*Jj_>$Y zNTa;v+wJ!G5v=0VTDLxO0p?tOg^~oPkk*NDe1#W;IolKo6&6JU3q@@;vglTY6q1lg zO~WMPmKEXvX-cFpR%gTpsx(#wlYj$NZk2AU3PD8nC@}#Q`6f_v-MsCQn(x-&mt)Js znyPNAT1PG1QT2{Gu-Ym^jw+ZuSY#QfgWU?~FP>G4ke^!Ws6&up@z$0){A!k}5e=`Y zJH=sn{ljP6IFBOap?tb zqtWmG{C2EY`=fdF%JaJqN1ryIj`r@oaq`FYiI>uDf9fxo6$*y*=>MYaUCj^-fxy_s r&5gR-zI^8V)`v~M4TBYb5QljKsjDS4k$M2NU4RZp61p@T--iDIN#^Wk literal 0 HcmV?d00001 diff --git a/degree3/SY_平焊.xlsx_model_degree3.pkl b/degree3/SY_平焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..57240327f5ad0e280ed780cfa21501e30ef5f943 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~XJ*INU1xV$Vxj~Sf^Gt7vVjBzVJG+lal$BbNQQtG)jc&^6|1Ye zezeJef=1olfx?Tm7Y}*}B#=MAgOZq=XTjV&gb)pQ@a}1S-ScCOgw&y@YU=yy{rbGi z<;^?ALcVNWpXUTC;U_F1oC)G=?aX+4(|vfwU2;pdq76y3I}6+SB<6h)M-1~G!6sEi zJNw?`6-5#iheT^8R(-Usb$0&D#PGz}aN?laC98@M*POC-CJa$HG%OY<7QF8Ub{7*N zPrC#K3~RSxE3xVl`kiZeqhzaEE!nbk2S>TH_O8O{aAtVXPR(AYCDct{B z;Us|n~$-+?OjRN*$v01n-OCbv5E(x_qM7HtdR3~eDAj_R9 z{BmrVSeBJFS#8Vdby;i69ZSt3i{HWB6tT8Z(slty#1?Q3M?v(@@CH z`1{Fu%FY85sYz0^ZRwh2kmdiQUdnlPuA>o==mJq1NP-qF`=9yCE)CY4t!Jb|B{S#% z)$ID6F~Y+u6hXzfj{>ZLocfo!zP+uVfHTu$27(7%wFMqgl@~=M|&mUfWe2IS5`1R$Jb3e{LS{ZpMZ1%?fyh)*8NEiPTZD*@G w#1IIK9c>(~9e>O|fAGz*hFgQdq90Q~Yap@Jh(xjKLv5#_!$AyP8Vqm!SNK%!8UO$Q literal 0 HcmV?d00001 diff --git a/degree3/SY_横焊.xlsx_model_degree3.pkl b/degree3/SY_横焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..83a7978d56976cdc11c5ff16289865ac781a4b97 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@?SS7+A<8l%KZvI(Tg5(EQDc4Q$0M@AV02SJMJnwss3)m2?T z+BmQQ199Df!i%++9Fm(}1CkufA)0Hz{1aIrH*X<_FnQhcV^xB6=&73ezIwkt@7Db8 z59Ly^T*F-F6l)QtETxRtWPbbHUg_l^JBuez$SG&TMjY*$jr2SO$c^FGBk)6{r( zdiIK@sg{Hq!^CEY_O;%vT$&kvJ~f;w&hhc-4m6dEXZ>*Jj_>$Y zNTa;v+wJ!G5v=0VTDLxO0p?tOg^~oPkk*NDe1#W;IolKo6&6JU3q@@;vglTY6q1lg zO~WMPmKEXvX-cFpR%gTpsx(#wlYj$NZk2AU3PD8nC@}#Q`6f_v-MsCQn(x-&mt)Js znyPNAT1PG1QT2{Gu-Ym^jw+ZuSY#QfgWU?~FP>G4ke^!Ws6&up@z$0){A!k}5e=`Y zJH=sn{ljP6IFBOap?tb zqtWmG{C2EY`=fdF%JaJqN1ryIj`r@oaq`FYiI>uDf9fxo6$*y*=>MYaUCj^-fxy_s r&5gR-zI^8V)`v~M4TBYb5QljKsjDS4k$M2NU4RZp61p@T--iDIN#^Wk literal 0 HcmV?d00001 diff --git a/degree3/SY_立焊.xlsx_model_degree3.pkl b/degree3/SY_立焊.xlsx_model_degree3.pkl new file mode 100644 index 0000000000000000000000000000000000000000..83a7978d56976cdc11c5ff16289865ac781a4b97 GIT binary patch literal 1247 zcmaKr&x;gC6vt;~cV@?SS7+A<8l%KZvI(Tg5(EQDc4Q$0M@AV02SJMJnwss3)m2?T z+BmQQ199Df!i%++9Fm(}1CkufA)0Hz{1aIrH*X<_FnQhcV^xB6=&73ezIwkt@7Db8 z59Ly^T*F-F6l)QtETxRtWPbbHUg_l^JBuez$SG&TMjY*$jr2SO$c^FGBk)6{r( zdiIK@sg{Hq!^CEY_O;%vT$&kvJ~f;w&hhc-4m6dEXZ>*Jj_>$Y zNTa;v+wJ!G5v=0VTDLxO0p?tOg^~oPkk*NDe1#W;IolKo6&6JU3q@@;vglTY6q1lg zO~WMPmKEXvX-cFpR%gTpsx(#wlYj$NZk2AU3PD8nC@}#Q`6f_v-MsCQn(x-&mt)Js znyPNAT1PG1QT2{Gu-Ym^jw+ZuSY#QfgWU?~FP>G4ke^!Ws6&up@z$0){A!k}5e=`Y zJH=sn{ljP6IFBOap?tb zqtWmG{C2EY`=fdF%JaJqN1ryIj`r@oaq`FYiI>uDf9fxo6$*y*=>MYaUCj^-fxy_s r&5gR-zI^8V)`v~M4TBYb5QljKsjDS4k$M2NU4RZp61p@T--iDIN#^Wk literal 0 HcmV?d00001 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..585a0a4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,15 @@ +# version: '3.8' + +services: + welding-app: + build: . + ports: + - "8000:8000" +# volumes: +# - ./degree3:/app/degree3 +# - ./data:/app/data +# - ./logs:/app/logs + environment: + - PYTHONUNBUFFERED=1 + - TZ=Asia/Shanghai + restart: always diff --git a/predict_with_excel.py b/predict_with_excel.py new file mode 100644 index 0000000..7c73cc8 --- /dev/null +++ b/predict_with_excel.py @@ -0,0 +1,539 @@ +import io +import warnings +from pathlib import Path +from typing import IO, Optional, Union +from urllib.parse import quote + +import numpy as np +import pandas as pd +from fastapi import FastAPI, File, HTTPException, UploadFile +from fastapi.responses import JSONResponse, StreamingResponse +from sklearn.exceptions import DataConversionWarning + +MODEL_RANGES = { + "CAK_仰焊": "12-Infinity", + "CV17.5_平焊": "3-Infinity", + "EV15_立焊": "13-Infinity", + "SX_平焊": "14-Infinity", + "CA_平焊": "0-60", + "CA_横焊": "0-75", + "CAK_平焊": "0-85", + "CAK_立焊": "0-85", + "CAV_平焊": "0-68", + "CAY_平焊": "0-70", + "CV20_平焊": "4-80", + "EV17.5_立焊": "0-43", + "SY_平焊": "0-53", +} + +warnings.filterwarnings("ignore", message="X does not have valid feature names, but.*") +warnings.filterwarnings("ignore", category=DeprecationWarning, + message="Conversion of an array with ndim > 0 to a scalar is deprecated.*") +warnings.filterwarnings("ignore", category=DataConversionWarning) + + +def extract_headers_from_first_three_rows( + excel_source: Union[str, Path, IO[bytes]], sheet_name: Union[int, str] = 0 +): + """ + 从 Excel 前两行中提取每列的有效标题,支持合并单元格场景: + - 每列仅取一个有效标题(优先第1行,若第1行为空则用第0行) + - 自动跳过空值、'nan'、纯空格 + - 支持合并单元格导致的列数据缺失 + """ + # Step 1: 读取前两行(raw,无列名) + if hasattr(excel_source, "seek"): + excel_source.seek(0) + + df_raw = pd.read_excel( + excel_source, sheet_name=sheet_name, header=None, nrows=3 # 只读前三行 + ) + + if hasattr(excel_source, "seek"): + excel_source.seek(0) + + max_cols = df_raw.shape[1] + headers = [] + + for col_idx in range(max_cols): + val0 = df_raw.iloc[0, col_idx] if len(df_raw) > 0 else None + val1 = df_raw.iloc[1, col_idx] if len(df_raw) > 1 else None + val2 = df_raw.iloc[2, col_idx] if len(df_raw) > 2 else None + + # 定义“有效值”判断函数 + def is_valid(v): + if pd.isna(v): + return False + s = str(v).strip() + return s != "" and s.lower() not in ("nan", "none", "null") + + # 策略:优先使用第1行(第二行),因为合并单元格常导致第0行为空 + # 如果第1行有效 → 用第1行 + # 如果第1行无效但第0行有效 → 用第0行 + # 都无效 → 用默认名 + if is_valid(val1): + header = str(val1).strip() + elif is_valid(val0): + header = str(val0).strip() + elif is_valid(val2): + header = str(val2).strip() + else: + header = f"Unnamed_{col_idx}" + + headers.append(header) + + print("✅ 提取到的表头:", headers) + return headers + + +def read_excel_with_irregular_headers( + excel_source: Union[str, Path, IO[bytes]], sheet_name: Union[int, str] = 0 +): + """ + 完整读取:提取表头 + 读取剩余数据 + """ + headers = extract_headers_from_first_three_rows(excel_source, sheet_name) + + if hasattr(excel_source, "seek"): + excel_source.seek(0) + + # 读取从第4行开始的数据(跳过前3行) + df = pd.read_excel( + excel_source, + sheet_name=sheet_name, + header=None, + skiprows=3, # 跳过前三行(标题行) + names=headers, # 使用提取的标题 + ) + + # 可选:删除全空列 + df = df.dropna(how="all", axis=1) + print(f"✅ 读取数据形状: {df.shape}") + return df + + +def split_by_plus(s: str) -> list[str]: + if not isinstance(s, str): + raise TypeError("输入必须是字符串") + + # 按 '+' 分割,去除每部分首尾空格,过滤空字符串 + return [part.strip() for part in s.split("+") if part.strip()] + + +# %% +import joblib + +folder_path = Path("./degree3") + + +def load_all_models(): + """ + 加载所有模型到 model_list + """ + global model_list + # 清空列表以确保重新加载(尽管有启动时加载一次的逻辑) + # model_list = [] + # ^^^ 注释掉这行,因为 FastAPI 的 on_event("startup") 应该只执行一次。 + # 如果在开发中需要热重载模型,可以取消注释或提供专门的重载端点。 + + if model_list: # 如果已经加载过,则不再重复加载 (主要由 startup_event 控制) + print(f"[MODEL_LOADER] Models already loaded. Count: {len(model_list)}") + return + + print( + f"[MODEL_LOADER] Attempting to load models. Initial model_list length: {len(model_list)}" + ) + print( + f"[MODEL_LOADER] Target model folder (relative to WORKDIR /app): {folder_path}" + ) + resolved_folder_path = folder_path.resolve() + print(f"[MODEL_LOADER] Target model folder (absolute): {resolved_folder_path}") + + if not resolved_folder_path.exists(): + print( + f"[MODEL_LOADER] ERROR: Model directory not found at {resolved_folder_path}" + ) + return + + if not resolved_folder_path.is_dir(): + print(f"[MODEL_LOADER] ERROR: Path {resolved_folder_path} is not a directory.") + return + + print( + f"[MODEL_LOADER] Model directory found at {resolved_folder_path}. Searching for files with glob pattern: *3.pkl" + ) + + files_found = list(resolved_folder_path.glob("*3.pkl")) + print( + f"[MODEL_LOADER] Files found by glob ('{resolved_folder_path}/*3.pkl'): {[str(f.name) for f in files_found]}" + ) + + if not files_found: + print( + f"[MODEL_LOADER] WARNING: No files matched the glob pattern '*3.pkl' in {resolved_folder_path}. Listing all items in directory as a fallback check:" + ) + try: + all_items = list(resolved_folder_path.iterdir()) + print( + f"[MODEL_LOADER] All items in {resolved_folder_path}: {[str(item.name) for item in all_items]}" + ) + except Exception as e: + print( + f"[MODEL_LOADER] ERROR: Could not list items in {resolved_folder_path}: {e}" + ) + return + + temp_model_list = [] # 使用临时列表,成功加载完再赋值给全局 + for file_path_obj in files_found: + if file_path_obj.is_file(): + try: + model_name_parts = file_path_obj.name.split(".xlsx") + if len(model_name_parts) > 1: + model_name = model_name_parts[0] + else: + model_name_base = file_path_obj.stem + if model_name_base.endswith("_model_degree3"): + model_name = model_name_base[: -len("_model_degree3")] + elif model_name_base.endswith( + "3" + ): # 兼容 *3.pkl 但不含 .xlsx 的情况 + model_name = model_name_base[: -len("3")].rstrip( + "." + ) # 移除可能的尾部'.' (来自.pkl) + if model_name.endswith("_model_degree"): # 进一步处理 + model_name = model_name[: -len("_model_degree")] + else: + model_name = model_name_base + print( + f"[MODEL_LOADER] WARNING: Filename {file_path_obj.name} does not contain '.xlsx' as expected for name splitting. Using '{model_name}' as model name based on stem." + ) + + loaded_model = joblib.load(file_path_obj) + temp_model_list.append( + { + "name": model_name, + "model": loaded_model, + "filename": file_path_obj.name, + } + ) + print( + f"[MODEL_LOADER] Successfully loaded model from {file_path_obj.name} as: {model_name}" + ) + except Exception as e: + print( + f"[MODEL_LOADER] ERROR: Failed to load model {file_path_obj.name}: {e}" + ) + + model_list = temp_model_list # 赋值给全局变量 + print( + f"[MODEL_LOADER] Finished loading models. Total models loaded: {len(model_list)}" + ) + if not model_list: + print( + f"[MODEL_LOADER] WARNING: model_list is empty after attempting to load models." + ) + + +def get_welding_coefficient(row): + coefficient = 0.0 + global model_list + model_map = {model["name"]: model for model in model_list} + lenth = row.长度_m + welding_type = row.坡口代码 + welding_position = row.焊接位置 + thickness = row.板厚_mm + thickness_value = float(thickness) + thickness_array = np.array([[thickness_value]]) + + # 处理焊接位置,统一命名 + try: + if "横" in welding_position: + welding_position = "横焊" + elif "立" in welding_position: + welding_position = "立焊" + elif "仰" in welding_position: + welding_position = "仰焊" + elif "平" in welding_position: + welding_position = "平焊" + except Exception as e: + print(f"行⚠️ 处理焊接位置时出错: {welding_position}, 错误: {e}") + welding_position = welding_position # 保持原值 + + # 处理坡口代码,支持多个坡口代码相加的情况 + try: + welding_type = split_by_plus(welding_type) + except Exception as e: + print(f"⚠️ 处理坡口代码时出错: {welding_type}, 错误: {e}") + welding_type = [str(welding_type)] # 确保后续遍历 + + if isinstance(welding_type, str): + welding_type = [welding_type] + + for item in welding_type: + try: + if "min/m" in item: + # 如果已经是系数形式,直接累加 + coefficient += float(item.replace("min/m", "").strip()) + else: + model_name = f"{item}_{welding_position}" + selected_model_info = model_map.get(model_name) + if selected_model_info is None: + raise KeyError(f"模型 '{model_name}' 未加载") + model = selected_model_info["model"] + range_str = MODEL_RANGES.get(model_name, "0-Infinity") + min_val_str, max_val_str = range_str.split("-") + min_val = float(min_val_str) + max_val = None if max_val_str == "Infinity" else float(max_val_str) + if thickness_value < min_val or ( + max_val is not None and thickness_value > max_val + ): + print( + f"⚠️ 警告: 厚度 {thickness_value}mm 超出模型 '{model_name}' 的适用范围 ({range_str} mm)。" + ) + coefficient = float('nan') + break + else: + prediction = float(model.predict(thickness_array)[0]) + coefficient += prediction + except Exception as e: + coefficient = float('nan') + print( + f"⚠️ 处理坡口代码模型不存在: {item}_{welding_position}, 错误: {e}" + ) + # print(coefficient) + # print(type(coefficient)) + coefficient = float(coefficient) + print( + f"长度: {lenth}, 焊接类型: {welding_type},焊接位置: {welding_position}, 板厚: {thickness}" + ) + + return coefficient + + +def get_welding_time(row): + coefficient = row.焊接系数 + length = row.长度_m + welding_time = coefficient * length + return welding_time + + +def save_df_to_excel(df, output_file_path): + df.to_excel(output_file_path, index=False) + + +def build_prediction_dataframe(df: pd.DataFrame) -> pd.DataFrame: + """清洗原始数据并计算焊接系数、工时。""" + df = df.copy() + df["序号"] = df.reset_index(drop=True).index + 1 + df_clean = df.copy() + df_clean.columns = [ + col.replace("(", "_") + .replace(")", "_") + .replace("(", "_") + .replace(")", "_") + .strip("_") + .replace("__", "_") + for col in df.columns + ] + + df_without_last = df_clean.iloc[:-1].copy() # 去掉最后一行合计 + df_without_last["焊接系数"] = df_without_last.apply( + lambda row: get_welding_coefficient(row), axis=1 + ) + df_without_last["焊接工时"] = df_without_last.apply( + lambda row: get_welding_time(row), axis=1 + ) + + total_row = {col: np.nan for col in df_without_last.columns} + total_row["序号"] = "总计" + total_row["焊接工时"] = df_without_last["焊接工时"].sum() + + result_df = pd.concat([df_without_last, pd.DataFrame([total_row])], ignore_index=True) + return result_df + + +def _prepare_excel_source( + excel_source: Union[str, Path, IO[bytes], bytes, bytearray] +) -> tuple[Optional[Path], Optional[bytes]]: + if isinstance(excel_source, Path): + return excel_source, None + if isinstance(excel_source, str): + return Path(excel_source), None + if isinstance(excel_source, (bytes, bytearray)): + return None, bytes(excel_source) + if hasattr(excel_source, "read"): + try: + if hasattr(excel_source, "seek"): + excel_source.seek(0) + data = excel_source.read() + excel_source.seek(0) + else: + data = excel_source.read() + except Exception as exc: # pragma: no cover - 防御性 + raise ValueError("无法读取 Excel 源数据") from exc + return None, data + raise TypeError("excel_source 必须是路径、字节流或支持 read() 的对象") + + +def _make_excel_io(path_like: Optional[Path], excel_bytes: Optional[bytes]): + if path_like is not None: + return path_like + if excel_bytes is None: + raise ValueError("缺少 Excel 数据") + return io.BytesIO(excel_bytes) + + +def process_excel( + excel_source: Union[str, Path, IO[bytes], bytes, bytearray], + sheet_name: Optional[Union[int, str]] = 0, +) -> Union[pd.DataFrame, dict[str, pd.DataFrame]]: + """从 Excel 读取数据并完成完整的预测流程。 + + 当 sheet_name 为 None 时,处理工作簿内所有工作表并返回 {sheet_name: DataFrame}。 + """ + + path_like, excel_bytes = _prepare_excel_source(excel_source) + + def get_source(): + return _make_excel_io(path_like, excel_bytes) + + if sheet_name is None: + with pd.ExcelFile(get_source()) as excel_file: + sheet_names = excel_file.sheet_names + + results: dict[str, pd.DataFrame] = {} + for name in sheet_names: + df = read_excel_with_irregular_headers(get_source(), sheet_name=name) + results[name] = build_prediction_dataframe(df) + return results + + df = read_excel_with_irregular_headers(get_source(), sheet_name=sheet_name) + return build_prediction_dataframe(df) + + +model_list = [] +# source_excel_path = Path("/root/data/hanjie/1113/rawdata/场景/部件.xlsx") +# source_excel_path = Path("/root/data/hanjie/1113/rawdata/场景/搭载.xlsx") +# source_excel_path = Path("/root/data/hanjie/1113/rawdata/场景/分段.xlsx") +# source_excel_path = Path("/root/data/hanjie/1113/rawdata/场景/零件.xlsx") +# source_excel_path = Path("./all.xlsx") + +app = FastAPI(title="Welding Time Prediction API") + + +@app.on_event("startup") +def startup_event(): + load_all_models() + + +def _sanitize_sheet_name(name: Union[str, int], existing: set[str]) -> str: + base = str(name) if str(name).strip() else "Sheet" + base = base[:31] + candidate = base or "Sheet" + counter = 1 + while candidate in existing: + suffix = f"_{counter}" + candidate = (base[: 31 - len(suffix)] if base else "Sheet") + suffix + counter += 1 + return candidate + + +def _df_to_records(df: pd.DataFrame) -> list[dict[str, object]]: + cleaned = df.replace({np.inf: None, -np.inf: None}) + cleaned = cleaned.where(pd.notnull(cleaned), None) + records: list[dict[str, object]] = [] + for raw in cleaned.to_dict(orient="records"): + normalized: dict[str, object] = {} + for key, value in raw.items(): + if isinstance(value, np.generic): + value = value.item() + if isinstance(value, float) and (np.isnan(value) or np.isinf(value)): + value = None + normalized[key] = value + records.append(normalized) + return records + + +@app.post("/predict", summary="上传 Excel 并返回预测结果表") +async def predict( + file: UploadFile = File(...), + sheet_name: Optional[str] = None, + response_format: str = "json", +): + if not file.filename.lower().endswith((".xls", ".xlsx")): + raise HTTPException(status_code=400, detail="仅支持 Excel 文件 (.xls/.xlsx)") + + contents = await file.read() + if not contents: + raise HTTPException(status_code=400, detail="上传文件为空") + + try: + resolved_sheet: Optional[Union[int, str]] = None + if sheet_name is not None and sheet_name.lower() != "all": + if sheet_name.isdigit(): + resolved_sheet = int(sheet_name) + else: + resolved_sheet = sheet_name + result_obj = process_excel(contents, sheet_name=resolved_sheet) + except Exception as exc: + raise HTTPException(status_code=500, detail=f"处理 Excel 时发生错误: {exc}") from exc + + response_format = response_format.lower() + if response_format not in {"json", "excel"}: + raise HTTPException(status_code=400, detail="response_format 只支持 'json' 或 'excel'") + + if response_format == "json": + if isinstance(result_obj, dict): + payload = {str(name): _df_to_records(df) for name, df in result_obj.items()} + else: + key = str(resolved_sheet if resolved_sheet is not None else "Sheet1") + payload = {key: _df_to_records(result_obj)} + return JSONResponse(content=payload) + + output_stream = io.BytesIO() + if isinstance(result_obj, dict): + existing_names: set[str] = set() + with pd.ExcelWriter(output_stream, engine="openpyxl") as writer: + for original_name, df in result_obj.items(): + sheet_safe = _sanitize_sheet_name(original_name, existing_names) + existing_names.add(sheet_safe) + df.to_excel(writer, sheet_name=sheet_safe, index=False) + else: + result_obj.to_excel(output_stream, index=False) + + output_stream.seek(0) + + download_name = f"{Path(file.filename).stem}_预测结果.xlsx" + ascii_fallback = "prediction.xlsx" + quoted_name = quote(download_name) + content_disposition = ( + f"attachment; filename={ascii_fallback}; filename*=UTF-8''{quoted_name}" + ) + + headers = {"Content-Disposition": content_disposition} + + return StreamingResponse( + output_stream, + media_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + headers=headers, + ) + + +def main(): + load_all_models() + # result_obj = process_excel(source_excel_path, sheet_name=0) + # output_file_path = source_excel_path.parent.joinpath( + # source_excel_path.stem + "_预测结果.xlsx" + # ) + # + # if isinstance(result_obj, dict): + # with pd.ExcelWriter(output_file_path, engine="openpyxl") as writer: + # for sheet_name, df in result_obj.items(): + # df.to_excel(writer, sheet_name=str(sheet_name)[:31] or "Sheet", index=False) + # else: + # print(len(result_obj)) + # save_df_to_excel(result_obj, output_file_path) + + +if __name__ == "__main__": + main() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..51e448b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,8 @@ +numpy +scikit-learn +joblib +fastapi +uvicorn +pandas +openpyxl +python-multipart