From 0069da706b4b3cd1b27029b511b34ba3c4c5058b Mon Sep 17 00:00:00 2001 From: Guillem Hernandez Sola Date: Tue, 14 Apr 2026 19:25:22 +0200 Subject: [PATCH] stable version --- 002-page.jpg | Bin 263494 -> 0 bytes manga-renderer.py | 826 +++++++++-------------------- manga-translator.py | 1224 +++++++++++++++++++------------------------ 3 files changed, 772 insertions(+), 1278 deletions(-) delete mode 100755 002-page.jpg diff --git a/002-page.jpg b/002-page.jpg deleted file mode 100755 index e8c059b58f2dcdfa63bb24120d054bafdefe8758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263494 zcmeFZWl$YU)GjYka^t9#~c>1`GG3V?xuLH`qALC5#s|6>5v2Lt~%z=9&!|L5@b13-m^ z^n^fx07C`9QNbWk!QKV{A^-q`1cv|v1O89=01F2L4F(Pc0SW)M0>J*8mD~G&^8c?B zNG=P$|NRTaWcf@mC42Wo;Ls9lGw&;)dnK^xRY^JgHp(Yt9>xQ&H~n8l8!&M03=4l&HyZF@RBB z#kJX1K|AL{_1%BS8P*+L^f3)95)}GNeF5PhGbw@NI@AAe`{1xI z7hk9ZIq(P#lxbi5O`wR11w!Z>j7Rs?_vQTzzVo~US^E>>9^2aDHI019>PekWHR|e- z&jA1e9taoyNzOE%R;7$SyaR@5lpD7exU`r$GkV7C3mVCoJRRoEnlj6< z(qMjM?8xF9Ai`DjnjY{^1ww%(J%ge`7r;mP$+cnxl9kfppL8k{`#a61``t`3m|ASR zF-X^Z^OHEDiZd#BrfEhhtq2DFgJ?m`Q?PD%MnC4P%&WYA;ZU>Uhcp0i8s5KaD4Xg3 zAc2E(t6KmF!uXjYon19SoDq9{*yU}^#ZD%z-dg_BBEQcgh?XliP7)fE2Alt_fm4oG z4gh4~WOd(eMugteq&noKgg`@TgC!9(vKH_DDF-@u40nt40zjsl>Iz8%ixF_d-+=;v zXA7s3gNhaLxyzuAup3CWlseefuliqE?fg%@57k!upzgR9#=Ig)WfcOYLPUA&ko*Nz zs^!{Z%Fb?(R_WK?GT=QMtU5>eEUuIoLKhIa{cfjJ`U3x+49TYJ_X`yBZ7-83NXsf3 ztEsrGC9F@j6m3i6psWkMmjT5+k$Y^~lDyrA|LkWEXK-mC9kP6QzCh~6P`VY4f`_Yp?mP&c+*Bo=z z?@En$u^e8Bg5{q;#b99HfDr@;L+Ei%flXre8IqtIwYGithMa#@4Ba#qiVw$+P4}tY z?E5~Ltm_q-v!IXkmYIPs)gi=PaSny+Af?AUAp&oUw~$Tje&IDuqL*x2Xbn>Db!<{_ z8y`DRZkf{`T}o^h{~mRbnd~Y3l11aD8m{fP$mF_QRY9fg@c(=YRaY0bos2n zi7JKr7gzdx`h!g&edC4Rk9j<7S?RFql2#ItbK|o6=DObW`*+w+RTnnVICCvj;i1L~ zZJnyxnFBjtgvC#G0O-!!9wn|TWZdZnic_esv|d12h@!3OVzzIlfhW@E4U`!jojw%|#zrb7EJwi|FgdsFRlf5IAUXh(?I{d0ZKo{&lSjxORwM*UCc=zv0Ty z*u4f2T|bB|UhSfJZghVB)@1nIhbDea_s}uQDOgIIwOqDs!coV+{ENE6=inJ3HvEQcyjPYJr#izqoKks?G zHPxlGD&!8T`hsjy=*Reejn8=?9@w4l`Gt|Bj))|5^OdNIP?*X!##ecNZmu@& zA)I@)|1cYRqFY+C2P^m@(JZW;kqmq>EpPq3$r*B~Tit@s+^~4Kw|MZAti>f?P+ai zN5~4a6e4M_yy%&zt*z*yC%{j&5$<2@@ zFL$(u9ru(&eh<5pLB~I&f$=1IdJ#fTUt8T|_n&=Xh}I|A@t`f%4BbBvdZ&!B!5qVQ zo=6fVE|&Y6lfI%{qrx&if360fJ{7uOYpF{hbJht1weHK|z(4PbSMJ~r=Ocby(&PP< zEIUUegF^C+`2OmeG92km%MTP%Ath)#P+$%gAs>h9>3;nAH7WS8o99R$&lu6S=D>(9pGyf*9fNeNeRejmdfsBoMe=MB{$R5j;e;rsmG!O zE=%W6bh|HTyE5mvB(>8g{lvPftlO4jXGvNdEc1nBbszq6GO?{GKH;k9-2wP$G4q`T zeWX%*6Br;+V1|xCp_j{P39QN!dR`mz{#V37?BOge`=e5=vG8FovRM8*eUCj3~Y zduQF*BfDJjL9Wil7P#_YqO+i06V-O4nju}l6A9zuEjy_?Ogf--uA&l6X~6}Hi=*B}-Ek#i?Ve>~C%@T?0P zFQ;RiB228dj?78EVUj0w=loUsCqUitWo-6`)*muy zTjqpG5Mwl-_+NM$~HO?EVW5I-Lp#g)`Au%vQI%- zDQ=zgWqy@3h{mL!yviwcodHvo!p1Gudf`Ckv}x0+y{Sen1sh%JoeWrr@8dn) zQz=YGusTXtjpp(=Au_IYB1Ut%$W>pXy;+;&Iy&{!iZthHg@gJ3&aC z#aRB#t5af!_*r17&t%DPncq06WYX&OadoW;!^lj{A|r(9PMU(wL9$6jk3g8Q{6BQS zEJ{;W0cC?8I%;di;~($23Ks4c^ciXlPW zu=o!hTR%aJ)acg84Mrc4PV$dcHT9>F=KAO<*G1Y#LAG?X#@5M^_I14qH&!_M;EHc) zOtY9@{PkUr3P<_ZRx-Enk|tH$LzXt}Q$575MP0M8v}V249M#VDTWpd}F;%!eC`^Bk zw~@|&)cJ=ES56)62)C1GVUtFoaW{<)v*f!r*KNG0p_oG+&TwS6vP+4fO_P|_kfe79 zbxFzb{6U9(drOy^qiz*Ep1zFRB2#ANP{qQ0RC9>BOI0+_+Lb1gE>l_B%7|7j9Abs0 zF3H^+fPONjeiIV>QPQ!NwzqeD;eL$+3g1-%k6H~@VI8CF zpvh|~y?CzoizZu63>xZ>FDSq4(;KFjtcHDR8<%HYt@zHioz#oI7>q;Y+Byf9+lJLy41J zx8?JqNJ*|Fk)nU)(f081ZlPc1?(zQc!OiZ?gXc@u?alRaPvz2nk6>X=zg{x{*00wz zrRVd~3mWUa5W4JxjpP+ct7-1m^JvKnDURG%dRq6BN2Z7kiP_oT|KVBE?4Y{?Ow>g4T z`8Php$d$8OPoH*tqpsX8{y?u)1(h>D`Al$-myN`woInmKj7X64Xq&wo``9^sUSGGM)-9myaO;W->wEae(&Ku+HuS z_+fJ8q7lgI)(bm71jc$$$6*1EJzbtK>28;E&NKk!I?d=E47x5YhJN+WaQ5t%-j2o@ z8x?11$gsi{yS?cKe3gd^3JU`4YmI)NDj;*-wCC zWeGiFor4IWBl2W&)7`O21BiJtJ5d0x zS4HOJM8Tt`jaMg>m}>yJ>Bn?#6;yL;`Y!q%g?~9J^L=VLGLP+!8cRbs_0e6<3;Y1I3Y%u^} zzxM)`8gJDMpu(i~zT?7RMD}HRmzmi$d4EhekSJw$IK#Z4^Z&$^e^jv9URrom;W*>v zaU5&GC_T>We#8pBQbi2&5#P_NO@o0O=iC6*fWE~v`>)McOW8U!=OVv55zT_)i#mFM2t+~Fs%(|la(T31!B?5K)0`^p_alrk<) zv4wK>=uh`2_45P#CNY4lxPU9)0l)^1UA&_Lf6|yA(>Yxa2W$5h9Wam-4q3Qg0)KGU zi*BK_wJQ~UOW-g|teuC+SyVa2bTtn9JHq-4!Z58mp;pG6%-`+Z(<(1qXW3hT+D)PSNg7hj;+Q&4rP8#CB6HepWUZp!lqM-!KLBEq-Z$#2 zKR=i5YtWPzyY%;U!^7uV!2;_jr;RDbCiahnexT=&km!uD(K|TUPV{HmHah!xE%Ybn z3r1xc3ugdr_iBxdzgH*4IoS|f7UB!$Dud4?#Sp&f1F;f>J~__bIacjhko8#TgAa{L zNojkhU#9QkCjj~^+=+WnbkC^w9T?xL)sNc~OhQ>nb0%VpcydQgMO0e|NQ#im!bKJ5 zBuJqUqisjy!MoHkKyi%K3jsBpLxoi#cM#gBK`dGi!Lg0|$gZch)0o zK^3Sa==c|rbA`%_F?W^3tSEJor$;S1Nn+52vCx;oL0td%j=ViHOb|FS%VT_8Tq5sF z>>e5G@3y-X>G!kZ6_k_i8)MbVbY{GqYrUt3DMxpB%P>Q&CNtK zIVa(tZ5OhZAH>oq{Cp5oWeJ-(;99A%cZMV3)p8dx1e;XJvGoHL%}WU)2(>y!{egc- zL08pWLoG)4%m@G*jw9vi7-TU3ae)2cSaTX^)e~08`73CiwBf+8ONvu!+X7M}q>lCibY7Cfv`d}l?O@7p zt?T@nPa9W#Pt@ip4?HC*Z$M^t!h-6ukJtSY6V$WwMlamq2TX#KP-x_U@)0ndSLBZ? zRZJOwWaHTj1zu>m^+m*+^^sa|JtKs%(@phic0`MIQ{G)N5wz`NNr9pKS+oi6-dvP_ zefBE#?)J)^*4}_hQ+<^Xw&s;G>fT1bZrD{NK6bJb?rbs?Nln(oYRT#=@kjo!h94NEMXf?0Ulg&)X+h9v-7SSe z2+|{mqat#-F!xb=Ka-z<)oh%ghO$surhDmJhmQwa(aTe}V#oFg&EQf@M{$G7^b06w5xo;Pkz z@f0)4Loq?Y=OJ$y@eJwq#i}7Q1PK3_aYapTj;$UnEgOS?zL-`6s25L9Y?iX zhp0|HUZzkvI{}$GtTiBMDB@{(6sW~MwES0x2|6l?lim@1c1VvH0IUVA884?hGQ(5` zMpccFIj;V2<8B=gvCx*w=q!&u9AcKM+XAqjy@Q|qmGu(G3;gW+uMdy*1>S(*NVKA4 z-6gI(oxh~1%ID!G*hC6{UXoF{?AyuU-0hPqIL%a3LH$GMC>xS-Nx>WQTo0p2kQ9*GC~UqLNk(-> z)C`>z8(%?P6-z?2sf!qIRWu$>dybjz6aavgsgHWKx|csMY-D_U!k73poV*2)2HjDS7sk&jjidp%E@e2u8oT1gA4~&Hf6@ zLr~F!6mm{Hv#7l;L>x?(zZul~{hVd5KbTUl1#~7eJnVsM67Lju%x!Qo7KiUuQTiz}CXCvZiM1IFpw()7Yu3*2czSWV)eYdC|fs#?<;7P|`ls z)gjDja9sw1+`sg568r0)K#aKrF-x)5K75h+dwu-^_5FTA zT=&*d-rRKu(uL8tX()ub)kY>isp3JhFzEZhk@&bMshnrJeZ-j6ntz=OH`4QVD#_VC z$STC53{Ak0Y2?iY(V>#3ED@rXChQCF1pvQ;xla#GS|drZ#{$*}=`4>AwfUX`aUZCh zL}KGTKEgxl$|4oC)a`^+E`DI1{{c4}q1c2eE6(sI%f+Zn{R#z3w{ts{ghJ+<^^8*35M<9N*isO}Zt%tXujGm`Ch}LUna)95o|b ze=OzWu{79t$a~<))x1_r254lWCT=nImg@08_!^oEyFNX+c0VIA;Ph8V zpveX-{=7W_aFA5TaKyAFo?u`jrpL=g=pLXe_K62ke)@6c@!p@)cM5}+L2766?JMPK z_#%7`)Ce)T3kR=$YMf0R6o&ZSm2*-ykCafKJk7zR!qL*fl^j0!_)f`xGt<`a4!nD@ zzZ@^boT@{v{1_#Bp7IN1z|OXfd`dEo|3qk~(sx)U>p<4i6+8i^d8}OPX`P+PzEAm; z`?#oPUP-Q)=t3qb$FzP$ER-|J=tQ^6-xEsLj4GkVC_?LZ8=-9t8~n&|cPu0Rg-;^m zh@-+--5^gTbkD@4!qnC`o8PGcAhOKHWB&Lc31YG+ZA@2+TzCJOF`4t_A0$Z4yD{`R zNjYUh^i>x8PJS|jKUR3V74z}FXw2lR{~_jo<`*Cr_|yK4eUtr}(g>^P)1RR~PvqEm z%dWfw7x+)i=k4c}wa52nuF1gx-aAT5-YOtN8m#H%CD}UGNf<1b72&Wzds%kZO|M@$ zG=4=*a#F~l)y2*~?_ezfbHpKot*X#j9D66s)?9v*)lOEOWn53in-w$VCjo8lH8A)) zpZT0VvF)hy$S0L{wEfwp{-O2dp3wiB`&aIbtWF_-{qiL`vYYvaHPN{Ga=S)&%;<}7 z>ab_=hO03J{E{4Z;EYF-C!>U4V!~k5b(pQabQNQA{MBuBd$TS48(_dnDa|@|133KR z%$cx@^YN9GUeMwu^8NbakDPOrQMvg2d)<;vH;o(UR{)BNudvhV`I)?3RS=QY$^@N?f9aO+ zQB?SygN6jo&anp{mJxXQUr^hFLt;3exQ$A4F85h?V?~|+0gZC<NA>Jt zc#$(b{nOwA+>>&w{#Z!%Se}4|<$F!)K%CZyKTBCMUIjN zk5;{r@HS;~!ZzhK7iH(|mZ7O+t1UPhc%w1s%zq+>KN=sfG&quIE$+iTu+)8sfA#1o z_TQIg9r~E2qW*kA5kg35(sToJ=!@kU3F^hE`k0pZ3pWC18wJ@&-T~k5YwYpc_1f;f zhE`*-J*B40=M|@%UA6#wZ7f*rXN`f)^2u+(@#sd{6NN0;H9q#1nZl5o$gB~Vy~Lq^OhJacuMJw0~Gy8SwTK^u%x~DSK-y?%=3F!_UxuuleLSxNSqJ( zT21n~$5Z_$yEiXd?z$Fxo^FO?x(mGr+|MtJyt8ak$Sn3u(ogvAKR9QEzRiW4WT~Fl zKlYS#wH&{07M%Gx^o)fXE?@o)$x5CPFzE$=PrC5Mm-kor{pE+)zf@9) z!Yr!t^$ma+@%{81JjPu8)Pv9ygT3s6v)}*g?^@e-R=2kqh{&m{=I2Y z+Y%aX%}e>bCO6f@;i7N%hOhAH_L7TMxADbYn7$v!)EvkPfTO;6^yQ0XN(K4IY8{vg z4Gh-!9=x9MyL^2;eDOBAV*LHrYngl<_MTe3K10l=5Y4XOF?Yt@>)mH8cO7u{E`C}rwCDxcK&}H_2)(AR%Z+9myRsH zlTP<#m-WXNexEhk zpSC{SO^}Ld+RfHPsw3KLr>U$mY#|=T1=tvYn))+iFUvXs02`#ObWu{J8j7pw^V@dH zlMc#@@dV9KkoI&&dIV^HqFYJ;U_-q1;3ICJi9h!h)6Ma(e9xA_{HDbgNtGkQ5rOgQ zUlc#evob6B#?F#??+f5^Sn-5lSNZaVubkB<` zml6~XlIA$Zye;d+FL>(Ao8l4-hDnx(HC?uan+m+mPE|8}!vzw>WyM?|-zag#p8_A( zC)b9@W7$zbYt}pWh@$Edgq||7w)L+(G_laGHl5hZck6P7FdGIpxMKwh;om@10F{ce zaYFJ_;jg0=uPE_?(;9NZs_)-b^_%%_4Zc~7G3k`|?}qP`$I#_|<(ntKD7gY4%s!76 zYEQFo2R%}Uic6|%rdTeoekSgg;_1{&tY5x(S_!E-uBe(Xx57lx%(Xs$N!vG*V zoGw(RL4K>*g9|HX5|d@Rd)ufe7*<&v1vLcmJM`%t&ug)o<}BM)=t?1}+(rN(-ef-2 z7%R3j$2J%ii zwq9gG&p=i5yb|+)Xl_B=-kxnViuLdB2cMNUU`$+aXZERnO?k_(Jq)*yWZ<_DAj;nL zbgxl;l-6zM)zM~?rc>=6gj%zL%!ExQJ!Q_8nch=@YoJ!Ku$4yl2JDG$7{AN&;djar zS#ae7RX_Eh!0TAqPhV5$x{lrpb^AG;*@fw3NJ~2(*M<>hZC9juO;M}<03cCu=5h;- zkNtdD`@w6b^|`>2JqAVI8^zPZGegc}ioZJ{-QzZ6GG8}H_zn1V-A!`(uS6G;l6ZQX za8jr4bqE|RN4LYa(_Y8l6fI`XGI{eZkDcLNaWFn<(4bhH0Z?C3B1!sK%ltcd?OPNW zI+dMX`(UucVX*Otx!5)IrX5xbt2{geq1#lenthLvmjmA=q1xP)d_=D@^%LR#>IBSa zC^Mp`q>;y(>dh`)6-W;GF(WGPrAz)SRv~_ElNw}qjwMEd^zq6zKbKR_&?w7>Wx4`sCSLDNhfOo1L!jzPZs*Rm$et>Iu zSrm|#X5|#v2&&dQ^VqzgXFj&&GIbTI((I|W`_|+tC-aDPn1#J zaX3&4c&gA)y9H{^emO2xCfn42hm2~hOoz_(34tg+Vu;S`D}FI6PHwiT;~Lsh2{3|_ zThgwl=pMD2%ZJOB4evX}!;`;@ndJf?qy~zxHwh)$YyMDSjjJ56lF@IYymjctYRiRR)m?@kyzlPs z%hZKpC_SwTtEK{gMNL9(EUy62@=GOYt|B?HfdF$*Nkce!Nu@w-(o0Npi=~8F?RWhG zRHiQgdmX6ZtmN*=OVssyMamh?_!P06P`rq?rV$)@-QR+}wiJ6`uIWi7{eguvXm&_OgD8zk@1;D%-#KgVd`bC+Zr85y@m!+MHG63j(i~2tDRBXeH)}Z^F|#2#8#{{5zv5 zuO;-wW=+Q4fDJDjO9X!CBq(u-l5}m{jVt-D&+@~)L)V_Td6>CjEvcsSGB)*LVqLxW ze!oErco81ryAnr)%aU`bsg#_9alcPIE1AR}cReYZ1is7BHLG!6Ze;6xDiU9{qnLRE z3dzUGe97p8y||p^9n8t9l?5Bmo-y4zWtlx#{0waKDe>X^{q4WV&H`cC|T)2VvWz+=Y*zvg_ow=-PgbvaG zDG?LEe*HoWK>93tGb~r*aljBw&}yzzya99GtbFk0k89nP4k^brvEZ4;V^T@9z=d+^ zv2OG4lo0p^L_7&lV5uSwlZ=QJ3vCn;CEF~JOu@T&|Os=#`khH=KXO#S*$uz_-ZE#C% zQB)r`!ON5nkFDy1GDGw6v18Qyr!yjHzqWX?a1xuP`n=eSja)F^eM4+Z8-y}M>H+9_ zLH!YbxS(17)5TnETggYqQxMA-^J%fIoI&zth$Sa?`1mJoaMusLu32qKIHCBFH26U& zy!3KDj!V}WMY|0WwDZfL8>5onyVE)hhLxs=J2n$h0|W}iiugl1*G1gxP7p?p2R-~f z(+D6gE-@B^j*yJcU2Ng?>O;l4I{_9c7`Iv?c;yC+0zKKRSqe1$Y{d;#WN6AeIfrWC z0$1s7aiK#SJga-*_umroGWUGR`^HDk(4 zy|h6$E-Afa%cX$`=~|n|Bo}yUwYxgu4BK2ZBHZ1WxTn0t_$BZoW!>*&kh=wf`G-zZ z3ZwQ3l1)R(W^|}|4j(uSGJykH3WqxsZ7-vM-#y$bQ~UcAKSRng+OHAGW!jy$QU4;7 zS%m6RS8TvB#NbXL87-3nBs+mG}-+)x@v$IfF#Pa#=a=zO7X#Y!aU74V}wS%?~52TiY2n&fKuw%u>cS!sXW;*yYi6d17&db`187r?*K~^ zguma#vi>8-H**C~$?3^Rk#)8+g z&ua@3UjjAZx=Q(%9o1?fK{C_{k{jOi&ngx4slwHOJ{ zuh+S=#!S1AVU?~1YFOd~K3kh69t>w&GP$626IC9{X1C2$+anGClx{_TLyTHyX($&) zkGb?$n%ghJw@;daA{6!Sn>8SFE;NGZCnn}w6fLuzn%p-qWeZrt5ge~~Lm>FT@}y~TV3WD+WyJp5#P3gHR^U?Q0E zI}0--O-5?1nXpf)A$`A8pw&AHq%y#CPh_Ut4|^9+kDLlo^2ySKv1_^`>~%X`K3~J9 zA|=*gsP*Z4_m8B7v-Z2hrtXg**Ib~MMPuUC1XpHwV~YKCoXz#4OfpGAamOfvZH1mH z76-mdc(t%ngG0}7qdR{npF!9dYgOqe4cZil23#;L0%oQyXnUcnfvitGkXw%(ec>lR zQg$@5che$stT|Wm*^h3zbUfwk(asd~N2p?qdVt0|GY*DmT%st$#R5G?Ejf$OZ0eCH zClvY^hqHP63R}>AcYV|IE`tM7fdaI64?tRxmlOUqv{*>mrg*T=*j?g~T-K_vRo)zkiI0svwqI=!Gx&@VzUq(eMO7FI`zat5wsYPv2U=evOmql!AC`X*6ajy8Uz zqh0NZ{ccfREd_;xJb?^ag$A|4xIv3~rS) zTORn^e!ghQ3XE*&`$&jY;rYW6nRUZ!%W{*&2v#_Pj^?gbM^8|% zHy}`qPzb>N?FE3LraQk=hAntCk+_VFu6E^_$5l zNgwX!v<#oKP(fX)7T{TWhHWX(3y_-9{{~TUiLLt^e8yw15#D`Zmw~%<5lq`WA}HxD zP#a@EJy#GU`WZ@=sF;4^L8<(im70$fw`sh*Qg;*?n}*l)uWb0uLt5d*jqM$_I9gl2 zvz$8D4KO&f*rde!83}BX@}FxJuo28QJhU{vM$F*c$Ke8#Bhj!@oG`up`U6KLhj}!p zQ^`-C(NLcJSTc3awdDF#c$?8PtLg7a+TAsaABSo0d0>nHYbaw3dnLx-3kj8iRU|HJ z!YbFPx{p*d=hxKVWPiPDtaT_TwhP1ja0{V}rS_IZ_4D=c8-Sp^i0$3adBaw&wYqHt zS9$SZW40sA@*&tH@PC3|!WrBIq^ z6{;0&0}z<*^TGGy%Ey}T({hC)7G=%QN9G1@H zWC8*Wra54S%m;Rg12k6`1ij#e@qfSC^-c@`ptri2<(jTa*Gs?RWhs*koXz~r3%GcJT$}t{O_8^=#a}dd#sXIQ zihG5dD1{d$4vCR09~!bZkvy$PSR^++H%!Z%6*g+&Q{P$?Jft&8BO<|Exg8_3Xgu~Q zEkw%G0Tw&rE4p;rc}Da+c&rsgq;@z}I0Wm187|t)K}=9klTj8}l$Y6vJ>n?gHgV1y zQ2R}n)bz_hFbbO0o(OkJ5OdPFj`4)#C-3px46bHGJ0#jFDe0^sWah5%Uuaa_P0iI^ z3)*t>+}jr#D#T&7uZ=StS}th9soTfIQ!bBukz6uqRYif7)V}3&JuEPWH%fuzbXT5DumDN4}xItO_DSfyf!?dazHZ zCh@eP&N}HMj9>3kWf*5fv8uC69brgHFL~ z3X`_6r(9sH!`b%WczFhCB8)s#5~RZ@f27$@ys>7drUr!=FAB}Sf;thHh|9rl>XFtV z`rWx(MMesCJ?yGiLJ?ZYPx9eg>%cE2x~(B(&ol_?@h}Ke7CL{l95i?4;BjwWGuzv* zudo%e>-hIGvj?P%T*zY~@~(ss*OTw`viN3ZnZ4FY?ev zOF|hHU+1Ywgg8PEIyv8fUX4H2ZU`^@O=7rrBb41^wDlZbd0;#UG;yi;p)W7G>R(kCKz@u;*u6Tc9)}c1=zhkJP}ig;hT2 zuAcVy_L^b^U6Mb$h<(L#J6^0Et4a2H?%7y%CM$k`zTe0GwYm(SCqS)cm&K{ob z^dz`!zA{H~)gb%k-TQJiI7u0jWo0c%r4nKXB5~)j8N(!qM#^Z1!5RY?HF;wSeY+F2 zk$~)eMZ60MdD(KV;x)@81cf0saAc3oaHOuTu2X7nG%-g+Z8rYDJw(wgYNlzUF6xtH z{8|o)2!}pu1k5W_!^1-l3`544+M{f|U9TFnh{=V=c)y2wTB%#egNA48M-g8lnioq$ z?u&-`oPS`2zp(HySj&P1#o}Ec6goKg$xz@(2XQG~%8?O79_fuY=_Wb9Oz_A^p4%Z8 zm_C+#<(m)-mT?=lGI;(eok4+ylHm!YY7Gg}KqZCreucNW?LKT2+Hl0NP~SsQOa1qrbxSio+9uc8Vor5B6wfgdQ~ zdYcN&aj1NnWD-NzMqitS2Uo-fgvk61W0B5qm{3yz@wlxvUD*W4Dq$2c@`|H2cjVZY zumoX@MjG&qL0+3pdq&)hxVafm^}d)^f8g?-*OWdq#+rKgm7^eNqT_U63uz-(Z1R_K zo)c_L@BPP$k^XGu9CL@J+<-&L+$xp&uV1LJ9b@&8$Arb{?c_xe`a}%OY2)2#T0$9i z$2<&!>50XMQ@bVQb|kZ6A&w9>j*x0GV`C0~v=-cZIVy$g!R@WVllBMo+}+U-)`lts z0XI$@s;b0p@{klr{Iq0lsh+LCpFQLU%du_|qDT&t$S!Nwms=suu)B?!CuDIFi&(D1wq`utFa#SGA;vni=-Wi#!7;BUL_;yFbt4Pp_ zI{lM-X$|u$T#eJNLhJ_=D8}SxraoB{;=3P36V{@xDh}$iNjBkOS&LeoBPVpY$nf|K zIxwbWabG#cK0uZQ$>ui=k$mQ8v$-%e@rgvetqPDnLvYk9vp9fc(34aD>d>YWTSCkQ znPd?a-`IjdJcmmFzUx74o@A~99fEO~cJnh1DO-R-X*h!W@V;I_2DEqSJ6I>rX6T+# zECz5yi{Bd-_KRC8PsCsHHe7JI@jOWZ7*QT!PH$UKJ>HnFer6Z>TiiwLt+^132h9ee>rC2 zWHK36ZM(mVSZuCrw9zdsj>}RbH6G!a)H*D)R9mLhru|C5(FT@uw|g(B${R`<2TN&9 zK|CULo5U6716Z)kin5DR)vA$A*d&gJEt3tJQGc!8f%BAvB>d^tw#t`c zE2kPv(Tbw|3TJFVT$rk07;(mIhoRbkJz}B8%z>JT!%j6saa?OP6Nbc2?}Uv@II9Sm zaF`ZD5M>+G<>E#g7^dF}lpJC(*OXM0-0dPML(|tCk&lj5q>+CBEb#ryb_&SILgU1sL~#G4 z$wNc%>1W0-VZ~xzA%cSuF8+36m`10>7^v&M%h}>{UUT7Kz;?ZrzeQ~OXbs~-ARacP zg5$}mZ`@Fh^%&yP1QAJ-Py7Six_uFjhUOG(o+np&7R4)25d z=(oH46z(a)8i7)^FQ8Q!y&5vQ!qV?tDazapJ;SAnu?pEdE{DIrFq_(jOjcmEPq4)O z=$%wHoBw3WkxL(m_#qB1G#gl+na% zfvw|F57NPJX+@{OL@sEq$lueSrIfzST`;r+?S68@lh*)!QmRh3>E5hFwyYjMOfu5T zA|pg5g18%nV(WzNPEy2=m)7e^Ph%-l*>p}C7`c=>JGywoQ!zcy6G+i+x+){JDp>s~FH)H$bsG^dn3e@2(3lLV1tYq9*Yt|O%1&q^ zM<84oZ3^_I!;BI>(;O$A_fm-hnA@}JVMbutbsaw^g`69GRMl2!-V>gtY675pTOEL6 zptbzeVD6Ag{{RyFm4sazQ(6PWkO&wqwQqd{mbn$9F$2-7brVluYsu8*w~YtXzJf=jcAiv zG68R9=-3t+dir;|j!>;c*Wr*K62v0a5f|!&t}<1pL=}t-HvkQZv7E8g-B>t_HU7A- zs)KkY61G>#@E=66lkpI^0Jlw2Y0b#VvlkTed3zhp$<;K`%rj9aB~Eg@Zqp3q1Qn}nzn zeH+|Q(Z+oq)l(ZvB4zXD?Sd2aI!4zb7R7t=WaXJ?TS*=9bA5lj&pj=vms&sG1iZ@5U$T`PLj<2GES88ys zQ{8J)2NH_3OX=5&g_MGm-N=DLeV&$_Npj1;$%WoYdv%iTOiNF|B4p-L=OJ?#pmZ)q ztR2rR15Tq+a~|(B^&CgnvRskKPy@qSYD~^3&;I}hCO0RhaavHVIasHqNShrujUC6C z2iMzQi_NrvM{xp@o;j$ZAElzei8Y)Z7-Y^j93&=E*iCIndI{h~#!!h+j^?J4a79eA zx!#olle_P~5Nx2LY=|f|`LMvR;WAt+chT!vJFqPM5|f(80Al(n)iW<$PbZ;^nCW zGBHcu*6Wa~`*k?j4nyALha%9PYYfSN`xC-M8RQw2NN@x^5JTFr$sAnzr{DxxZ&nl2 z2~hr81(S4iLM|1=P9}+Ucum=O!$*;qB*0YsEQ-e?14wd4ZE%d2i3Zt|pTDP2_~xNaYIT9x8#7yA)0eB({7pJJ8SE}>e~4w(`mIXE<0x_% zi9B)CzG}1udS>?OaL8Gx<+6OBaphcZg1Q2V9;lGs)@uRL%5?%J*3gL^bxa7@nF6Jg zEGC>@7syIX(UDrC(d27G2T4`goP}aYFmGIn7#a(m36eoVOGy~QP->vc#<=$w&2X5h z^yTc@o!oJ7L`QWI^CBC7mEn>c4vfOwxWDR0a%USf5Dp_sXuhwFN(GQ-jwv=M_k|v6 z8BF1zOxeeJYizj1sHSoD>niN}8Y_Yu9!;jKfd{owj5yN~uIt6u9&&+mJ$(xFmno$$ zIVY(fD+L_~T|l!!Z0CdHVF+7om(XS2BsZ96x!Ntfd zgHKYK_2*xh8p0SV8_S^ES+u}+co15~kqq*h9c@HM2}6|t_B0RX1mks#>qQ)h;d5L_ z$|kzXH64ped77^u>SV6rzyLLA?bhb>^gUE3Qgmz;WlR#%B;dpqV>uq?B}U>XJyz42 zWrJ+MnwSn$8JV%3F%GCq(b-89+21pAVx!(k(1&CH@{z$zI9JBX)n z(yPgQMC|ga+Sk%OrTN*#F2itss8|4ua>X+)&Brmf9p;1(QLK<0M@Vi)BgZkf9o=# z$sMxDAZ0pcQYjC#)UJm%g&j<4FD+P$>>kLm{{Sf4WoWgO`{kC|XI3jZ3b<%lEXx); zwrp37IV+`>8|A0|w3l+XBQCPDBR?>*m&px!SIYfN#!AaoJe$nO$cVlGEQAPoPlcBE zl~UBa+43A8PYNi7`p4%y;45kapok3&}S;)Xykx_FX zKw9o}$Os6gKkC(dsA#T$73li5f9hd_BMPlnK^w!CKU47^;!njNiN6#6B)CiXoAEE= zYlL=X+FB8?Z*5oCZjiK?-!WQPg|P{Z-1!z%`w2OAK6#`_+b8&Y4{zh-@z z_HWtuD1D>$pW0U_eXI7r+aGUKF8#Z!5Ak$n{$KL{0GIsF=II;!f5-g(ALXu{J#L*m zI(&V{QB+x@7${Ft&rk$mEHwsFFt%_>67~N8#J=7=diCr70EySY&$u$8!({JkaL#+) zSXLcQBol-&?K`Itve)(Co&`fCf;3n z*Tb)=bdPkMO)Pya?v*x5+9iFG&(h|}hN5dCm66JM<@jrVDG_aZ+_j;|mQ{LI1)&%Y z)hm50Y?f@6siohhPo_&IO%nA)zx2uU$*N-dWU^$sWBO$JWcp088m;RUj zn08CQO5aOcCA%eWrAwtdB~6m2(w>Pt(wvTWkiGXtOvy!vz$!5P80GCBH6EPEQpd_A|?;|qe_54{Xyi%M)R#qiP?rh-ki z^l~dh+TV+P+EJ~jOJp}D^!jlUh{Rs1DeScV_!yE!_QA-%0)of;#k~xP+uGlYRjEPlf(@Gku7tCa ze>($4MEcog6v8E?5alMhmm9RVlJ7Z&!R@)!^$rq!83U5GH|L;7^p@~ziG5yKZG3B};QU6Zs^v%q(xvU_TY=Dvi?>fhA=`Ur2qn9NPxs@a zLlHLC6{rN9eMp7y7}{b?H4`@W@#^)bWjH>-SSD3qBPsN@qm)vTDJzJI#J;J8g+fL97+Nz8yPswXp6b+WvVG_ZQ&ck#XoI#WvfQ z;nRC|zZRQ-FkIH&H{xWCZeNq8I~hz*F^aN<;PhQFn27^;SSlH02SbBVl2V85k=m`U zUN`1UlHxKyV(C8!0n+LV2qr+l#H-Ci0EiT*MF5;HZp`e#&MHe7M=s%?Oh}zD!V_cG zg6$8~w_d&(7pd+ywlaoGcD?%Y_i%7aBwJg^PBtR4w`JRLIaDhFn9405LKNcMzd#CM z9P;)_V>Ssu89f}Q{>So`H=jJZEtCLKJWCHVP958X@i|W%gJtBTl9(v4WGC?jDk6+* z0m)ORh4~^e{TWM3WHrxi`{Y~Pe3kId)Ci^3Kh$OtSjC`(NU6H(Rv2=2wfvT>!V`C4 z*eDbLFx3c(sP#vsz<>o1Nh3l;1=ISKPEXkHpqR;_ziaay)qLkfGe#{v<|IGjEe2Mh zGPHF1sq_E@)FF+8Ee;*MAsjLd-TL;(l|O6L?0s1410LyRoE{F_Q-a37EKr|0NUQT$ z9w)N3y7?|TMZLTg;I4aJXYpG>+?K`)3M6G5$gKpU@G5BUejpD*_f8?S2n!gGeq%V~ zr(D$%R&;N*(4j!8R=21i5J<-kyvTpGGMYuqi-BRG$RyKS^0_HWCQzhhG_Ao@TL+WS zmR>QJLPEg_Vs-1?T{H!cJ@3z_Foh_j@EsC_Byiv-LPaFTJEX0_z@RGD-SO?OmH4j2 zu-u2qQO3~qAD*D7qj4ESVyJ7!f;UXo^@UKi7aw_%3O>iIxq@>3f{zHmX)2NfhuCju zcwkZBVPH2ahY~3`k@&pW#I_b9Kuo&rwYK4rjSoL|HJbtjUe=`y>p+V9VqC7v3L@VK z2SUo#A&<;!p_3r}jYbS}Fm}HtK6bwpKr$E!e7`bUT_c=RY^csxaPE zaV&uD_-F&#gk%g;2=c$h`5*W!j~Xm;zC>)VKs z?30G`iJ1cy?do;zzYFEF4n*nt{{SP<@ByIRDRt%feaUirUxa%6zYTY{ZmW(-Cr)&G z4@C5ZaqyIPR&2$SHyoP^gcfk~VywrCOfD?*^@|8UX<>6?V5bkUqP@FcnNBT`08rS2 z-QBS;n{?fNJ8R5j7m|ookhjJbe!@zK3zWe*SiUV`6;u-4Mg?6+e;L)xb)_j=(%-SX zyN}ZbMCtn7R2h)0Q0&5J?005VK%hW0ZhYKthVIDgeinp{1pffcCIN`NX9tTLatX7S z<$4t_y)t8$TXt9i7!cYj3gvNO**hmd7b1WodUs(C`>i146|)fFIud<$EUC0m_(iR3ggd^{0;{3sjk zafLG&6JrK5<)yIYDYCVSp~%{jNhvIVPwb-kroHdYsCeGW7=$g)zY<7vMm7Odt<9=U zG&7wHu%P>GfQ_@_fhd0?4;FjcNe@*Qriae`El<@FR=T4qxGfTRK1Hj(* z;J!Nn0Y8zYna@rnv&eY-k{B(;HXf068Hr~mw`xc!h~nCy#Q~V9D0Kn`rFb;6Qcyex zuh}x`kxji|PNBHKW0}=WONSKPV*;AH--Uf&+26=i!6xw1l_N{3eUFl8r+Gr2yfkj5 z>uIXegRS|tr{rn*a5h);Bz5gBVNp>KMf)ap40^RR%$QeHeT7rt1`+w1>($trzzre* z$;1W}Ex~kvB_nX@9~SXu@Yn_hq(rLwkAZ0T%E$AqA4Lux}t{} zFTq$t3U$J2rgK!@Bm>uOpAiTN{{WxgM%26GC%3A$1OR9ydvvO2PLdS8_-50_wIVwf zy|2oQ*6<(MhKFt#4O|1mdC~)Y95?C~#D+8#&qmDB10QO0kno?*5*N&5M!4o2$vc`X^Cb#gU zS1g(bI$c2;9#x2*8r!`~RcaH>X<(xN0H&JW=yC4ej#UqV!5HuZz;5Tusq~&sWe|u3 zaFDf^l-4=-zXlP|h79ZBekJ|yaY1KEUZy3d9eu&bQH^Vz*6AHv0xE{wQ0ir*Wgw~Z zLb(S89u4LMY{QXnS6xs7m)iUl#sHKL*T(#lZU}~D2pXIOC*XZL0?bD< zxPaJR0)_DGLmAGRaiHev?2|`sWGKK{WXQj()ERq+Aks7!jRKn}R9hdTbnVxI=%R^6 zk4pRwp92Dc98VJ&mXUzG7mOznOTBbYoA z`Kw#_XX~INS^*li11y5(U6!An!o?ih<9rMD6Mc2DF6+vP+gC z6Wl_fe7IVkNatJbe^j-yRNyY6mDC%JU3~+C*hzYYNdmEL3mMXJ5KY(7H5n3lQjAil zi(F(FWu8S5aLn`*E)jt0VFO%yZN@;TF@Ez{VVZmseSV^2NnFQ~ExkqlXvRS=u-KZI zUq!(qtCNeWqxv2pC8~62!>HORqE=-PKoq+9WE4S7#P&jc3Ow4;jhgx^UU3<$T@XV< zBguu-C=b$_mlBL(LM#*0gTYU3*Wx>V6ANXN1-!Q6UXib^phWa|6d|ek7OCnjBfxM~ z?m7Z1Btko@Hl*&#$>V-jq9Y;FnuF7S3-cid@=$Hn%~Ucf3vzjG-aUU}^DQy7Mo&SI z{wUH8;)iM28seWS7z)bxJWS#s;L&+{)*l2ks2<;pG_BsXd1E~z1A7{^3W332)%hx; zmb!<}xfj2vzn%PYmo*h5JL~7t{6B~3EZc5Xk#`wqea0M;yM!h&$;)vR(4)!@VuM}0 zRw;&tIk(36(2A!8dQ%+2p+rAzEOhE3l3dKL-skpGnT^z6 z>p&Q9Ztb@Y6d_CW`j4ZC5(J9JMKGIGV7uy8k>R$$33In!Li}98$XKX9I+poFJci$o z(2*e;=N;&yfdvdRkWOl=Tlfw&dn~=wq#mR60Pu}C!`EhhIyw>A!vdj^kqelw#Gz7b z*s-+M0UfEPY_jo(!R?$peAm(I)OJ&VfF5k5U)k_nIn?zrgTI2)IR``z*SDiyl6y1k zBy41m88|kfBRDn-HX5AVp36img$XIt84&gGQkwRYpt)3_WN>c-iX&8LBSi&UEmIWT zH>QOo--y3k^BT?iX{ER~w7Lu}q>U}&AcxcnWjuqhnXTh~3u;bCln5pMif&QK~`u)5) z!wJ9yR*jCeBk7>ntVOlv6BKxnJ7a949)~*5Is&Cb;oz^Wyv<~}82;TNRkc$l=S@p` zBQT*QbnJUBg(1H(D{lRL0OeQIUH4o%t@GwX(y&q9{2Y}eHAujx&T84oa0F-X1-wd5 zr%qprCb}Sj&+9(##M8rde3`;-m)&tig;T1k3~Hz(nxtX|b66@Kx4u0$)4hpzoEi7`%kG+Pblc0!RQYKY$ z6ih6O4-9img9Q-jdpxhb>% z;vJPc-;F?AL5;H`144!ksJTyhd#Ki2aX*yBP(a~F9DDWRi+-@BR89!a*%q|@8iygC zQ6bH(QVYu*j6Vm02Gty$0}~6Qk&Ue=mWl-%TfO+8C+EGAR5nzC{{RINP}ZgDEDE1Dp-8;ot^p$m&MgVd zAdyU=ToXQ`vRXF*$u3TU(8LTF7#@zMWNcOG;^@|vj0{baXa31bq#4c9A!`QClHE2m z(09?_Lk^Ge={T_LSEkt8GB&l5e=EJ-eEW)M=jI~&!pf&TzC zcgD?hk|89L+Dd91&SKFVfHDlBd|x3j&5lca;KzqNo5Iy{CZ&n2?sXqrYq(6R<+kqA zq&h>?uQnwsSLf-#{5*q%xN}OpD%YR_2p|Qufn9ZDs9`qtbTq?r3hYZE+mR9u)5YDm8RSZ;}qb1qWXcG{*85VIW z75EPZJnQl}j=HO3c%u$_dpM)hzmUFhI>X0A7+Thx>!X(p)^CXmb}h@gHSK9IqeE+F zZjDX*V-EA^H$t^lqVb8QY?|xpP<)vxGohkEn!2+Ild$X6K&?lmmh`YIuL8D6?SBjK zej5Uz@JbiM_(6C$EtAm8@s<8@z`s**8j;1`Ks3-}lfhsmq_YU3LBeYb}~4UJ~5HgcW)j^h- zR+BX-Rx?#GH8^fvb9t+hS3GnxWarf<#A~2RZ-WXPM&{8Vm=FyDP*ns7k&mL1Qe;G- zV^4eB>UnMn%BdnKUv6KA6S#yfw5|qi=!KRH+(>329B0VdEs3q<6srWMR3>G|EObdn z9z<+?xS5;7l3-00MLq{a!fP`uJdT87VwZ=upbNJz#g?PnGJa&qB6nY=8KR)16feQ# zN+l3Ast+@#i4nJgRCVZC|e z^wf}`*JQ%r=l^d!%ZH-s*T2tj0?*=XS=$Rw7F z*plo;{z=2hEln6P9DK{6I~qj63F&AKw1=_dmD&O=VlPc^36LZ%Sc3$SE-Tn-GCzB~jHAkvOdnqpNctelM9 z6Y}&xYe_Fk#}bN0q6!DfBO`YCM)h5rUTK*wV5Z|l!4St7#TtDFn|{4G`qpZTq?hPo zF1XM$mX3B3Oafk_kL0h(zm)DNTwl~(xUTdfmPXA5Jx|bI`tz?k_+7{Pf76m+sB^A$ zG>B~m+F~FNEu(98`1HRiINJHCnjOJuiw>90yyLE~GF_`nytxb-H|?b;jr9286z!(5 zXVre&eq_6V$dQy^Rx7JptS6>7J5_zNwI>M9l1_9?@m*n0v!is#!UR$NvS2Y;O;S{Q zD9@^2stc+8)f9z0^)qEZbvI>09YNVoSx!(?^A&YPPqL-5s-&uSRQFVRs#_|JhpUf& zobE9Gb=Y{UHkzG_g5a`seSf!m@nWbnh$6*SnKBuRahkYFuGym<7i}cR*LQonN}~>w znUcHJSC>8FRjmg}&axsj*T|`e@T!$L*VK=dhHS9J%Cu~+LduSrT#J^NIcm0747pu( z%Iy5A&dOV^Rwrd`>ni7LmISL-*=&uLS(#*U%B;gL+_F{6VSg&Ka=j-i z)3VVYEU>b-H!B9rt5eHd475_q3#M6IveOGJ^m4@`EAM$(m6kRPsYS}6lPd0cVULz} zJgtA#0%k$2m_PdkzF@V?Dwta>`C*BaRi3Y{l?ZueZp!T(tHR4mmQ$wXVqQ~UGN53} z^X6A&Wog$duNh->%JmGh?UiOcq|D0|EUU-LNaU>7SC zxKH@Ts8vufrWw-=zZzIH{9&kT_|Nf;gFnWW3#bLUhBgf~4elELI{bI|=E2p2`v>}v z{>s#=_O7KXm2OkHSM3kA{@43s?T@wo*ZW`XkGAYxb0Cz1PvCzB>`}@80K>Z-nm?0v zd$VfGt7quz1N6UB^*>wne^>RdL;Qcs{J+oR)2C05{*LrN^S(aIuU|v2UUl!+oqP4` z=ym5`ch|38y?XWV>(0Hp_4X?;$Pb5KfoufS1MUl49Q-}7J4_(3L%3V0S*T+~G2Afx zSNPZQp23yFO9hm}KgHUGl){+-EkJTWN1!vPKd?4u50OBoodmz8%O?vbU#EYknrZ5q zdir_QJ$*i02CxfoCYTLXKklBkPPCJk(}&ZAlZ}&)(|^-<({0md(?sOt4ThggpG=ob zzf6Bje@rye{{Yhd>3ZpVWU0D9`ahx<^FwLiQiXzgVaW5L7?OLn(TojP>eLB%hHVpsSJ(ebxS3iSO;@M2T{0Cas3mofgx zowf~6C{l132PR#(zZD)iAuS}c0a8a zhqf$%&0S_ya!FM}a>NLfw`{QM>{ag(Egkj86K|n@E9j;j5rB>w3kG4vn7NKKm96NB z!~|?^8L8uXz8JkXM>;fG+Wi$403>m~*XG;7PIVEfb##ZU#~{(-V0zwzn6PxN_UU3~zD~1Yyz}iOHdia1X?TS!4JD zl(u0H^5I<2@NC|pT-TMVzQtQ{6V_XA0n1MY)lAhTsaFc(k+EhB>g--pVVR!%GHw2r zs`mAdKHG3v2FZeP1>GW-+mm>b7(9g{P!@_wcH^87zJ4|~!~MMr@gmW4ZcTy2VO3HN zmJU^FeNLh}*?u({Ov0&zQ3?o2bi=@IJ-L!gN2S4bs<<0nMfTEovMq?3gpgP8;(&}Q z6eKjWDUkNLphFoI^18>_lPg;L6>-ErDRot+O8iq|yXtE#3+jxf+?q|0O-%^op~uRf zx%-1#k_(C0ZX8-y5MZL*)@Z7s8HWiu0SyF;cE1XnV{e#(tLO|TL{diMQBHt78L+mp znwY}^`_W8FE^YuAS(phhNY>-jdvhWDw`b(0LIp{HeGri1l%xP8!tFq0x>XgDlZjYR zPY;Rs)|ulcwlXeOy^^-#AmZ2Uw;BY38k%=hnhIg!t&5SH4xz!{j-2VmQ(Yy{?781m z>w~fI^bZ@vXZG++ZY?F|HvVnL>tlnMe%sK8mnlafxdZrsSyFU&oc$`j{0|mhsPMKNuO2>$H3fU_Y zj9269$VNIEO9s(IFFP_(7YV^InZkE0+x*o6#F?pcZX1P@0FoxDd9}j@N@`a^%9%JU zfb2=PFToR-9`LY(zSsinJi@o-vWZ_L^~o#Q9BrS=0<5-z;I54 z05OFX6;lwnkdB3bxfDgl%fM^ZnL2dsm7ip-Dj~S1Vu}wlUzAznGkhd5x3*ECcD-$W zCVjt8^vx^?LF=;hv;!GXSAD7wL^BECX!sbKl2Jz7zaMGiqWF8)&|J(R!Go9L)Nr1u z3u%Nm*fnE%55!j{*EKd^NQC=x{3Y+qkZo)CRfe-7iB@7Nkr~XYm7J>uJ*$&ADkKQO zQ%l4y`C9f$&xo|h=qxs)65#Y#9lXpB2yPwa{@?Cn-N%MwWB8O`aS9ksrvlp>d2(H6 zs%CWx*y(;!osMo|65fHZzJd&Wgv87%A<{}ckd6tcAg+u=WQAl!Ee2_8Ui<|&w=!Ev zvPW*CU}(~iTQSC9OawHfmJ;0{(L#m;a4;67rgQ{fZtKjfYwT5L8o^{vL@WwVlCh$l zeAel_C}OnF-2KFxGmF8vcWVyM!y8X)=vStfjTmb@;tnLg#+UQ(|+_^rX?agsfbp zsE~z1A2%iq%tA77P{4wwFs$||+{(|gReUc%QReb7M9L5YqF2R z1OSp#COg@Y`N0ntQfq2rVua&69uYXCnbJ$AV}lsPn1n`;xM-d#Qj;>SuD+*;0*5lS?3G^-opn7tOI0FLzXVH& z%CCsFDJJ4a=>CuB{*UOUr-8{m{{YWvDDQ`4rWmBz=}_W{n?b83y){^Klq4*4a}{2d zdMS<5<>_C7bzOUH#Az3o;dvgsCBss0A(IqnNXSp!Ii+BrNdXPXoq;baB>MgYf#9by zt#4wgHBLow+(($7zSJPjDh`CP3FyaFNV_W+On}l1>{|P4?XR}J+WTmF1Jj`Kt^DtE zvB~K`3ocmY<}WCAw!Bklf~w=Ho=?faP5L+3e^QBf1-CD81n!ufZP`Ss zVCZJqQ?#mJ&~F12Xp$@_#cpvQ!KE-SsIsDMt9X39KB~)!6-M1cIhmVKAa{?Q!E?$Nc*pA^ zE2oba%uGqftC@kFI5VfF<~K)^m|T(?&2@#ajiGH3m83cSddZS1=C4 z3(1^d*8MsT3Juw5lU6Z-Y(K4;g2OttCmw^6pSF3(@}oSyMKSO_=lMF(a%)3E|pG*l`yD zqmbGy3ad_nt7cP7r_R6%LnQ~*c*@M)w~X=nv}{!?)hBX#@6(d93KHtd1_Ve z0?`y{G@HWZBFL|8eqWhY+8Ubk!T zgs4p5!1AH@Gm}G9%pLgUe%_3`+TJ3)PThE|_Yp(O&cuj(s!HX95a3w1e3O@?vO^{n zu4>k$VJU&p`OH<3T%gZU!gHlTmJI=DJ%H(XX6xhEfIW1)-NCL9x|R;$3u0f@F37BP zN*dn$Oxt%+IR`uDy@NI3CS`*GV%P9p2GYa8T;`SFyR(eo!hBOU+m#9b0L9p(?nQ8I zjT^@-KE(4gwOXu4QaCg-ot+sIyRfK@&IC}%7m{W$9AG$Pt*yzGhP5+<7oLhXN8Vqt zRy%(;j(2_!!MCIMd$;r6T})-ndvGmtPO*2YRaYWvmN%{tXnGzNXnLTH%Mc_y-+*Oa zUzsb&2p)mSn4GJQ5$h0T_oU`HTK)FaWe3I*s%dApGCE%zgAmzv#F=kLtl7($!nA2kM=PMDSBDBsM-LefY7| zW;hYxl(5aYbBmZzUnyds1d}9d<9jIba&rTCVv0QMPAGjawJ$K$UfXWH`uv4Kaw#__ z#s2_Y%wWY6F52+#j>7^+DInugU@W33XvEGA2c)CYFsO|JAfsLO;icWabf_lUwzv4J z7$tL)4G7Igcfe7N;FUZwFg3B921*J6mmgO^v@z3PrRj+xm`E}b)P$8f(6Ig-zY)z| zWVWi?TyJl+H0+Ak=0}1wG&Obb8Kc{^_`LzN`w`8q>F`TQiLmZeAImuiFB@l=&+BfQ zjSdlS$1A?WB?r8HhrHUL+A3D#5s4@U1BlEtDOFa^K@rl!^U#c`(}I6ad|!1pitBgi zVT09p2i`JDWq&D)M!Es)V;E>=;}l?q5{PcdpuvxBW7kw?L$cFoIVuN311VJ^ANxv^ zjw)B=s>0ZqkHUka4-O>50e2Uw8xbzH@V^cQJ9im~n96&%XBp|*r9I!vVFEO4#-R)V z`1Iyhwe|BSAR1`ucPOCyZos; zh{kdPk(n@DQ`)wNNBW}jX_{~gZ0_QGBJGfKsnPQvdgI@DRd^vNw$l@6lJfE(4h#i8 z%OFQiA?^6MpIBjt)z*k(0lK<=Qo?F_ea6HMZQpAMA=qU+_9GTe7rHiTw_$vQ2?As$ z-YkeP96U0)Zw{W8TWLnR!ns=SBeH^30&!8IqfSJ_!2#rG-(mvlW)wk%^(bP;pE98p z#MLas>}nPc<}+nV{{RHkG?6v?f`Z^2kK{HheuKbz2bGhY3B z97;$`S^0O$)xCVPw-6nbNGLrelkPg$ae@bdiYN{gvA%LnR>r3I@)@{~sWbdKrm zG^dQ0a$%Nh@RoQw7>#8MbAASIDW&A;QNXZO8?}DB(uP|ma}g?{2&RCfKd~W`EaK}B zeGxnu!jP>lZWU4j#qn_;2Hd|gJ39~I;+98D?Lj+m(w&;wGWS3cqi*)ow$>j)AaG7w zg62M1xzyY_&08{6mWqa=yjSBwMpPdz*;>D@xQfVZ;n`}eu(5u|c~{|b!PA`==OjixK2d2Hjufr>N8lch01@&~iv-a+R1jXc5vDHMv4Sz7q#ew9 z+oGQeff4JSJ9QluAa0%QZeN+3frsa7Ui>XF^KNAliZw6!-pAko&W}#w%>%)Nh{AZP ztKAlCRl#+w1x|{L!8)B}$PTqKv432|$BJkEy-m325>eS5JXB03#9r%N(;X18YgtHVDs^->mau{4iX0v0!g6N?29u!$!2y-93 zx(i7vAhTuG9wkNYhx}?A{Q8Z9sC3FfBshYF z;7;HcsTue-ghYxTRRo*EO+|CSfEY<$>JQi?HX$(N;JZa7!YeD&65D213bb)IpVOlK z50<0mNEwvS9gtB#UvRf`6)5Xm`n3#M-#y+<{ATtW@u27uO~ zU)eNTV#xUPa%+|jPz+&~Z4NvET~8@U0q6i7CZ zj^XI2hz4TXN>58#QGLPC%x4sCDw9u4vqT-7s<_W3m0SpO%&M5_eMw-eay}V=6eG-i z>*8Y}bn(A4JZ;1Kq1;(`#(v6O4dc|z6Rg+#Bb@oIyI$g8rehV!h8S*}mY@U_gQ(?i zn>)_()Fhmxkpa)JLUrWXT&_ODdoFt-x+kgNGFE5b(sR5*OuAav$ z{-v$qm6q^D@8X~rDUT@NfcqV45mX2yuEflg6^tTkyJs3dHFU~ggdnTA`8Opga2jBE z!elOtWP@d4lDY|@NK=r8_p?~k9cic6j>&dc4^ z%B!n_N2%3gy^^FF%x67!)gwN9R9Z=*FDC@$?DDhha=TGEQ`=}m^Q$tqHoOOeA%r@Z zL*mp^p)_=Yv{4eM;;kL400X%Mz!9c1Q-mjS3?kc;RBamD-l4k2Y>gSNc@(i~AdTFFda?5=5!39>ma~mYnO>+Z~@}I&G#KK=!BxbH?W5`j_5CkBJhtccT(91^t!y>In zRl|z>UYJ`@#GoJy1?%ZOF8nhpPsKPW zB}Gs#ToDOD8Pm(;C>P@kWx_9^mJNM}Mc@;GLtmdx{{Sqiibze>{Xd(XlBD-2wd1#o z@67TenT{>uA&G-%lcCCt_eb={IH-2Xp{$(`lKk?cme=#)b$n?7EL z%ONVoX@uC_ie)sYz9%YfZ7$G)HW_U9;kb`MhH-jRb9-%8muB5s$ENf@#PPPe@ShxB zf$=2hn&}@&$>7pJkhQ~bNPY||{_k-S!@_j}VR)Q&`58-qiIc;t#DL)1O_Adu1&#?b zxAQJO$Xun4=tguGO?Hy9JrPs5ETIc0F!K`El~C<^L^&#al>xwJM1r(mr}-9QA|&AP ztJPA8gYH@8YA)ZqP9vm!cfif3g)Xj^iKP`kGH5 zWQ=`9$LlgyWt&jic>>>Ys0$?n4WH$>PBFj3F+nsv8yt;vST!nKJL^vW0IyqH*13m4 zLqTm~o>1-4vmko!$`MYxaM5_0(UI_C5mh z;nTq{_5%5TK~!@hoXKyi|HJ@o5C8%K00aUB1qTWd2nPlL4*~%L1Q8Mi023i1F%&XE z22mqIVN!8o6*CZlB$0AMQy`L|FoKh@B{V>DRneldbak_1l+;wgCWF#M)3l=&!o%=n zHRQyEq-9W*;RjYl;_>5PX0`G*MsRlj+5iXv0RRI(0sjE^SN!DiPapAK{{Z_mSqDuC|xH@clif)YD#d&-Axd7EUw>vCEf@ z8Z6yea^}Y$X5ottERn^JR}jQ8_p>#Q>t#p9hbB2u@ng!%+~&=OZ)V_?wG@#^*IJH2 zHog3z2(45uB~x%DeijQ;?LjF$UVy)P?xd{bV>U#)4BpT!X0W%7Sc2Z}R=**tpNuufHu zKLCMm4I-u-zf=SM9>(eG(Oo-|S_cWjA;6GF6(GpoIpdSuE$RMFQ`Gf3vRpYwOt~6U zN(3H~KD34*d9w)N&u0wq%8B9<$0FwXz>$BGdAyv?JxA-% zawyCACidj=f>2H24QkN!^)@bV`)$AaIpt%;{EZJ6_h~lW-A@+(0P;)TKecVYDKxxW z`B{8_@Y8Jc{{Sep0Sv)~zSAE*t~OgD*FQP$wCa^IH1$v5!~H`z2DGAG`3 zhGY9H4bS+vm~I-nlvgUDkBUE3sL~vkv2rOM7<8us&5w(Wp8h%0v`bhtKr_K9HHK>n z8g9m4IOpoz3;zJc?Q>DZnFVQ)WE@n-X#|pE*POwyBJ(}TTglHTu2mJ=K^l%x9A!vr zqF6q>BW$EY?zf{uTGpSgR^tV!bIE%z8ecNvb2_5Ggg}X zxvf?*YD#k*iJ?Sk4jfDaiazTY_n_+q%f!IL6ccaHSp| zV#glt!WeW%mOeiQSY?n`GEjwdBabG;NR5s@eV&!%PLUNqK`q?lEV1+tFG!{&L(hnP z2-)|t<7|CpS6p4tEbi_y!8HsnK?Vr!5Fog_26qp^-8~RwAh^53z%WP%F2UX1?YX>n z-E}{`f8eaM&e`2v-Cet?EpmjS1qoj5GBq_W6TIcRpC}M?=NJONFiYR&Imy5t;F5P% zNQ4t~({}~!Z(_gRg7BJ}ct}j2XY5`%8)krSZ-tW8XD#^SoalV8#!cwpCm?qNa%Zjj zKMfMlBIra_A9$oD2C>Ug>PjEmhJjt;I6hDR*zG^g8AA2j{%ESYbTI*GQ@HRTy1Q2N zThB;2qXp=tpIF6L~u0$RRO1;aZDXb_jCD&UFT8pEk<-FSH3Be zwP|t7xj#LC`qKIXtb7qnUGocE7MTFz?Q0Z_LPY5M({6gK;oEy(D@5gNChqNY+0(+YnBdKJUP`JzQdJ>!*RZmo(cLesP?Qg~aDMa5>} zVsle|w49^)j7;GOj}fv2HrT?YqEJ-#|nKUlvGwg4dOwh zns3--y6M=LZ(@B`H{_I)<<-WewMemzaup+F7@YQbdL`%|QiC12%QHJslvd$bPErxu zK7?h0N?l>!eRkPl6_3OvN=ir3b~dc$iKV`-j9j!-zJpV_SiDwHS8*Eq1zC>ZxKS~T zpwwt+j&iohQUe*aPL0Sz;z(u1^M-DR?*QR06Y~IB(a7VapsNs8pw_~wf5ffu+n2u< zEEj#iw1C+pu`i3e+vI*iVwlwJP6kwJ(?Z7PqB@qRGd&22Epe~3`EtFX!|+B zGcY{Qy(D@%_;){7${c^;@kX1Zos($=A$KbdyCrK*552}f%8U>0s&f}laV4cBjDv+p zNyV(>)ZS*^4{(u$ zSJRv$j*m4$g2a)JIPV2*AcHZkS69Jo9(K;CqP>?k-A+6S_XxWuS#w(5*@y_XTL!_# zrwx2c^;?_WkVWJ(%S+>`teUFa|1}sc1M+98YC85!sO$2v5+CeE?|NDIHUc1wUP@F| zY_aLVXmYNK0Qqq&p{fl@sVITOl3c1-U2%c!OldHKG>@##wyCLJNNTM`R#FSQvu-i* z9Qg2^I2)bEVLq-D2C*Cg6;x$A-6k^Iu}ij^HVPE!Rqk1ZX>F$>?4M;PENav`59pl? zp4=cJ{s-5xPWhg{SC##?+qlHX>v^d+lFpoPZ8u?klY{P-9HjVFUwtoN1vnXou7h6R zrhEOEF(Q&6n#IXj@yg0_5mchaLas+x(6QjX_4IZQlgf3mBu;Uu}N`R*q6o?U8uJzG8igd>N+ZL(9G>`f~|+Fw5RMH`jCZ z?eaF3i%XVtMyh|W@|c4JYALG$?Sfx+pgcH4zUux}?Jg6it7hX7WHJPOe}^b!yC6x| z#&1Ure>T782RyEDH%!hIkO=N6WqkX-nI~Q6%)ts0UH}FhZgxzO_!Nfnj-?a1$|6PP zj^+?e@2weE_p@53u#^C~AlnE&{yVvYu8@XdTC&?+czoSw7-Pps<8M>Bg6M*9Dko;` z02io;VWa06t2RN1e8+T>^mNd*TK=}gzz6`uwYe+Lb!|DwK{XL(k-<#{T?v(Je<4bF zEQ%$@L$Yg;4w2?&J_ePWuNRn`L#Am1vQi-WcV#jDF~AkB1kfbG2!c?-&y5Vu^_Lvt z*quy)bqxa%!k?lDjdPBOW9)G&qQafK>-Bf@-6Mghy)0)p&DaL@%x{w=eKe8(!TF}U zn#`|oW*-H8A%E_TgMosgE>`yp=@(9zLmyf(@tY z1KA-Vi+XfVfK{S6zC#y7*XNYrz&F=N=9kKM!_w;Kk0s9N%(ax)fT>uMFeN{b32U$# z_3IT@P($j61N6DEi7-FhJPP{z$Ci2Csk$! z=SDpY!ZSprKu&A_j_2eG*#Co@VdvC7)!M8T_-W8Gmq8$)SC^b;RWQpH%Vr!aAOvUYwe--+j5|6k-awNKhl?{^wwvl4ITG^w%u0>H0>tY^0JjIF~ z=emJyUZ7Sy<{OaSN$&1CU(vmlU`rw%YpOq#&qT&99N>D?KZYRgU$iz_viy@BXK3Kc zcMPMO;T^tL#a(3$a)?f!(M?d>8X;PWGMDx5l%`T;C@LD&DGKpgTaRL5jl2xQGV!?d zFf%ZNHILR?zrHd28xG{?ZI6IVzS2S|-lAFwu9V~%T!nhLJ8USp+zK;)MSTYyij9jp ztelG{f7*D?Xf*5)_wN|9grgc4+}AATC4o8`#Xu~c-4 z^oUzcCv*!+cH3@;;-5juc8PC0{#`Opyxxfh8n}#l-=GHpd)HaysQO*Eb0a|?`X=V` zNP+%6BKnCW-BGKe8l7WK$@h_!Gm`70Iv`(y_oh4XT>OtX!+&t;!KYfi7Kh6kMm3gT z&eUp(t>yG9B?kKF>u(;h@OS52-Lb{hpnr}aCQyR4f`|_p`BY95 zIMk4}NO2*)C-#T>8vNc`0@7|l*IY$53YnolLKTy|SZf&a$|LgJ$M~@3vee>T4!)X5 zuaP0zuiX?rtedXzR?r1N?~f}B#Rpf`N$im8A(~VZOV&No6UO@#wVl%*iitr%X2$Ko z1ev^EK4b3_H5VzlQL_x)B38a4^CWs-Hd8wp3b~dbTejz&@`hOQrw8HLrf` zQJ9}ACMVvC$!jD`%Cf3c5SLpuVWAw9ns?|WZ-PZmMk(-FJ(L(sGhbQ9D_{uGv09XY zc<2t-Gn}TDM)dcymL2A3R*g7i=AbGr5Us*yW(+!llk4#qiE(NNNUU)Ddk2}Dul+V7 z^NYjKJQ}E=-U~KQ2hR7U~ANQpHf)gmKEnpK$-}!j0PTJEnpiEy+ zB{PJ`&ECI;mUA#o@Fm_E#Z^DRi9CD)Z#gsWqj0?nPc=EAUb4J9A3Qb3N#fjVCUe?? zYMLcfvW!Ou3<&;uimEUZH)EpNcXbK#%-rh^Gvyv;fs;Xlt3r}-lT6tSHA&8ZVrtIR z#p;&N)Hqa(8!k=fuFA1ANag-s4`pui)OTHu#RDn|ZE|Sn)B(U@3rtx(wSv1r;=ccr zN4Ia^nVnJ9&lKYsJ&aQXnd%Od+6BT-hB9|B6F$w&E7#yxk+M>YPa^u?Z^~wYPf7%o zgS-SxhO|R&a8Ir;VQy~RgvRFhj1Mzw$(DKb(l^hBi~2Jo6(h)Jb%|)})09`avLu>e z!moJ88Auzm5E4g)!9T27iEW3}1s;a5Aw2&ojl`DP>pgec=KA~w^qi_LK~!VR%CocI|BY`l4y@`PiKW`W;Q-^ z!CjV7I=Xy2VXUy60V&3L#A}UtT8#TXa2%s1204yEJUW8U@X)<-YnkmJ*WqQF6dOV+ zUxQLC(%+Xtk`McH-Gu7R>|-t??xRE5Y`me4G6;RL(rigJ)iaG!Td?mP0W5`^MYI8e zZWr?&Qyy-(An%=v=+IgY&C$f8PS8~fj#%)1sX{Wd|93htw>^*m*+W*cppqvY>>Z7 z&_71A+JMuK1F9|db+k+b%6LVe1k-e%q!+;4>&V(uTWSCvTEy@N8!~}DR=wg;xzC;V9&wKmrR|= z?`u~324s=`1VrMO+J+_L+R{fM;VzZe{YThN!ByFRaD)bTz??vzqTg*f>Fpx?XgS}6 zO#IB>YTys4dngkXeiuSxttH)!nx5|*3r6K(Hw{}CaV8pf4Z&$*oWoBXipyO-$&6Ex zUlJE;ElCih9Xi?e6AjLiq$)p;Xok+JMY`qXl~(iYNSa^x8W_i2>~*(+AElq#|AV{X zjQe&Z{F3+3NL5hw@N4FXiu^~0_*b>Oox8+cF|KK6ZQV;jMj*ClCEk;*{$M`nGjVSm z-{_}6yGm)BXD35O6X~dh$u~D&<`?k0h?4e81Zz#L{qfVM_ls~n;;Eq}Ji2ujMBK4L zSdR?7=P<^JTcGjITr>GgQ4pO%9rITXL2^(#N=Uz%pS%_d6&x}&hD5l4K;2o zS6O6+2sL;-;%LG<#%>4Wdg4*YO*I~q9EnfZ>5(aJb+lVV*H7K&C7+)bKz)-m!b$5c zfy(tchre4ck?9_y8MN^)^%he{K**C}YsGK=AGLh0>4DVpy*RcZNnRmo)n;RPDW>mG z1@6Kix>=+8)Y)L61bMXkI;NSP1{%xz1LFcp>9gawUZLkrYyTl}lwCh)$V92kT7o<@ zO>>ey1s!gLCvA*R+OAhouj`Xe^Tcnv^gkJ?OLO*1qmIjQ2@*+XNy?UnT$05#Rx_!f z$nAHyDse&~^NhYp7qT6R(+YZvKTX_TS*O49@C2*v`t#1+ zWRBI_YoxJNVr2GI)JAS9{0F!3_>N8gKQ1t5_trZJpPp_SCeWwWSSzu}XTkOacv=J~ zpq_zKWS$XJ==NXfX8P;Tjy)}Qs^2FbM6_>ot-hI6g71v195ybfIe~@@4OVj2Egk_x z|4Ho5U|B2X5*;>O%aHWra4~`se}WHw!eb{69k&CB>RpwjHN{t%*AT5%F8%f6XUu-) zX&^yA#@GqMs)N)n`xxJ-!PUDgHx-9vR-3v`3cRDlUfP2lwl)@=fhfsgwWSFQ_(oMk+S_ z87n#ncQ@Qu=H0Q~n4d2>nR%N0%aR@5+uWetV~@}7RV{3JAW_u+OFJb1@hEzeYxMHa zG_vd&M_3E^FS8wsN6~nWjA!gTRZn}T61=ee)=|KJoCv8lWCmq-7iP;n7O0)TbDJyR zH9=B!OADBCF4e3`?S&&#A^$@8FB39j_ZO=uH3quV_kDGG)UKL6F5{O3Vl+4V@z53c zu0UJ~Wc@rm`?Ib3T?BwH|8iU)ie1UX+61?88ZaLGKMpx)ZO}|`CU$3&y`jaR`$B{b zl~98aJR#Of{a6Co+XTVYC=Rm#1?`@ZH|km}Dx$ zC5j)5R#cu|PMcj;w8vGC(T%7{-LtfxQ|4x{MlBXhEHDM@+tSlETH<~n+BfF|zK7akIV9R}@PwIU-bZ{z-tLbNXK}uRR8a9^S~clq4CMorPzvAL}7Lu zs#Lxj=gx-h{+iW9O?>)I4DcD_o6DtKX+CvhGc3m;X+Bh_@LLf;bzzk!^7wt6jx)DFQ0wa~~88rH|Y8xiO}b$b}Shb2_~g z=2sDcg}sO5p)FQuRZI>H0^kVwKU5#gY?e_3+;zu=cy8{ODkTg^0$3~}dFAz3`cbUe zQlPlFOI-6A!Y4L4kmS5VEWEtZ?YJ=IH8Qvudg2-GbEgfY6fgBqd;|{uF?DHHFbq$! zjKg`kH*gt&T&nS3bYY`j3NyJ6UgkgAbdSPx)3`ubbQDyz>8^B_h#N5chGh=hJl!30 zyR+kWh&_6hPcNqeY*j7Hrpr3UuI#Q!ZA_Q)LbqA}*x&O6JF91WIYbX?VtSO1j;-Z45E z!(H_4D!K|3`}IR7J+J_yOX*OGHfZ29hocxnx4>Gc==!qq$>-v3FW$M;uE|NPy<(8| zH5VCTBC+?_)Xk>3!0EsX#rdVZqBU%|%W_x^saE z%zARNcO>aLnzuljhn&qNowk$_Ks+t}npwtnz zF>RlJaACp+8gaUJ=-XD}U)r<-&4xN1SLWlnRT9h}X&>k#2PfVu!sp?=DBCPjryP`_ zdY%M(0lko3J6V+1U#-SIUkQMhmk6>YPKGB+0@x$4>*YqcJi`0}H(*8e$Vfc_v=}?F zQ#*O1BtbQ?dTphn!0PH7)V%qhfN8=V9g7GNTdb3999B2^&VfZHm%jiF9YRu6NjOJI zCPR+{zR5#M*yUd!Vv9XN3ka}L0;9y|0nnQ-!8I~nq2T7TLntI&ld`Ug^%MXuHju+lsNZXU}dMD1-y77?kPhOjx#Qv3|KBNlYE$D)qIZru9rV?=YV39E&w^P8*==`jB24!< zxbtE^>4}vFwVc_bI?Mm9XF2ZY>i}=~ex?gUD+yyfBAzl;_S2v)N+d4uGQFZ!jbS~h zyk{o+c(KF5?aB^2P`Ajk*hu(59V%)tePe&HH|LaJ)o)n~4-aEFbvq~?4iD+5v-TH2mRa@7{FU8pc6A*+=^%svsZ7>rGoQQ zJ6y_{$CGcXo}SZlNKE>T#L#vr>8Tii|@4sQxbus%9g@ERx=g}#S1mNT9qo+JxY%CUxF;DHk@wJHT-g{q=xJnA`r3ilaOpD-7 zToA~(xo$1-vNKx1e&g%^jIo5J3eIZmL4)1F;H`|Rc;IhaY9FQe+AWF84(sP7 zcm{NVD`^S3agXIbuF?^_(vqKjlk)@C#p3jC4BTG zG;F&QnnKZ?T5qu?!#N|o{QtMk+F-FXK|RV)vUwAZkZjEApa z1Wp2C8s=1_RHnCIMm9+;cp5YH=#!_8JUbaRQBe(3)Rcg6zItk{xFiq##H#;QuH0WI z-kfelUvj-_1ajb_=5APookds&9dqQECEP@3$8H4$h=7>v<|kctdz|II{kRK^7MdKZ z+-S=AX<5ztC3Ti|7C0ZN|67*MJ*+sR2%YtO@Fdwf{Nsisae&sylk zyVTjno=J(Z%c%oZ;}u?+h<`|aKbF7*lXuK(3HpdFWzO-M7abrnDiaqJ`C#9 zhsX7vio%G}>In|v&tDebkMFe7!_lij9BCKtoz!rG@Mq?HzG@K(rIjduD*kd$tu z`Q_^+#?8$FFicg`v7~R{vmpa(K0r(+5_(7^X-S@x0Qc{l6ocy)c6zj>=@9fqLPHW|qfmWh zGc4x->x^g%Ktvs6`1*rx4Wh=LiP>xjvZrGd-9=$+-495oMG1BuNTx6xM zx+cVvrTUeWt@uB<@@FQ=PV0F6R24=icr{?kAQD0qqTpgGeTMRvd?DInz$Z5!C8>r8bFEaLJfHN6%@bD{Q1@@Fw^oz!s)D^}3cra+r zKIfcAr zuVfMF20~SzDUFiCajQsM^D}&4mo+`8(I`N_FIn<_V>aho)m^CWf$AHgw>7<<;S#ukw|KCL33Ymaa`8w#v3c4|(xeVsQfx?W3%l z6};5_AVN_PxGB)>X$IGJXhRE*Nnz)G(<4oyuNS2_*Q$6?nP;23%{HDz+#m1ap89( zgiI7-F4tOW?Ma-~U1Yo@8`;a(aRS!uLg<;|2ZR!_EOh;Ab!;jgjbyt*j3QMkYDw6p zVAdKpO5;ybB$!X-u8*BuTD3N+ehKNk%q~zdpD2n=mIMJ1x$nO0Hyb15F@a+T+QqJd zzlLZ}JoY-HI(@oT^73(!0@OH?*E01pd{1c-`(LDsCnCsWv&qdivqlQmH+SXIdV+A` zZ(dcH#fKtKvPu?WG~t<=e(Q*fI~2@a-mhzK*3t07$@@Z40ITKh}`{S$|9Y%&7O2zF>gCfQKb%`D1}%;I9xwy3DW|p zM2e_BUH0GIJ18PHPT z1Jo0;VpXnAPRQ6dbEG?K&D8x>X=rm}DW;7({tFVV2ks?fiE=C>@ieK+Q zW4)OvCw5ClPV}`&n0AJ?QAp|cxG4gG4QiN=HMv}m19T$cRzV8g)4(c=qdr!-7TYqR zda)AAR9%km9Arhi@sGo>vopbX>XyATVr#ZI;ZK>h9Wo_LI^vl5*SfI+LiIDScAxbO z3p{p`x^!9!MkBJ{oOqNPrZ_yOe7QM`!x|Z*2rns)pvM7$xlJxg zc9t8C^a=x+`F+{ajQu13uZd;rx??+7ltP$RB+H1UG+jR32T=8md&YrAW9i|tdp+ZG zN=OtSswfms&oY(6@GV8z@_YjkkWV?ympw42JJ}TH#LtkDeILo1f^t>FA9L;Q6Szal zH>P!xNWffW&jckAWocGm!ZDvY7(p<0&Lt}`cHzGrI{%cKW70r~+n29CcxiSWoVTVJ z%tHO}TindG>-TReVvktf%{`F}^Y4K`8u6ZTW%uQLjKPilG&<}%QX)I|_DUZScDdf^@qj`i~@&aGPt{bR_BWt|;!VTp@qqWHYhqjl`C zYWHOJhD#(KdaH5#Nsm_-y2L;J+-GR1HizWXy@YvX zeBvgdHx&cVE;}JAUP?GdOOBNa2o_GUgr*fmwLu|?J8MoM zk@DV>A9%XMu_aREK;1=B)mjv+yEL|CNmZ7T5N)&F`kA5xX16E;F%jWQC6Uw_!%Q5S zi|dpovi;Ko90__)~2Fr4dK zAjvnFIyk=sGHl5bxEyGrqoO*JV^$)0(hFAe1A*1wBCZ{n=fzrC@ny)`ey5Ao$UIpVQP6u~Nkm$yG8o9f&A5H@Hebr*dO7Y&{ zZ3)@)&b`fBf`i=zPOb9jn?NB_LU%fc;~7ZdgF-<`6clWd83e?_vwhO7#TF~u4xxSw za{g#}RpkHG{>Ntj(!tVC%t~Z8D!1rl%WZNYUK~yS0yY$pt5QWa)pncKyXW*_NL>}8 zS~cY)ubX9b(&&|kk8dF1bLpSDgVx^*Y{`c_q_f;z41yTQczHhP)+wj}H`7Rh)%B13 zy3LeN9>T^2_;IDoI3%@M0a=Q&v<%4x;@N_BcTOg{)tL z|Kl5jp2!&5mB&MPu8a274~^Cjs!;vkG8&=wvS50wJ9fI{mT&j?)@M{yl#Sx)!ui#1 zJY>IOKKeQEkAz2pGe7~W{E4^FZYLwR6V1yIxPCINy9 zELQ|L7!ndXi1obSyj-g9qb4d5i34Dc#F@lzu_lkK67*%bb<5;ljpvoC)c!X-%&YVX zvZwdHlFtUL?sJ>vUI4Y-^#nn~9m)l^kB!ZW62RUmSBNM24uop&lJ^KS~~@JuI30yASCJ z@a@YnbZn}>WWhK%wO)wRe>!n(vc!&er3ynKS&qy+7cDP5GoH@KoXXj2NX+0blhdDe zrs~SIBv%16^I8>Z)1vp;)^y%#$tV&$i58O)^fT zM_H=&S{KyzgGU2Y=WM<9OONGv80C-*->AH<5anT=%y>I)`@v=}6L4j|x!P>NjC}xu zuTkEeOfJF!zyc#JJ=mQLbC~w|rZ>+pU#`i{tc0

=RXD<5Ci^1KfMU#F}I-9;cx% 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

R?IEKTWK2Z>5!02BG{13O(!>D>< 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 QY5|<%|DOr)|4uCa4~*Q1;{X5v diff --git a/manga-renderer.py b/manga-renderer.py index 860ca62..5dbd36d 100644 --- a/manga-renderer.py +++ b/manga-renderer.py @@ -1,29 +1,13 @@ -""" -manga-renderer.py -───────────────────────────────────────────────────────────────── -Pipeline: - 1. Detect panel boundaries - 2. Assign bubble -> panel - 3. Detect/fallback bubble ellipse - 4. Clean original text region: - - OCR union mask (default) - - Hybrid mask fallback - - Ellipse mode optional - 5. Render translated text with ellipse-aware wrapping -""" - import os -import math import json import re - import cv2 import numpy as np from PIL import Image, ImageDraw, ImageFont # ───────────────────────────────────────────── -# CONSTANTS +# CONFIG # ───────────────────────────────────────────── DEFAULT_FONT_CANDIDATES = [ "fonts/AnimeAce2_reg.ttf", @@ -36,33 +20,27 @@ DEFAULT_STROKE_COLOR = (255, 255, 255) MAX_FONT_SIZE = 20 MIN_FONT_SIZE = 6 -FONT_SIZE_STEP = 1 -TEXT_RATIO = 0.76 -FLOOD_TOLERANCE = 30 -BORDER_SHRINK_PX = 4 -MIN_PANEL_AREA_RATIO = 0.02 -MAX_NUDGE_RATIO = 0.30 +# Guarantee full wipe of yellow squares +YELLOW_BOX_PAD_X = 1 +YELLOW_BOX_PAD_Y = 1 +YELLOW_UNION_PAD_X = 4 +YELLOW_UNION_PAD_Y = 4 -# Cleaning mode: -# "ocr_union" -> precise cleanup from OCR quad boxes (recommended) -# "hybrid" -> rounded-rect + inner ellipse -# "ellipse" -> legacy large ellipse fill -CLEAN_MODE = "ocr_union" +# Optional extra cleanup expansion +ENABLE_EXTRA_CLEAN = True +EXTRA_DILATE_ITERS = 1 +EXTRA_CLOSE_ITERS = 1 -# OCR-union cleaning tuning -OCR_CLEAN_PAD_X = 12 -OCR_CLEAN_PAD_Y = 10 -OCR_CLEAN_MIN_W = 24 -OCR_CLEAN_MIN_H = 24 -OCR_CLEAN_CLOSE_KERNEL = 5 -OCR_CLEAN_DILATE = 1 +# Bubble detection (for optional extra mask / border preservation) +FLOOD_TOL = 30 -# Hybrid cleanup mask tuning -CLEAN_MASK_RECT_SCALE_W = 1.08 -CLEAN_MASK_RECT_SCALE_H = 1.20 -CLEAN_MASK_ELLIPSE_SCALE = 0.84 -CLEAN_MASK_BLUR = 0 +# Border restoration: keep very conservative +ENABLE_EDGE_RESTORE = True +EDGE_RESTORE_DILATE = 1 + +# Text layout inside yellow-union +TEXT_INSET = 0.92 # ───────────────────────────────────────────── @@ -78,10 +56,8 @@ def parse_translations(translations_file): line = line.strip() if not line.startswith("#"): continue + parts = line.split("|") - # Format: - # #ID|ORDER|ORIGINAL|TRANSLATED|FLAGS - # backward-compatible with older variants try: bubble_id = int(parts[0].lstrip("#")) except Exception: @@ -121,6 +97,40 @@ def parse_bubbles(bubbles_file): # ───────────────────────────────────────────── # HELPERS # ───────────────────────────────────────────── +def clamp(v, lo, hi): + return max(lo, min(hi, v)) + + +def xywh_to_xyxy(box): + if not box: + return None + x = int(box.get("x", 0)) + y = int(box.get("y", 0)) + w = int(box.get("w", 0)) + h = int(box.get("h", 0)) + return (x, y, x + w, y + h) + + +def union_xyxy(boxes): + boxes = [b for b in boxes if b is not None] + if not boxes: + return None + x1 = min(b[0] for b in boxes) + y1 = min(b[1] for b in boxes) + x2 = max(b[2] for b in boxes) + y2 = max(b[3] for b in boxes) + if x2 <= x1 or y2 <= y1: + return None + return (x1, y1, x2, y2) + + +def bbox_from_mask(mask): + ys, xs = np.where(mask > 0) + if len(xs) == 0: + return None + return (int(xs.min()), int(ys.min()), int(xs.max()) + 1, int(ys.max()) + 1) + + def normalize_text(s): t = s.upper().strip() t = re.sub(r"[^\w]+", "", t) @@ -129,13 +139,11 @@ def normalize_text(s): def is_sfx_like(text): t = normalize_text(text) - if len(t) <= 8 and re.fullmatch(r"(SHA+|BIP+|BEEP+|HN+|AH+|OH+)", t): - return True - return False + return bool(len(t) <= 8 and re.fullmatch(r"(SHA+|BIP+|BEEP+|HN+|AH+|OH+)", t)) # ───────────────────────────────────────────── -# FONT HELPERS +# FONT # ───────────────────────────────────────────── def load_font_from_candidates(candidates, size): for path in candidates: @@ -148,129 +156,60 @@ def load_font_from_candidates(candidates, size): def measure_text(draw, text, font): - bbox = draw.textbbox((0, 0), text, font=font) - return bbox[2] - bbox[0], bbox[3] - bbox[1] - - -def ellipse_line_max_width(y_offset, a, b): - if b <= 0: - return 0 - t = 1.0 - (y_offset * y_offset) / (b * b) - t = max(0.0, t) - return 2.0 * a * math.sqrt(t) + bb = draw.textbbox((0, 0), text, font=font) + return bb[2] - bb[0], bb[3] - bb[1] def wrap_text(draw, text, font, max_width): words = text.split() lines = [] - current = "" - for word in words: - test = (current + " " + word).strip() - w, _ = measure_text(draw, test, font) - if w <= max_width or not current: - current = test + cur = "" + + for w in words: + test = (cur + " " + w).strip() + tw, _ = measure_text(draw, test, font) + if tw <= max_width or not cur: + cur = test else: - lines.append(current) - current = word - if current: - lines.append(current) + lines.append(cur) + cur = w + if cur: + lines.append(cur) if not lines: return [""], 0, 0 - widths, heights = [], [] - for ln in lines: - w, h = measure_text(draw, ln, font) - widths.append(w) - heights.append(h) - - line_gap = max(heights[0] // 5, 2) if heights else 2 - total_h = sum(heights) + line_gap * (len(lines) - 1) - return lines, total_h, max(widths) if widths else 0 - - -def wrap_text_ellipse_aware(draw, text, font, safe_w, safe_h, tall_bubble=False): - target_w = safe_w * (0.85 if tall_bubble else 1.0) - lines, total_h, _ = wrap_text(draw, text, font, target_w) - if not lines: - return lines, total_h - + widths = [] heights = [] for ln in lines: - _, h = measure_text(draw, ln, font) - heights.append(h) + lw, lh = measure_text(draw, ln, font) + widths.append(lw) + heights.append(lh) - line_gap = max(heights[0] // 5, 2) if heights else 2 - if tall_bubble: - line_gap += 1 - - block_h = sum(heights) + line_gap * (len(lines) - 1) - if block_h > safe_h: - return lines, block_h - - a = target_w / 2.0 - b = safe_h / 2.0 - - words = text.split() - refined = [] - cursor_y = -block_h / 2.0 - current = "" - idx_h = 0 - - for word in words: - h_line = heights[min(idx_h, len(heights) - 1)] if heights else 12 - y_mid = cursor_y + h_line / 2.0 - row_max = ellipse_line_max_width(y_mid, a, b) * 0.95 - row_max = max(20, row_max) - - candidate = (current + " " + word).strip() - w, _ = measure_text(draw, candidate, font) - - if (w <= row_max) or (not current): - current = candidate - else: - refined.append(current) - cursor_y += h_line + line_gap - idx_h += 1 - current = word - - if current: - refined.append(current) - - hs = [] - for ln in refined: - _, h = measure_text(draw, ln, font) - hs.append(h) - - total = sum(hs) + (max(hs[0] // 5, 2) + (1 if tall_bubble else 0)) * (len(refined) - 1) if hs else 0 - return refined, total + gap = max(2, heights[0] // 5) + total_h = sum(heights) + gap * (len(lines) - 1) + return lines, total_h, max(widths) -def best_fit_font(draw, text, font_candidates, safe_w, safe_h, tall_bubble=False): - for size in range(MAX_FONT_SIZE, MIN_FONT_SIZE - 1, -FONT_SIZE_STEP): - font, path_used = load_font_from_candidates(font_candidates, size) - lines, total_h = wrap_text_ellipse_aware(draw, text, font, safe_w, safe_h, tall_bubble=tall_bubble) +def fit_font(draw, text, font_candidates, safe_w, safe_h): + for size in range(MAX_FONT_SIZE, MIN_FONT_SIZE - 1, -1): + font, _ = load_font_from_candidates(font_candidates, size) + lines, total_h, max_w = wrap_text(draw, text, font, safe_w) + if total_h <= safe_h and max_w <= safe_w: + return font, lines, total_h - max_lw = 0 - for ln in lines: - lw, _ = measure_text(draw, ln, font) - max_lw = max(max_lw, lw) - - if total_h <= safe_h and max_lw <= safe_w: - return font, lines, total_h, path_used - - font, path_used = load_font_from_candidates(font_candidates, MIN_FONT_SIZE) - lines, total_h = wrap_text_ellipse_aware(draw, text, font, safe_w, safe_h, tall_bubble=tall_bubble) - return font, lines, total_h, path_used + font, _ = load_font_from_candidates(font_candidates, MIN_FONT_SIZE) + lines, total_h, _ = wrap_text(draw, text, font, safe_w) + return font, lines, total_h def draw_text_with_stroke(draw, pos, text, font, fill, stroke_fill): x, y = pos _, h = measure_text(draw, text, font) - stroke_width = 2 if h <= 11 else 1 + sw = 2 if h <= 11 else 1 - for dx in range(-stroke_width, stroke_width + 1): - for dy in range(-stroke_width, stroke_width + 1): + for dx in range(-sw, sw + 1): + for dy in range(-sw, sw + 1): if dx == 0 and dy == 0: continue draw.text((x + dx, y + dy), text, font=font, fill=stroke_fill) @@ -279,489 +218,229 @@ def draw_text_with_stroke(draw, pos, text, font, fill, stroke_fill): # ───────────────────────────────────────────── -# CLEAN MASK BUILDERS +# MASK BUILDERS # ───────────────────────────────────────────── -def draw_rounded_rect_mask(mask, x1, y1, x2, y2, radius, color=255): - x1, y1, x2, y2 = int(x1), int(y1), int(x2), int(y2) - if x2 <= x1 or y2 <= y1: - return mask - - r = int(max(1, min(radius, (x2 - x1) // 2, (y2 - y1) // 2))) - - cv2.rectangle(mask, (x1 + r, y1), (x2 - r, y2), color, -1) - cv2.rectangle(mask, (x1, y1 + r), (x2, y2 - r), color, -1) - - cv2.circle(mask, (x1 + r, y1 + r), r, color, -1) - cv2.circle(mask, (x2 - r, y1 + r), r, color, -1) - cv2.circle(mask, (x1 + r, y2 - r), r, color, -1) - cv2.circle(mask, (x2 - r, y2 - r), r, color, -1) - return mask - - -def build_hybrid_clean_mask(img_h, img_w, cx, cy, sa_fill, sb_fill, angle, safe_w, safe_h, panel): - px1, py1, px2, py2 = panel +def build_yellow_mask(bubble_data, img_h, img_w): + """ + HARD GUARANTEE: + Returned mask always covers all yellow squares (line_bboxes). + """ mask = np.zeros((img_h, img_w), dtype=np.uint8) - rw = max(8, int(safe_w * CLEAN_MASK_RECT_SCALE_W)) - rh = max(8, int(safe_h * CLEAN_MASK_RECT_SCALE_H)) - x1 = int(cx - rw / 2) - y1 = int(cy - rh / 2) - x2 = int(cx + rw / 2) - y2 = int(cy + rh / 2) - rr = int(min(rw, rh) * 0.22) - - draw_rounded_rect_mask(mask, x1, y1, x2, y2, rr, color=255) - - e_sa = max(3, int(sa_fill * CLEAN_MASK_ELLIPSE_SCALE)) - e_sb = max(3, int(sb_fill * CLEAN_MASK_ELLIPSE_SCALE)) - cv2.ellipse(mask, (int(round(cx)), int(round(cy))), (e_sa, e_sb), angle, 0, 360, 255, -1) - - kernel = np.ones((3, 3), np.uint8) - mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel, iterations=1) - - clip = np.zeros_like(mask) - clip[py1:py2, px1:px2] = 255 - mask = cv2.bitwise_and(mask, clip) - - if CLEAN_MASK_BLUR > 0: - mask = cv2.GaussianBlur(mask, (0, 0), CLEAN_MASK_BLUR) - _, mask = cv2.threshold(mask, 127, 255, cv2.THRESH_BINARY) - - return mask - - -def build_ocr_union_clean_mask(img_h, img_w, bubble_data, panel): - """ - Build precise text cleanup mask from OCR quad bounding boxes. - """ - px1, py1, px2, py2 = panel - quad_boxes = bubble_data.get("quad_bboxes", []) - mask = np.zeros((img_h, img_w), dtype=np.uint8) - - if not quad_boxes: - return mask - - for qb in quad_boxes: - x = int(qb.get("x", 0)) - y = int(qb.get("y", 0)) - w = int(qb.get("w", 0)) - h = int(qb.get("h", 0)) - - if w <= 0 or h <= 0: + # Preferred: exact line boxes + line_boxes = bubble_data.get("line_bboxes", []) + for lb in line_boxes: + b = xywh_to_xyxy(lb) + if not b: continue - - if w < OCR_CLEAN_MIN_W: - extra = (OCR_CLEAN_MIN_W - w) // 2 - x -= extra - w += 2 * extra - - if h < OCR_CLEAN_MIN_H: - extra = (OCR_CLEAN_MIN_H - h) // 2 - y -= extra - h += 2 * extra - - x1 = max(px1, x - OCR_CLEAN_PAD_X) - y1 = max(py1, y - OCR_CLEAN_PAD_Y) - x2 = min(px2, x + w + OCR_CLEAN_PAD_X) - y2 = min(py2, y + h + OCR_CLEAN_PAD_Y) - + x1, y1, x2, y2 = b + x1 -= YELLOW_BOX_PAD_X + y1 -= YELLOW_BOX_PAD_Y + x2 += YELLOW_BOX_PAD_X + y2 += YELLOW_BOX_PAD_Y + x1 = clamp(x1, 0, img_w - 1) + y1 = clamp(y1, 0, img_h - 1) + x2 = clamp(x2, 1, img_w) + y2 = clamp(y2, 1, img_h) if x2 > x1 and y2 > y1: cv2.rectangle(mask, (x1, y1), (x2, y2), 255, -1) - # Merge nearby fragments - ksize = max(3, int(OCR_CLEAN_CLOSE_KERNEL) | 1) # ensure odd and >=3 - k = np.ones((ksize, ksize), np.uint8) - mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, k, iterations=1) + # If no line boxes available, use line_union fallback + if np.count_nonzero(mask) == 0: + ub = xywh_to_xyxy(bubble_data.get("line_union_bbox")) + if ub: + x1, y1, x2, y2 = ub + x1 -= YELLOW_UNION_PAD_X + y1 -= YELLOW_UNION_PAD_Y + x2 += YELLOW_UNION_PAD_X + y2 += YELLOW_UNION_PAD_Y + x1 = clamp(x1, 0, img_w - 1) + y1 = clamp(y1, 0, img_h - 1) + x2 = clamp(x2, 1, img_w) + y2 = clamp(y2, 1, img_h) + if x2 > x1 and y2 > y1: + cv2.rectangle(mask, (x1, y1), (x2, y2), 255, -1) - if OCR_CLEAN_DILATE > 0: - mask = cv2.dilate(mask, np.ones((3, 3), np.uint8), iterations=OCR_CLEAN_DILATE) - - # Clip to panel bounds - clip = np.zeros_like(mask) - clip[py1:py2, px1:px2] = 255 - mask = cv2.bitwise_and(mask, clip) + # Last fallback: text_bbox + if np.count_nonzero(mask) == 0: + tb = xywh_to_xyxy(bubble_data.get("text_bbox")) + if tb: + x1, y1, x2, y2 = tb + x1 -= YELLOW_UNION_PAD_X + y1 -= YELLOW_UNION_PAD_Y + x2 += YELLOW_UNION_PAD_X + y2 += YELLOW_UNION_PAD_Y + x1 = clamp(x1, 0, img_w - 1) + y1 = clamp(y1, 0, img_h - 1) + x2 = clamp(x2, 1, img_w) + y2 = clamp(y2, 1, img_h) + if x2 > x1 and y2 > y1: + cv2.rectangle(mask, (x1, y1), (x2, y2), 255, -1) return mask -# ───────────────────────────────────────────── -# PANEL DETECTION -# ───────────────────────────────────────────── -def merge_nested_panels(panels): - if len(panels) <= 1: - return panels +def bubble_interior_mask(img_bgr, bubble_data): + """ + Optional helper to expand clean region safely; never used to shrink yellow coverage. + """ + h, w = img_bgr.shape[:2] - panels_sorted = sorted(panels, key=lambda p: (p[2] - p[0]) * (p[3] - p[1]), reverse=True) - keep = [] - - for panel in panels_sorted: - px1, py1, px2, py2 = panel - p_area = (px2 - px1) * (py2 - py1) - dominated = False - - for kept in keep: - kx1, ky1, kx2, ky2 = kept - ix1 = max(px1, kx1) - iy1 = max(py1, ky1) - ix2 = min(px2, kx2) - iy2 = min(py2, ky2) - if ix2 > ix1 and iy2 > iy1: - inter = (ix2 - ix1) * (iy2 - iy1) - if inter / max(1, p_area) > 0.80: - dominated = True - break - - if not dominated: - keep.append(panel) - - return keep - - -def split_panels_on_internal_borders(panels, v_lines, img_w, img_h): - result = [] - for (px1, py1, px2, py2) in panels: - pw = px2 - px1 - if pw < img_w * 0.30: - result.append((px1, py1, px2, py2)) - continue - - margin = int(pw * 0.20) - search_x1 = px1 + margin - search_x2 = px2 - margin - if search_x2 <= search_x1: - result.append((px1, py1, px2, py2)) - continue - - panel_vlines = v_lines[py1:py2, search_x1:search_x2] - col_sums = panel_vlines.sum(axis=0) - - panel_h = py2 - py1 - threshold = panel_h * 255 * 0.40 - split_cols = np.where(col_sums > threshold)[0] - - if len(split_cols) == 0: - result.append((px1, py1, px2, py2)) - continue - - split_x = int(np.median(split_cols)) + search_x1 - left_w = split_x - px1 - right_w = px2 - split_x - - if left_w > img_w * 0.10 and right_w > img_w * 0.10: - result.append((px1, py1, split_x, py2)) - result.append((split_x, py1, px2, py2)) - else: - result.append((px1, py1, px2, py2)) - - return result - - -def detect_panels(img_bgr): - img_h, img_w = img_bgr.shape[:2] - total_area = img_h * img_w - min_area = total_area * MIN_PANEL_AREA_RATIO - - gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY) - _, dark_mask = cv2.threshold(gray, 80, 255, cv2.THRESH_BINARY_INV) - - h_len = max(40, img_w // 25) - h_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (h_len, 1)) - h_lines = cv2.morphologyEx(dark_mask, cv2.MORPH_OPEN, h_kernel) - - v_len = max(40, img_h // 25) - v_kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (1, v_len)) - v_lines = cv2.morphologyEx(dark_mask, cv2.MORPH_OPEN, v_kernel) - - borders = cv2.bitwise_or(h_lines, v_lines) - borders = cv2.dilate(borders, np.ones((5, 5), np.uint8), iterations=2) - - panel_interior = cv2.bitwise_not(borders) - num_labels, labels, stats, centroids = cv2.connectedComponentsWithStats(panel_interior, connectivity=8) - - panels = [] - for label_id in range(1, num_labels): - area = stats[label_id, cv2.CC_STAT_AREA] - if area < min_area: - continue - - x = stats[label_id, cv2.CC_STAT_LEFT] - y = stats[label_id, cv2.CC_STAT_TOP] - w = stats[label_id, cv2.CC_STAT_WIDTH] - h = stats[label_id, cv2.CC_STAT_HEIGHT] - x2 = x + w - y2 = y + h - - if w * h > total_area * 0.90: - continue - - aspect = max(w, h) / max(min(w, h), 1) - if aspect > 15: - continue - - if w < img_w * 0.05 or h < img_h * 0.05: - continue - - panels.append((x, y, x2, y2)) - - panels = merge_nested_panels(panels) - panels = split_panels_on_internal_borders(panels, v_lines, img_w, img_h) - panels.sort(key=lambda p: (p[1] // 100, p[0])) - - if not panels: - panels = [(0, 0, img_w, img_h)] - - return panels - - -# ───────────────────────────────────────────── -# BUBBLE GEOMETRY -# ───────────────────────────────────────────── -def assign_panel(bubble_data, panels, img_w, img_h): - bx, bw = bubble_data["x"], bubble_data["w"] - by, bh = bubble_data["y"], bubble_data["h"] - bcx, bcy = bx + bw / 2.0, by + bh / 2.0 - - best_panel, best_overlap = None, 0 - for (px1, py1, px2, py2) in panels: - ix1 = max(bx, px1) - iy1 = max(by, py1) - ix2 = min(bx + bw, px2) - iy2 = min(by + bh, py2) - if ix2 > ix1 and iy2 > iy1: - overlap = (ix2 - ix1) * (iy2 - iy1) - if overlap > best_overlap: - best_overlap = overlap - best_panel = (px1, py1, px2, py2) - - if best_panel is None: - for (px1, py1, px2, py2) in panels: - if px1 <= bcx <= px2 and py1 <= bcy <= py2: - return (px1, py1, px2, py2) - return (0, 0, img_w, img_h) - - return best_panel - - -def detect_bubble_ellipse(img_bgr, bubble_data, panel): - x, w = bubble_data["x"], bubble_data["w"] - y, h = bubble_data["y"], bubble_data["h"] - - img_h, img_w = img_bgr.shape[:2] + panel = xywh_to_xyxy(bubble_data.get("panel_bbox")) + if panel is None: + panel = (0, 0, w, h) px1, py1, px2, py2 = panel - seed_x = max(1, min(img_w - 2, int(x + w / 2.0))) - seed_y = max(1, min(img_h - 2, int(y + h / 2.0))) + seed = bubble_data.get("seed_point", {}) + sx = int(seed.get("x", bubble_data.get("x", 0) + bubble_data.get("w", 1) // 2)) + sy = int(seed.get("y", bubble_data.get("y", 0) + bubble_data.get("h", 1) // 2)) + sx = clamp(sx, 1, w - 2) + sy = clamp(sy, 1, h - 2) gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY) _, binary = cv2.threshold(gray, 200, 255, cv2.THRESH_BINARY) - panel_mask = np.zeros_like(binary) - panel_mask[py1:py2, px1:px2] = binary[py1:py2, px1:px2] + panel_bin = np.zeros_like(binary) + panel_bin[py1:py2, px1:px2] = binary[py1:py2, px1:px2] - if gray[seed_y, seed_x] < 150: + # if seed on dark pixel, search nearby white + if gray[sy, sx] < 150: found = False - for r in range(1, max(2, min(w, h) // 3)): + search_r = max(2, min(bubble_data.get("w", 20), bubble_data.get("h", 20)) // 3) + for r in range(1, search_r + 1): for dy in range(-r, r + 1): for dx in range(-r, r + 1): - nx, ny = seed_x + dx, seed_y + dy + nx, ny = sx + dx, sy + dy if px1 <= nx < px2 and py1 <= ny < py2 and gray[ny, nx] >= 200: - seed_x, seed_y = nx, ny + sx, sy = nx, ny found = True break if found: break if found: break - if not found: - return None - flood_mask = np.zeros((img_h + 2, img_w + 2), dtype=np.uint8) - flood_fill_img = panel_mask.copy() + if not found: + m = np.zeros((h, w), dtype=np.uint8) + bx = bubble_data.get("x", 0) + by = bubble_data.get("y", 0) + bw = bubble_data.get("w", 20) + bh = bubble_data.get("h", 20) + cv2.ellipse(m, (bx + bw // 2, by + bh // 2), (max(4, bw // 2), max(4, bh // 2)), 0, 0, 360, 255, -1) + return m + + ff_mask = np.zeros((h + 2, w + 2), dtype=np.uint8) + flood = panel_bin.copy() cv2.floodFill( - flood_fill_img, - flood_mask, - (seed_x, seed_y), - 255, - loDiff=FLOOD_TOLERANCE, - upDiff=FLOOD_TOLERANCE, + flood, ff_mask, (sx, sy), 255, + loDiff=FLOOD_TOL, upDiff=FLOOD_TOL, flags=cv2.FLOODFILL_FIXED_RANGE ) - filled_region = flood_mask[1:-1, 1:-1] * 255 - filled_region = cv2.morphologyEx(filled_region, cv2.MORPH_CLOSE, np.ones((3, 3), np.uint8), iterations=1) - - contours, _ = cv2.findContours(filled_region, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) - if not contours: - return None - - bubble_contour = max(contours, key=cv2.contourArea) - if len(bubble_contour) < 5: - return None - if cv2.contourArea(bubble_contour) < 100: - return None - - (ecx, ecy), (ew, eh), angle = cv2.fitEllipse(bubble_contour) - return float(ecx), float(ecy), float(ew / 2), float(eh / 2), float(angle) + m = (ff_mask[1:-1, 1:-1] * 255).astype(np.uint8) + m = cv2.morphologyEx(m, cv2.MORPH_CLOSE, np.ones((3, 3), np.uint8), iterations=1) + return m -def clip_ellipse_to_panel(cx, cy, sa, sb, angle, panel, shrink=BORDER_SHRINK_PX): - px1, py1, px2, py2 = panel - inner_x1, inner_y1 = px1 + shrink, py1 + shrink - inner_x2, inner_y2 = px2 - shrink, py2 - shrink +def build_clean_mask(img_bgr, bubble_data): + """ + FINAL RULE: + clean_mask MUST cover yellow_mask completely. + """ + h, w = img_bgr.shape[:2] + yellow = build_yellow_mask(bubble_data, h, w) - sa_s = max(sa - shrink, 1.0) - sb_s = max(sb - shrink, 1.0) + # start with guaranteed yellow + clean = yellow.copy() - for _ in range(3): - rad = math.radians(angle) - hw = math.sqrt((sa_s * math.cos(rad))**2 + (sb_s * math.sin(rad))**2) - hh = math.sqrt((sa_s * math.sin(rad))**2 + (sb_s * math.cos(rad))**2) + if ENABLE_EXTRA_CLEAN: + bubble_m = bubble_interior_mask(img_bgr, bubble_data) + extra = cv2.dilate(yellow, np.ones((3, 3), np.uint8), iterations=EXTRA_DILATE_ITERS) + extra = cv2.morphologyEx(extra, cv2.MORPH_CLOSE, np.ones((3, 3), np.uint8), iterations=EXTRA_CLOSE_ITERS) + extra = cv2.bitwise_and(extra, bubble_m) - ovf_l = max(0, inner_x1 - (cx - hw)) - ovf_r = max(0, (cx + hw) - inner_x2) - ovf_t = max(0, inner_y1 - (cy - hh)) - ovf_b = max(0, (cy + hh) - inner_y2) + # IMPORTANT: union with yellow (never subtract yellow) + clean = cv2.bitwise_or(yellow, extra) - if max(ovf_l, ovf_r, ovf_t, ovf_b) == 0: - break + # final guarantee (defensive) + clean = cv2.bitwise_or(clean, yellow) - max_nx = sa_s * MAX_NUDGE_RATIO - max_ny = sb_s * MAX_NUDGE_RATIO - cx += min(ovf_l, max_nx) - min(ovf_r, max_nx) - cy += min(ovf_t, max_ny) - min(ovf_b, max_ny) - - rad = math.radians(angle) - hw = math.sqrt((sa_s * math.cos(rad))**2 + (sb_s * math.sin(rad))**2) - hh = math.sqrt((sa_s * math.sin(rad))**2 + (sb_s * math.cos(rad))**2) - - ovf_l = max(0, inner_x1 - (cx - hw)) - ovf_r = max(0, (cx + hw) - inner_x2) - ovf_t = max(0, inner_y1 - (cy - hh)) - ovf_b = max(0, (cy + hh) - inner_y2) - max_ovf = max(ovf_l, ovf_r, ovf_t, ovf_b) - - if max_ovf > 0: - sa_s = max(sa_s - max_ovf, 1.0) - sb_s = max(sb_s - max_ovf, 1.0) - - return cx, cy, sa_s, sb_s - - -def get_render_ellipse(img_bgr, bubble_data, panel): - x, w = bubble_data["x"], bubble_data["w"] - y, h = bubble_data["y"], bubble_data["h"] - - detected = detect_bubble_ellipse(img_bgr, bubble_data, panel) - if detected is not None: - ecx, ecy, sa, sb, angle = detected - ecx, ecy, sa_fill, sb_fill = clip_ellipse_to_panel(ecx, ecy, sa, sb, angle, panel) - safe_w = sa_fill * math.sqrt(2) * TEXT_RATIO - safe_h = sb_fill * math.sqrt(2) * TEXT_RATIO - return (ecx, ecy, sa_fill, sb_fill, angle, safe_w, safe_h, "detected") - else: - cx, cy = x + w / 2.0, y + h / 2.0 - sa, sb = w / 2.0, h / 2.0 - cx, cy, sa_fill, sb_fill = clip_ellipse_to_panel(cx, cy, sa, sb, 0.0, panel) - safe_w = sa_fill * math.sqrt(2) * TEXT_RATIO - safe_h = sb_fill * math.sqrt(2) * TEXT_RATIO - return (cx, cy, sa_fill, sb_fill, 0.0, safe_w, safe_h, "fallback") + return clean, yellow # ───────────────────────────────────────────── -# DRAW ONE BUBBLE +# DRAW BUBBLE # ───────────────────────────────────────────── def draw_bubble( pil_img, - img_bgr, + img_bgr_ref, bubble_data, original_text, translated_text, - flags, font_candidates, font_color, - stroke_color, - panel + stroke_color ): - # skip unchanged SFX if original_text and translated_text: if normalize_text(original_text) == normalize_text(translated_text) and is_sfx_like(original_text): - return "skip_sfx", "NO_FONT" + return "skip_sfx" - (cx, cy, sa_fill, sb_fill, angle, safe_w, safe_h, method) = get_render_ellipse(img_bgr, bubble_data, panel) + rgb = np.array(pil_img) + h, w = rgb.shape[:2] - cx_i, cy_i = int(round(cx)), int(round(cy)) - img_h, img_w = img_bgr.shape[:2] + clean_mask, yellow_mask = build_clean_mask(img_bgr_ref, bubble_data) + if np.count_nonzero(clean_mask) == 0: + return "skip_no_area" - # choose cleaning mask - if CLEAN_MODE == "ocr_union": - mask = build_ocr_union_clean_mask(img_h, img_w, bubble_data, panel) - # robust fallback - if mask is None or int(mask.sum()) == 0: - mask = build_hybrid_clean_mask( - img_h=img_h, img_w=img_w, - cx=cx, cy=cy, - sa_fill=sa_fill, sb_fill=sb_fill, angle=angle, - safe_w=safe_w, safe_h=safe_h, - panel=panel - ) - elif CLEAN_MODE == "hybrid": - mask = build_hybrid_clean_mask( - img_h=img_h, img_w=img_w, - cx=cx, cy=cy, - sa_fill=sa_fill, sb_fill=sb_fill, angle=angle, - safe_w=safe_w, safe_h=safe_h, - panel=panel - ) - else: # ellipse - mask = np.zeros((img_h, img_w), dtype=np.uint8) - cv2.ellipse(mask, (cx_i, cy_i), (int(math.ceil(sa_fill)), int(math.ceil(sb_fill))), angle, 0, 360, 255, -1) + # 1) FORCE white fill on clean mask (includes full yellow by guarantee) + rgb[clean_mask == 255] = [255, 255, 255] - # paint white over mask - img_np = np.array(pil_img) - img_np[mask == 255] = [255, 255, 255] - pil_img.paste(Image.fromarray(img_np)) + # 2) Optional edge restore, but NEVER overwrite yellow coverage + if ENABLE_EDGE_RESTORE: + bubble_m = bubble_interior_mask(img_bgr_ref, bubble_data) + edge = cv2.morphologyEx(bubble_m, cv2.MORPH_GRADIENT, np.ones((3, 3), np.uint8)) + edge = cv2.dilate(edge, np.ones((3, 3), np.uint8), iterations=EDGE_RESTORE_DILATE) + + # Don't restore where yellow exists (hard guarantee) + edge[yellow_mask == 255] = 0 + + orig_rgb = cv2.cvtColor(img_bgr_ref, cv2.COLOR_BGR2RGB) + rgb[edge == 255] = orig_rgb[edge == 255] + + pil_img.paste(Image.fromarray(rgb)) if not translated_text: - return method, "NO_FONT" + return "clean_only" + + # text region based on yellow area (exact requirement) + text_bbox = bbox_from_mask(yellow_mask) + if text_bbox is None: + text_bbox = bbox_from_mask(clean_mask) + if text_bbox is None: + return "skip_no_area" + + x1, y1, x2, y2 = text_bbox draw = ImageDraw.Draw(pil_img) + text_cx = int((x1 + x2) / 2) + text_cy = int((y1 + y2) / 2) + safe_w = max(16, int((x2 - x1) * TEXT_INSET)) + safe_h = max(16, int((y2 - y1) * TEXT_INSET)) - # Center text in the cleaned region bbox (red-box style target) - ys, xs = np.where(mask > 0) - if len(xs) > 0 and len(ys) > 0: - mx1, my1, mx2, my2 = xs.min(), ys.min(), xs.max(), ys.max() - text_cx = int((mx1 + mx2) / 2) - text_cy = int((my1 + my2) / 2) - sw = max(20, int((mx2 - mx1) * 0.92)) - sh = max(20, int((my2 - my1) * 0.92)) - else: - text_cx, text_cy = cx_i, cy_i - sw, sh = max(int(safe_w), 1), max(int(safe_h), 1) - - bw = max(1, bubble_data.get("w", 1)) - bh = max(1, bubble_data.get("h", 1)) - tall_bubble = (bh / bw) > 1.25 - - font, lines, total_h, font_used = best_fit_font( - draw, translated_text, font_candidates, sw, sh, tall_bubble=tall_bubble - ) - - if not lines: - return method, font_used - - y_cursor = int(round(text_cy - total_h / 2.0 - 0.02 * sh)) + font, lines, total_h = fit_font(draw, translated_text, font_candidates, safe_w, safe_h) + y_cursor = int(round(text_cy - total_h / 2.0)) for line in lines: lw, lh = measure_text(draw, line, font) x = text_cx - lw // 2 draw_text_with_stroke(draw, (x, y_cursor), line, font, fill=font_color, stroke_fill=stroke_color) - y_cursor += lh + max(lh // 5, 2) + (1 if tall_bubble else 0) + y_cursor += lh + max(lh // 5, 2) - return method, font_used + return "rendered" # ───────────────────────────────────────────── -# MAIN RENDER FUNCTION +# MAIN # ───────────────────────────────────────────── def render_translations( input_image, @@ -770,21 +449,18 @@ def render_translations( bubbles_file, font_candidates=DEFAULT_FONT_CANDIDATES, font_color=DEFAULT_FONT_COLOR, - stroke_color=DEFAULT_STROKE_COLOR, + stroke_color=DEFAULT_STROKE_COLOR ): img_bgr = cv2.imread(input_image) if img_bgr is None: raise FileNotFoundError(f"Cannot load image: {input_image}") - img_h, img_w = img_bgr.shape[:2] img_pil = Image.fromarray(cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)) translations, originals, flags_map = parse_translations(translations_file) bubbles = parse_bubbles(bubbles_file) - panels = detect_panels(img_bgr) - rendered = 0 - skipped = 0 + rendered, skipped = 0, 0 def sort_key(item): bid, _ = item @@ -797,47 +473,39 @@ def render_translations( continue bubble_data = bubbles[bubble_id] - panel = assign_panel(bubble_data, panels, img_w, img_h) - original_text = originals.get(bubble_id, "") - flags = flags_map.get(bubble_id, "-") - method, font_used = draw_bubble( + status = draw_bubble( pil_img=img_pil, - img_bgr=img_bgr, + img_bgr_ref=img_bgr, bubble_data=bubble_data, original_text=original_text, translated_text=translated_text, - flags=flags, font_candidates=font_candidates, font_color=font_color, - stroke_color=stroke_color, - panel=panel + stroke_color=stroke_color ) - if method == "skip_sfx": + if status.startswith("skip"): skipped += 1 else: rendered += 1 - result_cv = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR) - cv2.imwrite(output_image, result_cv) + out_bgr = cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR) + cv2.imwrite(output_image, out_bgr) print(f"✅ Done — {rendered} rendered, {skipped} skipped.") print(f"📄 Output → {output_image}") - print(f"🧼 Clean mode: {CLEAN_MODE}") + print("Guarantee: full yellow-square area is always white-cleaned before drawing text.") -# ───────────────────────────────────────────── -# ENTRY POINT -# ───────────────────────────────────────────── if __name__ == "__main__": render_translations( - input_image="001-page.png", + input_image="002-page.png", output_image="page_translated.png", translations_file="output.txt", bubbles_file="bubbles.json", font_candidates=DEFAULT_FONT_CANDIDATES, font_color=DEFAULT_FONT_COLOR, - stroke_color=DEFAULT_STROKE_COLOR, + stroke_color=DEFAULT_STROKE_COLOR ) diff --git a/manga-translator.py b/manga-translator.py index 8869f2b..8ce9f3b 100644 --- a/manga-translator.py +++ b/manga-translator.py @@ -1,7 +1,6 @@ import re import os import json -import difflib import cv2 import numpy as np import easyocr @@ -9,181 +8,40 @@ from deep_translator import GoogleTranslator # ───────────────────────────────────────────── -# LANGUAGE CODE REFERENCE -# ───────────────────────────────────────────── -SUPPORTED_LANGUAGES = { - "Vietnamese" : "vi", - "Japanese" : "ja", - "English" : "en", - "Spanish" : "es", - "Korean" : "ko", - "Chinese (Simplified)" : "ch_sim", - "Chinese (Traditional)": "ch_tra", - "French" : "fr", - "German" : "de", - "Italian" : "it", - "Portuguese" : "pt", - "Arabic" : "ar", - "Russian" : "ru", - "Thai" : "th", - "Catalan" : "ca", -} - -# ───────────────────────────────────────────── -# DOMAIN GLOSSARY +# CONFIG # ───────────────────────────────────────────── GLOSSARY = { "ANYA": "ANYA", - "STELLA STAR": "STELLA STAR", - "MR. HENDERSON": "MR. HENDERSON", "STARLIGHT ANYA": "STARLIGHT ANYA", + "MR. HENDERSON": "MR. HENDERSON", + "HENDERSON": "HENDERSON", + "STELLA STAR": "STELLA STAR", } -# Phrase-level fallback (source IT -> target CA) -PHRASE_MAP_IT_CA = { - "LA BAMBINA È ILLESA!": "LA NENA ESTÀ IL·LESA!", - "L'UOMO E LA DONNA SONO MORTI!": "L'HOME I LA DONA SÓN MORTS!", - "IL BAMBINO È FERITO GRAVEMENTE, MA È ANCORA VIVO!!": "EL NEN ESTÀ GREUMENT FERIT, PERÒ ENCARA ÉS VIU!!", - "UN CASO URGENTE...?": "UN CAS URGENT...?", - "UN CASO URGENTE,?": "UN CAS URGENT?", -} - -ITALIAN_OCR_FIXES = [ - (r"\bL'LOMO\b", "L'UOMO"), - (r"\bLOMO\b", "UOMO"), - (r"\bMORT I\b", "MORTI"), - (r"\bI[L1]LESA\b", "ILLESA"), - (r"\bBAM8INA\b", "BAMBINA"), - (r"\bBAM8INO\b", "BAMBINO"), - (r",\?", "?"), - (r"\?{2,}", "?"), - (r"\!{3,}", "!!"), -] - - -# ───────────────────────────────────────────── -# SOUND EFFECT FILTER -# ───────────────────────────────────────────── SOUND_EFFECT_PATTERNS = [ - r"^b+i+p+$", r"^sha+$", r"^ha+$", r"^ah+$", - r"^oh+$", r"^ugh+$", r"^gr+$", r"^bam+$", - r"^pow+$", r"^crash+$", r"^boom+$", r"^bang+$", - r"^crack+$", r"^whoosh+$", r"^thud+$", r"^snap+$", - r"^zip+$", r"^swoosh+$", r"^chirp+$", r"^tweet+$", + r"^b+i+p+$", r"^sha+$", r"^ha+$", r"^ah+$", r"^oh+$", + r"^ugh+$", r"^bam+$", r"^pow+$", r"^boom+$", r"^bang+$", + r"^crash+$", r"^thud+$", r"^zip+$", r"^swoosh+$", r"^chirp+$" ] -def is_sound_effect(text): - cleaned = re.sub(r"[^a-z]", "", text.strip().lower()) - return any(re.fullmatch(p, cleaned, re.IGNORECASE) for p in SOUND_EFFECT_PATTERNS) - - -# ───────────────────────────────────────────── -# TITLE / LOGO / AUTHOR FILTER -# ───────────────────────────────────────────── TITLE_PATTERNS = [ r"^(mission|chapter|episode|vol\.?|volume)\s*\d+$", r"^(spy|family|spy.family)$", r"^by\s+.+$", - r"^[a-z]{1,4}\s+[a-z]+\s+[a-z]+$", ] -def is_title_text(text): - cleaned = text.strip().lower() - return any(re.fullmatch(p, cleaned, re.IGNORECASE) for p in TITLE_PATTERNS) - - -# ───────────────────────────────────────────── -# GARBAGE TOKEN FILTER -# ───────────────────────────────────────────── -GARBAGE_PATTERNS = [ - r"^[^a-zA-Z]*$", - r"^.{1,2}$", - r".*\d+.*", - r"^[A-Z]{1,4}$", +NOISE_PATTERNS = [ + r"^[^a-zA-Z0-9\?!.]+$", + r"^BOX[0-9A-Z]*$", ] -def is_garbage(text): - t = text.strip() - return any(re.fullmatch(p, t) for p in GARBAGE_PATTERNS) +TOP_BAND_RATIO = 0.08 # ───────────────────────────────────────────── -# TOKEN CLASSIFIER +# TEXT HELPERS # ───────────────────────────────────────────── -def classify_token(text, confidence, confidence_threshold, min_text_length, filter_sound_effects): - cleaned = text.strip() - - if confidence < confidence_threshold: - return "noise" - if len(cleaned) < min_text_length: - return "noise" - if re.fullmatch(r"\d+", cleaned): - return "noise" - if len(cleaned) == 1 and not cleaned.isalpha(): - return "noise" - if filter_sound_effects and is_sound_effect(cleaned): - return "noise" - if is_title_text(cleaned): - return "noise" - if is_garbage(cleaned): - return "noise" - if not any(ch.isalpha() for ch in cleaned): - return "punct" - return "alpha" - -def should_keep_token(text, confidence, confidence_threshold, min_text_length, filter_sound_effects): - cat = classify_token(text, confidence, confidence_threshold, min_text_length, filter_sound_effects) - return cat != "noise", cat - - -# ───────────────────────────────────────────── -# QUAD / BBOX HELPERS -# ───────────────────────────────────────────── -def quad_bbox(quad): - xs = [pt[0] for pt in quad] - ys = [pt[1] for pt in quad] - return min(xs), min(ys), max(xs), max(ys) - -def quad_center(quad): - x1, y1, x2, y2 = quad_bbox(quad) - return (x1 + x2) / 2.0, (y1 + y2) / 2.0 - -def quad_h(quad): - x1, y1, x2, y2 = quad_bbox(quad) - return max(1.0, y2 - y1) - -def bbox_center(b): - x1, y1, x2, y2 = b - return (x1 + x2) / 2.0, (y1 + y2) / 2.0 - -def bbox_h(b): - return max(1.0, b[3] - b[1]) - -def distance_pt(a, b): - return ((a[0]-b[0])**2 + (a[1]-b[1])**2) ** 0.5 - -def quads_bbox(quads, image_shape, padding_px=10): - img_h, img_w = image_shape[:2] - all_x = [pt[0] for quad in quads for pt in quad] - all_y = [pt[1] for quad in quads for pt in quad] - x1 = max(0, min(all_x) - padding_px) - y1 = max(0, min(all_y) - padding_px) - x2 = min(img_w, max(all_x) + padding_px) - y2 = min(img_h, max(all_y) + padding_px) - return x1, y1, x2, y2 - -def bboxes_overlap_or_touch(a, b, gap_px=0): - ax1, ay1, ax2, ay2 = a - bx1, by1, bx2, by2 = b - gap_x = max(0, max(ax1, bx1) - min(ax2, bx2)) - gap_y = max(0, max(ay1, by1) - min(ay2, by2)) - return gap_x <= gap_px and gap_y <= gap_px - - -# ───────────────────────────────────────────── -# TEXT NORMALIZATION -# ───────────────────────────────────────────── -def normalize_ocr_text(text): +def normalize_text(text): t = text.strip().upper() t = t.replace("“", "\"").replace("”", "\"") t = t.replace("’", "'").replace("‘", "'") @@ -196,690 +54,658 @@ def normalize_ocr_text(text): t = re.sub(r",\?", "?", t) return t.strip() -def italian_post_ocr_cleanup(text): - t = normalize_ocr_text(text) - for pat, rep in ITALIAN_OCR_FIXES: - t = re.sub(pat, rep, t, flags=re.IGNORECASE) - t = re.sub(r"\s{2,}", " ", t).strip().upper() +def apply_glossary(text): + out = text + for k in sorted(GLOSSARY.keys(), key=len, reverse=True): + out = re.sub(rf"\b{re.escape(k)}\b", GLOSSARY[k], out, flags=re.IGNORECASE) + return out + +def postprocess_translation_general(text): + t = normalize_text(text) + t = re.sub(r"\s{2,}", " ", t).strip() + t = re.sub(r"([!?]){3,}", r"\1\1", t) + t = re.sub(r"\.{4,}", "...", t) return t -def fix_hyphens(lines): - if not lines: - return "" - merged = lines[0] - for line in lines[1:]: - line = line.strip() - if merged.endswith("-"): - merged = merged[:-1] + line - else: - merged = merged + " " + line - merged = re.sub(r" {2,}", " ", merged).strip() - return normalize_ocr_text(merged) -def apply_glossary(text, glossary): - out = text - keys = sorted(glossary.keys(), key=len, reverse=True) - for k in keys: - v = glossary[k] - out = re.sub(rf"\b{re.escape(k)}\b", v, out, flags=re.IGNORECASE) - return out +# ───────────────────────────────────────────── +# FILTERS +# ───────────────────────────────────────────── +def is_sound_effect(text): + cleaned = re.sub(r"[^a-z]", "", text.strip().lower()) + return any(re.fullmatch(p, cleaned, re.IGNORECASE) for p in SOUND_EFFECT_PATTERNS) + +def is_title_text(text): + t = text.strip().lower() + return any(re.fullmatch(p, t, re.IGNORECASE) for p in TITLE_PATTERNS) + +def is_noise_text(text): + t = text.strip() + return any(re.fullmatch(p, t) for p in NOISE_PATTERNS) # ───────────────────────────────────────────── -# TRANSLATION SAFETY +# GEOMETRY # ───────────────────────────────────────────── -def fuzzy_phrase_match(source_text, phrase_map, min_ratio=0.88): - if source_text in phrase_map: - return phrase_map[source_text], 1.0, source_text +def quad_bbox(quad): + xs = [p[0] for p in quad] + ys = [p[1] for p in quad] + return (int(min(xs)), int(min(ys)), int(max(xs)), int(max(ys))) - best_key, best_ratio = None, 0.0 - for k in phrase_map.keys(): - ratio = difflib.SequenceMatcher(None, source_text, k).ratio() - if ratio > best_ratio: - best_ratio = ratio - best_key = k +def quad_center(quad): + x1, y1, x2, y2 = quad_bbox(quad) + return ((x1 + x2) / 2.0, (y1 + y2) / 2.0) - if best_key and best_ratio >= min_ratio: - return phrase_map[best_key], best_ratio, best_key - return None, best_ratio, best_key +def boxes_union_xyxy(boxes): + boxes = [b for b in boxes if b is not None] + if not boxes: + return None + return ( + int(min(b[0] for b in boxes)), + int(min(b[1] for b in boxes)), + int(max(b[2] for b in boxes)), + int(max(b[3] for b in boxes)), + ) -def looks_suspicious_translation(src, tgt): - t = normalize_ocr_text(tgt) - bad_tokens = ["NEETA", "LOMO", "MORT I", "ESTA IL", "MORT I LA"] - if any(b in t for b in bad_tokens): - return True - if len(t) < 3: - return True - return False +def bbox_area_xyxy(b): + if b is None: + return 0 + return int(max(0, b[2] - b[0]) * max(0, b[3] - b[1])) + +def xyxy_to_xywh(b): + if b is None: + return None + x1, y1, x2, y2 = b + return {"x": int(x1), "y": int(y1), "w": int(max(0, x2 - x1)), "h": int(max(0, y2 - y1))} + +def overlap_or_near(a, b, gap=0): + ax1, ay1, ax2, ay2 = a + bx1, by1, bx2, by2 = b + gap_x = max(0, max(ax1, bx1) - min(ax2, bx2)) + gap_y = max(0, max(ay1, by1) - min(ay2, by2)) + return gap_x <= gap and gap_y <= gap # ───────────────────────────────────────────── -# LINE REBUILD (shared) -# ───────────────────────────────────────────── -def rebuild_bubble_lines_from_indices(indices, ocr_results): - if not indices: - return [] - - token_bboxes = [quad_bbox(ocr_results[i][0]) for i in indices] - items = [] - for i, bx in zip(indices, token_bboxes): - xc = (bx[0] + bx[2]) / 2.0 - yc = (bx[1] + bx[3]) / 2.0 - h = max(1.0, bx[3] - bx[1]) - items.append((i, xc, yc, h)) - - line_tol = max(6.0, float(np.median([it[3] for it in items])) * 0.6) - items.sort(key=lambda t: t[2]) - - lines = [] - for it in items: - i, xc, yc, h = it - placed = False - for ln in lines: - if abs(yc - ln["yc"]) <= line_tol: - ln["members"].append((i, xc, yc)) - ln["yc"] = np.mean([m[2] for m in ln["members"]]) - placed = True - break - if not placed: - lines.append({"yc": yc, "members": [(i, xc, yc)]}) - - lines.sort(key=lambda ln: ln["yc"]) - out = [] - for ln in lines: - mem = sorted(ln["members"], key=lambda m: m[1]) - toks = [ocr_results[i][1] for i, _, _ in mem] - line = " ".join(toks) - line = re.sub(r"\s+([,.;:!?])", r"\1", line) - line = re.sub(r"\(\s+", "(", line) - line = re.sub(r"\s+\)", ")", line) - out.append(normalize_ocr_text(line)) - return out - - -# ───────────────────────────────────────────── -# GROUPING (pass 1) -# ───────────────────────────────────────────── -def group_quads_by_overlap(ocr_results, image_shape, gap_px=18, bbox_padding=10): - n = len(ocr_results) - if n == 0: - return {}, {}, {} - - token_bboxes = [quad_bbox(r[0]) for r in ocr_results] - token_centers = [quad_center(r[0]) for r in ocr_results] - token_heights = [quad_h(r[0]) for r in ocr_results] - median_h = float(np.median(token_heights)) if token_heights else 12.0 - dist_thresh = max(20.0, median_h * 2.2) - - parent = list(range(n)) - - def find(x): - while parent[x] != x: - parent[x] = parent[parent[x]] - x = parent[x] - return x - - def union(x, y): - parent[find(x)] = find(y) - - for i in range(n): - for j in range(i + 1, n): - ov = bboxes_overlap_or_touch(token_bboxes[i], token_bboxes[j], gap_px=gap_px) - if ov: - union(i, j) - continue - cx1, cy1 = token_centers[i] - cx2, cy2 = token_centers[j] - d = ((cx1 - cx2) ** 2 + (cy1 - cy2) ** 2) ** 0.5 - if d <= dist_thresh and abs(cy1 - cy2) <= median_h * 3.0: - union(i, j) - - groups = {} - for i in range(n): - root = find(i) - groups.setdefault(root, []).append(i) - - def group_sort_key(indices): - ys = [token_bboxes[i][1] for i in indices] - xs = [token_bboxes[i][0] for i in indices] - return (min(ys) // 150, min(xs)) - - sorted_groups = sorted(groups.values(), key=group_sort_key) - - bubble_dict = {} - bbox_dict = {} - ocr_quads = {} - bubble_indices = {} - - for gid, indices in enumerate(sorted_groups, start=1): - idxs = sorted(indices, key=lambda k: token_bboxes[k][1]) - lines = rebuild_bubble_lines_from_indices(idxs, ocr_results) - quads = [ocr_results[k][0] for k in idxs] - bb = quads_bbox(quads, image_shape, padding_px=bbox_padding) - - bubble_dict[gid] = lines - ocr_quads[gid] = quads - bbox_dict[gid] = bb - bubble_indices[gid] = idxs - - return bubble_dict, bbox_dict, ocr_quads, bubble_indices - - -# ───────────────────────────────────────────── -# ORPHAN ABSORPTION (pass 2) -# ───────────────────────────────────────────── -def absorb_orphan_tokens_into_bubbles( - ocr_results, - bubble_dict, - bbox_dict, - ocr_quads, - bubble_indices, - image_shape, - bbox_padding=2, - gap_factor=1.9, - max_center_dist_factor=3.2, -): - n = len(ocr_results) - token_bboxes = [quad_bbox(r[0]) for r in ocr_results] - token_centers = [bbox_center(b) for b in token_bboxes] - token_heights = [bbox_h(b) for b in token_bboxes] - median_h = float(np.median(token_heights)) if token_heights else 12.0 - - used = set() - for bid, idxs in bubble_indices.items(): - for i in idxs: - used.add(i) - - orphan_indices = [i for i in range(n) if i not in used] - - for i in orphan_indices: - tb = token_bboxes[i] - tc = token_centers[i] - - best_bid = None - best_score = 1e18 - - for bid, bb in bbox_dict.items(): - bc = bbox_center(bb) - dist = distance_pt(tc, bc) - bh = bbox_h(bb) - - max_dist = max(60.0, median_h * max_center_dist_factor + bh * 0.15) - if dist > max_dist: - continue - - near = bboxes_overlap_or_touch(tb, bb, gap_px=int(median_h * gap_factor)) - y_ok = abs(tc[1] - bc[1]) <= max(bh * 0.65, median_h * 4.0) - - if near or y_ok: - score = dist - (25.0 if near else 0.0) - if score < best_score: - best_score = score - best_bid = bid - - if best_bid is not None: - bubble_indices.setdefault(best_bid, []) - bubble_indices[best_bid].append(i) - - # rebuild bubbles after absorption - new_bubble_dict = {} - new_ocr_quads = {} - new_bbox_dict = {} - new_bubble_indices = {} - - for bid in sorted(bubble_dict.keys()): - idxs = sorted(set(bubble_indices.get(bid, [])), key=lambda k: token_bboxes[k][1]) - if not idxs: - idxs = [] - - lines = rebuild_bubble_lines_from_indices(idxs, ocr_results) if idxs else bubble_dict.get(bid, []) - quads = [ocr_results[k][0] for k in idxs] if idxs else ocr_quads.get(bid, []) - - if quads: - bb = quads_bbox(quads, image_shape, padding_px=bbox_padding) - else: - bb = bbox_dict[bid] - - new_bubble_dict[bid] = lines - new_ocr_quads[bid] = quads - new_bbox_dict[bid] = bb - new_bubble_indices[bid] = idxs - - return new_bubble_dict, new_bbox_dict, new_ocr_quads, new_bubble_indices - - -# ───────────────────────────────────────────── -# OCR QUALITY SCORE +# QUALITY # ───────────────────────────────────────────── def ocr_quality_score(text): if not text or len(text) < 2: return 0.0 alpha_ratio = sum(1 for c in text if c.isalpha()) / max(1, len(text)) penalty = 0.0 - for p in [r",,", r"\.\.-", r"[^\w\s\'\!\?\.,\-]{2,}"]: - if re.search(p, text): - penalty += 0.2 + if re.search(r"[^\w\s\'\!\?\.,\-]{2,}", text): + penalty += 0.2 + if re.search(r",,", text): + penalty += 0.2 bonus = 0.05 if re.search(r"[.!?]$", text) else 0.0 return max(0.0, min(1.0, alpha_ratio - penalty + bonus)) # ───────────────────────────────────────────── -# OCR VARIANTS +# OCR RE-READ # ───────────────────────────────────────────── def preprocess_variant(crop_bgr, mode): gray = cv2.cvtColor(crop_bgr, cv2.COLOR_BGR2GRAY) if mode == "raw": return gray if mode == "clahe": - clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)) - return clahe.apply(gray) + return cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)).apply(gray) if mode == "adaptive": den = cv2.GaussianBlur(gray, (3, 3), 0) return cv2.adaptiveThreshold(den, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 35, 11) return gray -def run_ocr_on_img_array(reader, img_arr): - temp_path = "_temp_crop_ocr.png" - cv2.imwrite(temp_path, img_arr) +def run_ocr_on_array(reader, arr): + tmp = "_tmp_ocr.png" + cv2.imwrite(tmp, arr) try: - return reader.readtext(temp_path, paragraph=False) + return reader.readtext(tmp, paragraph=False) finally: - if os.path.exists(temp_path): - os.remove(temp_path) + if os.path.exists(tmp): + os.remove(tmp) -def reread_cluster_crop(image, bbox, reader, source_lang="en", padding_px=20, upscale_factor=2.5): - img_h, img_w = image.shape[:2] +def reread_crop(image, bbox, reader, upscale=2.5, pad=18): + ih, iw = image.shape[:2] x1, y1, x2, y2 = bbox - x1 = max(0, int(x1) - padding_px) - y1 = max(0, int(y1) - padding_px) - x2 = min(img_w, int(x2) + padding_px) - y2 = min(img_h, int(y2) + padding_px) - + x1 = max(0, int(x1 - pad)); y1 = max(0, int(y1 - pad)) + x2 = min(iw, int(x2 + pad)); y2 = min(ih, int(y2 + pad)) crop = image[y1:y2, x1:x2] if crop.size == 0: return None - new_w = int(crop.shape[1] * upscale_factor) - new_h = int(crop.shape[0] * upscale_factor) - upscaled = cv2.resize(crop, (new_w, new_h), interpolation=cv2.INTER_CUBIC) + up = cv2.resize(crop, (int(crop.shape[1] * upscale), int(crop.shape[0] * upscale)), interpolation=cv2.INTER_CUBIC) - candidates = [] + best = None for mode in ("raw", "clahe", "adaptive"): - proc = preprocess_variant(upscaled, mode) - res = run_ocr_on_img_array(reader, proc) + proc = preprocess_variant(up, mode) + res = run_ocr_on_array(reader, proc) if not res: continue res.sort(key=lambda r: (r[0][0][1], r[0][0][0])) - lines = [normalize_ocr_text(t) for _, t, _ in res if t.strip()] - merged = fix_hyphens(lines) if lines else "" - if source_lang == "it": - merged = italian_post_ocr_cleanup(merged) - score = ocr_quality_score(merged) - candidates.append((score, mode, merged)) + lines = [normalize_text(t) for _, t, _ in res if t.strip()] + merged = re.sub(r"\s{2,}", " ", " ".join(lines)).strip() + s = ocr_quality_score(merged) + if best is None or s > best[0]: + best = (s, merged) - if not candidates: - return None - candidates.sort(key=lambda x: x[0], reverse=True) - return candidates[0][2] if candidates[0][2] else None + return best[1] if best else None # ───────────────────────────────────────────── -# AUTO GAP +# LINES + YELLOW BOXES # ───────────────────────────────────────────── -def compute_auto_gap(image_path, base_gap=18, reference_width=750): - image = cv2.imread(image_path) - if image is None: - return base_gap - img_w = image.shape[1] - return base_gap * (img_w / reference_width) +def build_lines_from_indices(indices, ocr): + if not indices: + return [] + + items = [] + for i in indices: + b = quad_bbox(ocr[i][0]) + xc = (b[0] + b[2]) / 2.0 + yc = (b[1] + b[3]) / 2.0 + h = max(1.0, b[3] - b[1]) + items.append((i, b, xc, yc, h)) + + med_h = float(np.median([it[4] for it in items])) if items else 10.0 + row_tol = max(6.0, med_h * 0.75) + + items.sort(key=lambda x: x[3]) + rows = [] + for it in items: + i, b, xc, yc, h = it + placed = False + for r in rows: + if abs(yc - r["yc"]) <= row_tol: + r["m"].append((i, b, xc, yc)) + r["yc"] = float(np.mean([k[3] for k in r["m"]])) + placed = True + break + if not placed: + rows.append({"yc": yc, "m": [(i, b, xc, yc)]}) + + rows.sort(key=lambda r: r["yc"]) + lines = [] + for r in rows: + mem = sorted(r["m"], key=lambda z: z[2]) + txt = normalize_text(" ".join(ocr[i][1] for i, _, _, _ in mem)) + lines.append(txt) + + return lines + + +def build_line_boxes_from_indices(indices, ocr): + """ + Robust yellow-box generation with punctuation attachment: + - row grouping + - chunking by x gap + - attach tiny punctuation/special tokens to nearest chunk + - coverage guarantee + """ + if not indices: + return [] + + items = [] + for i in indices: + b = quad_bbox(ocr[i][0]) + txt = normalize_text(ocr[i][1]) + xc = (b[0] + b[2]) / 2.0 + yc = (b[1] + b[3]) / 2.0 + w = max(1.0, b[2] - b[0]) + h = max(1.0, b[3] - b[1]) + items.append({ + "i": i, "b": b, "txt": txt, + "xc": xc, "yc": yc, "w": w, "h": h + }) + + med_h = float(np.median([it["h"] for it in items])) if items else 10.0 + row_tol = max(6.0, med_h * 0.90) + gap_x_tol = max(8.0, med_h * 1.25) + pad = max(1, int(round(med_h * 0.12))) + + def is_punct_like(t): + raw = t.strip() + if raw == "": + return True + punct_ratio = sum(1 for c in raw if not c.isalnum()) / max(1, len(raw)) + return punct_ratio >= 0.5 or len(raw) <= 2 + + # 1) rows + items_sorted = sorted(items, key=lambda x: x["yc"]) + rows = [] + for it in items_sorted: + placed = False + for r in rows: + if abs(it["yc"] - r["yc"]) <= row_tol: + r["m"].append(it) + r["yc"] = float(np.mean([k["yc"] for k in r["m"]])) + placed = True + break + if not placed: + rows.append({"yc": it["yc"], "m": [it]}) + + rows.sort(key=lambda r: r["yc"]) + out_boxes = [] + + for r in rows: + mem = sorted(r["m"], key=lambda z: z["xc"]) + normal = [t for t in mem if not is_punct_like(t["txt"])] + punct = [t for t in mem if is_punct_like(t["txt"])] + + if not normal: + normal = mem + punct = [] + + # 2) chunk normal tokens + chunks = [] + cur = [normal[0]] + for t in normal[1:]: + prev = cur[-1]["b"] + b = t["b"] + gap = b[0] - prev[2] + if gap <= gap_x_tol: + cur.append(t) + else: + chunks.append(cur) + cur = [t] + chunks.append(cur) + + # 3) attach punctuation tokens + for p in punct: + pb = p["b"] + pxc, pyc = p["xc"], p["yc"] + + best_k = -1 + best_score = 1e18 + for k, ch in enumerate(chunks): + ub = boxes_union_xyxy([x["b"] for x in ch]) + cx = (ub[0] + ub[2]) / 2.0 + cy = (ub[1] + ub[3]) / 2.0 + + dx = abs(pxc - cx) + dy = abs(pyc - cy) + score = dx + 1.8 * dy + + near = overlap_or_near(pb, ub, gap=int(med_h * 0.9)) + if near: + score -= med_h * 2.0 + + if score < best_score: + best_score = score + best_k = k + + if best_k >= 0: + chunks[best_k].append(p) + else: + chunks.append([p]) + + # 4) chunk boxes + for ch in chunks: + ub = boxes_union_xyxy([x["b"] for x in ch]) + if ub: + x1, y1, x2, y2 = ub + out_boxes.append((x1 - pad, y1 - pad, x2 + pad, y2 + pad)) + + # 5) guarantee all tokens included + token_boxes = [it["b"] for it in items] + + def inside(tb, lb): + return tb[0] >= lb[0] and tb[1] >= lb[1] and tb[2] <= lb[2] and tb[3] <= lb[3] + + for tb in token_boxes: + ok = any(inside(tb, lb) for lb in out_boxes) + if not ok: + x1, y1, x2, y2 = tb + out_boxes.append((x1 - pad, y1 - pad, x2 + pad, y2 + pad)) + + # 6) merge heavy overlaps + merged = [] + for b in out_boxes: + merged_into = False + for i, m in enumerate(merged): + ix1 = max(b[0], m[0]); iy1 = max(b[1], m[1]) + ix2 = min(b[2], m[2]); iy2 = min(b[3], m[3]) + inter = max(0, ix2 - ix1) * max(0, iy2 - iy1) + a1 = max(1, (b[2]-b[0])*(b[3]-b[1])) + a2 = max(1, (m[2]-m[0])*(m[3]-m[1])) + iou = inter / float(a1 + a2 - inter) if (a1 + a2 - inter) > 0 else 0.0 + if iou > 0.72: + merged[i] = boxes_union_xyxy([b, m]) + merged_into = True + break + if not merged_into: + merged.append(b) + + merged.sort(key=lambda z: (z[1], z[0])) + return merged # ───────────────────────────────────────────── -# READING ORDER +# GROUPING +# ───────────────────────────────────────────── +def auto_gap(image_path, base=18, ref_w=750): + img = cv2.imread(image_path) + if img is None: + return base + return base * (img.shape[1] / ref_w) + +def group_tokens(ocr, image_shape, gap_px=18, bbox_padding=3): + n = len(ocr) + if n == 0: + return {}, {}, {}, {} + + boxes = [quad_bbox(r[0]) for r in ocr] + centers = [quad_center(r[0]) for r in ocr] + hs = [max(1.0, b[3] - b[1]) for b in boxes] + med_h = float(np.median(hs)) if hs else 12.0 + dist_thresh = max(20.0, med_h * 2.2) + + p = list(range(n)) + + def find(x): + while p[x] != x: + p[x] = p[p[x]] + x = p[x] + return x + + def unite(a, b): + p[find(a)] = find(b) + + for i in range(n): + for j in range(i + 1, n): + if overlap_or_near(boxes[i], boxes[j], gap=gap_px): + unite(i, j) + continue + cx1, cy1 = centers[i] + cx2, cy2 = centers[j] + d = ((cx1 - cx2) ** 2 + (cy1 - cy2) ** 2) ** 0.5 + if d <= dist_thresh and abs(cy1 - cy2) <= med_h * 3.0: + unite(i, j) + + groups = {} + for i in range(n): + groups.setdefault(find(i), []).append(i) + + sorted_groups = sorted(groups.values(), key=lambda idxs: (min(boxes[i][1] for i in idxs), min(boxes[i][0] for i in idxs))) + + bubbles = {} + bubble_boxes = {} + bubble_quads = {} + bubble_indices = {} + + ih, iw = image_shape[:2] + for bid, idxs in enumerate(sorted_groups, start=1): + idxs = sorted(idxs, key=lambda k: boxes[k][1]) + lines = build_lines_from_indices(idxs, ocr) + quads = [ocr[k][0] for k in idxs] + ub = boxes_union_xyxy([quad_bbox(q) for q in quads]) + if ub is None: + continue + + x1, y1, x2, y2 = ub + x1 = max(0, x1 - bbox_padding); y1 = max(0, y1 - bbox_padding) + x2 = min(iw, x2 + bbox_padding); y2 = min(ih, y2 + bbox_padding) + + bubbles[bid] = lines + bubble_boxes[bid] = (x1, y1, x2, y2) + bubble_quads[bid] = quads + bubble_indices[bid] = idxs + + return bubbles, bubble_boxes, bubble_quads, bubble_indices + + +# ───────────────────────────────────────────── +# DEBUG +# ───────────────────────────────────────────── +def save_debug_clusters(image_path, ocr, bubble_boxes, bubble_indices, out_path="debug_clusters.png"): + img = cv2.imread(image_path) + if img is None: + return + + # token quads + for bbox, txt, conf in ocr: + pts = np.array(bbox, dtype=np.int32) + cv2.polylines(img, [pts], True, (180, 180, 180), 1) + + # bubble boxes + yellow line boxes + for bid, bb in bubble_boxes.items(): + x1, y1, x2, y2 = bb + cv2.rectangle(img, (x1, y1), (x2, y2), (0, 220, 0), 2) + cv2.putText(img, f"BOX#{bid}", (x1 + 2, y1 + 16), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 220, 0), 2) + + idxs = bubble_indices.get(bid, []) + line_boxes = build_line_boxes_from_indices(idxs, ocr) + for lb in line_boxes: + lx1, ly1, lx2, ly2 = lb + lx1 = max(0, int(lx1)); ly1 = max(0, int(ly1)) + lx2 = min(img.shape[1] - 1, int(lx2)); ly2 = min(img.shape[0] - 1, int(ly2)) + cv2.rectangle(img, (lx1, ly1), (lx2, ly2), (0, 255, 255), 3) + + cv2.imwrite(out_path, img) + + +# ───────────────────────────────────────────── +# EXPORT # ───────────────────────────────────────────── def estimate_reading_order(bbox_dict, mode="ltr"): items = [] for bid, (x1, y1, x2, y2) in bbox_dict.items(): cx = (x1 + x2) / 2.0 cy = (y1 + y2) / 2.0 - items.append((bid, x1, y1, x2, y2, cx, cy)) + items.append((bid, cx, cy)) + + items.sort(key=lambda t: t[2]) - items.sort(key=lambda t: t[6]) rows = [] - row_tol = 90 + tol = 90 for it in items: placed = False - for row in rows: - if abs(it[6] - row["cy"]) <= row_tol: - row["items"].append(it) - row["cy"] = np.mean([x[6] for x in row["items"]]) + for r in rows: + if abs(it[2] - r["cy"]) <= tol: + r["items"].append(it) + r["cy"] = float(np.mean([x[2] for x in r["items"]])) placed = True break if not placed: - rows.append({"cy": it[6], "items": [it]}) + rows.append({"cy": it[2], "items": [it]}) rows.sort(key=lambda r: r["cy"]) order = [] for r in rows: - if mode == "rtl": - r["items"].sort(key=lambda t: t[5], reverse=True) - else: - r["items"].sort(key=lambda t: t[5]) - order.extend([it[0] for it in r["items"]]) + r["items"].sort(key=lambda x: x[1], reverse=(mode == "rtl")) + order.extend([z[0] for z in r["items"]]) - return {bid: idx + 1 for idx, bid in enumerate(order)} + return {bid: i + 1 for i, bid in enumerate(order)} -# ───────────────────────────────────────────── -# EXPORTERS -# ───────────────────────────────────────────── -def export_bubble_boxes( - bbox_dict, - ocr_quads_dict, - reading_order_map, - filepath="bubbles.json", - bbox_expand_ratio=0.16, - image_shape=None, -): - export = {} - for bubble_id, (x1, y1, x2, y2) in bbox_dict.items(): - quads = ocr_quads_dict.get(bubble_id, []) +def export_bubbles(filepath, bbox_dict, quads_dict, indices_dict, ocr, reading_map, image_shape): + out = {} - w_orig = x2 - x1 - h_orig = y2 - y1 - pad_x = int(w_orig * bbox_expand_ratio) - pad_y = int(h_orig * bbox_expand_ratio) + for bid, bb in bbox_dict.items(): + x1, y1, x2, y2 = bb + quads = quads_dict.get(bid, []) + idxs = indices_dict.get(bid, []) - if image_shape is not None: - img_h, img_w = image_shape[:2] - ex1 = max(0, x1 - pad_x) - ey1 = max(0, y1 - pad_y) - ex2 = min(img_w, x2 + pad_x) - ey2 = min(img_h, y2 + pad_y) - else: - ex1, ey1, ex2, ey2 = x1 - pad_x, y1 - pad_y, x2 + pad_x, y2 + pad_y + qboxes = [quad_bbox(q) for q in quads] + text_union = boxes_union_xyxy(qboxes) - export[str(bubble_id)] = { - "x": int(ex1), - "y": int(ey1), - "w": int(ex2 - ex1), - "h": int(ey2 - ey1), - "x_tight": int(x1), - "y_tight": int(y1), - "w_tight": int(w_orig), - "h_tight": int(h_orig), - "reading_order": int(reading_order_map.get(bubble_id, bubble_id)), - "quad_bboxes": [ - { - "x": int(quad_bbox(q)[0]), - "y": int(quad_bbox(q)[1]), - "w": int(quad_bbox(q)[2] - quad_bbox(q)[0]), - "h": int(quad_bbox(q)[3] - quad_bbox(q)[1]), - } - for q in quads - ], - "quads": [[[int(pt[0]), int(pt[1])] for pt in quad] for quad in quads], + line_boxes_xyxy = build_line_boxes_from_indices(idxs, ocr) + line_union_xyxy = boxes_union_xyxy(line_boxes_xyxy) + line_union_area = bbox_area_xyxy(line_union_xyxy) + + out[str(bid)] = { + "x": int(x1), "y": int(y1), "w": int(x2 - x1), "h": int(y2 - y1), + "reading_order": int(reading_map.get(bid, bid)), + "quad_bboxes": [{"x": int(b[0]), "y": int(b[1]), "w": int(b[2]-b[0]), "h": int(b[3]-b[1])} for b in qboxes], + "quads": [[[int(p[0]), int(p[1])] for p in q] for q in quads], + "text_bbox": xyxy_to_xywh(text_union), + + # yellow geometry + "line_bboxes": [xyxy_to_xywh(lb) for lb in line_boxes_xyxy], + "line_union_bbox": xyxy_to_xywh(line_union_xyxy) if line_union_xyxy else None, + "line_union_area": int(line_union_area), } with open(filepath, "w", encoding="utf-8") as f: - json.dump(export, f, indent=2, ensure_ascii=False) - -def write_output(output_lines, filepath): - with open(filepath, "w", encoding="utf-8") as f: - f.write("\n".join(output_lines)) + json.dump(out, f, indent=2, ensure_ascii=False) # ───────────────────────────────────────────── -# DEBUG IMAGE -# ───────────────────────────────────────────── -def save_debug_clusters(image_path, ocr_results, bubble_dict, bbox_dict): - image = cv2.imread(image_path) - if image is None: - return - - np.random.seed(42) - num_bubbles = max(bubble_dict.keys(), default=1) - colors = [tuple(int(c) for c in col) for col in np.random.randint(50, 230, size=(num_bubbles + 2, 3))] - - # draw all OCR quads lightly - for bbox, text, _ in ocr_results: - pts = np.array(bbox, dtype=np.int32) - cv2.polylines(image, [pts], isClosed=True, color=(180, 180, 180), thickness=1) - - # draw bubble bboxes - for bubble_id, (x1, y1, x2, y2) in bbox_dict.items(): - color = colors[(bubble_id - 1) % len(colors)] - cv2.rectangle(image, (int(x1), int(y1)), (int(x2), int(y2)), color, 2) - cv2.putText(image, f"BOX#{bubble_id}", (int(x1) + 2, int(y1) + 16), - cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 2) - - cv2.imwrite("debug_clusters.png", image) - - -# ───────────────────────────────────────────── -# CORE FUNCTION +# MAIN # ───────────────────────────────────────────── def translate_manga_text( image_path, source_lang="en", target_lang="ca", confidence_threshold=0.12, - export_to_file=None, - export_bubbles_to="bubbles.json", - min_text_length=2, + min_text_length=1, gap_px="auto", filter_sound_effects=True, quality_threshold=0.62, - upscale_factor=2.5, - bbox_padding=3, - debug=False, + export_to_file="output.txt", + export_bubbles_to="bubbles.json", reading_mode="ltr", + debug=True ): - # gap resolve - if gap_px == "auto": - resolved_gap = compute_auto_gap(image_path) - else: - resolved_gap = float(gap_px) - - full_image = cv2.imread(image_path) - if full_image is None: - print(f"❌ Could not load image: {image_path}") + image = cv2.imread(image_path) + if image is None: + print(f"❌ Cannot load image: {image_path}") return - # OCR init - print("\nLoading OCR model...") + resolved_gap = auto_gap(image_path) if gap_px == "auto" else float(gap_px) + + print("Loading OCR...") ocr_lang_list = ["en", "es"] if source_lang == "ca" else [source_lang] reader = easyocr.Reader(ocr_lang_list) - # Translator init - translator = GoogleTranslator(source=source_lang, target=target_lang) + print("Running OCR...") + raw = reader.readtext(image_path, paragraph=False) + print(f"Raw detections: {len(raw)}") - # OCR full image - print(f"\nRunning OCR on: {image_path}") - results = reader.readtext(image_path, paragraph=False) - print(f" Raw detections: {len(results)}") - - # Filter tokens filtered = [] skipped = 0 - for bbox, text, confidence in results: - cleaned = normalize_ocr_text(text) - keep, _ = should_keep_token(cleaned, confidence, confidence_threshold, min_text_length, filter_sound_effects) - if keep: - filtered.append((bbox, cleaned, confidence)) - else: - skipped += 1 + ih, iw = image.shape[:2] - print(f" ✅ {len(filtered)} kept, {skipped} skipped.\n") + for bbox, text, conf in raw: + t = normalize_text(text) + qb = quad_bbox(bbox) + + if conf < confidence_threshold: + skipped += 1 + continue + if len(t) < min_text_length: + skipped += 1 + continue + if is_noise_text(t): + skipped += 1 + continue + if filter_sound_effects and is_sound_effect(t): + skipped += 1 + continue + if is_title_text(t): + skipped += 1 + continue + + if qb[1] < int(ih * TOP_BAND_RATIO): + if conf < 0.70 and len(t) >= 5: + skipped += 1 + continue + + filtered.append((bbox, t, conf)) + + print(f"Kept: {len(filtered)} | Skipped: {skipped}") if not filtered: - print("⚠️ No text detected after filtering.") + print("⚠️ No text after filtering.") return - # Pass 1 grouping - bubble_dict, bbox_dict, ocr_quads, bubble_indices = group_quads_by_overlap( - filtered, - image_shape=full_image.shape, - gap_px=resolved_gap, - bbox_padding=bbox_padding, + bubbles, bubble_boxes, bubble_quads, bubble_indices = group_tokens( + filtered, image.shape, gap_px=resolved_gap, bbox_padding=3 ) - # Pass 2 orphan absorption - bubble_dict, bbox_dict, ocr_quads, bubble_indices = absorb_orphan_tokens_into_bubbles( - ocr_results=filtered, - bubble_dict=bubble_dict, - bbox_dict=bbox_dict, - ocr_quads=ocr_quads, - bubble_indices=bubble_indices, - image_shape=full_image.shape, - bbox_padding=bbox_padding, - ) - - print(f" ✅ {len(bubble_dict)} bubble(s) detected after absorption.\n") - if debug: - save_debug_clusters(image_path, filtered, bubble_dict, bbox_dict) + save_debug_clusters( + image_path=image_path, + ocr=filtered, + bubble_boxes=bubble_boxes, + bubble_indices=bubble_indices, + out_path="debug_clusters.png" + ) - # merge lines - clean_bubbles = {i: fix_hyphens(lines) for i, lines in bubble_dict.items() if lines} + translator = GoogleTranslator(source=source_lang, target=target_lang) - # OCR quality + reread - print("Checking OCR quality per bubble...") - for i, text in clean_bubbles.items(): - if source_lang == "it": - text = italian_post_ocr_cleanup(text) - clean_bubbles[i] = text - - score = ocr_quality_score(text) - status = "✅" if score >= quality_threshold else "🔁" - print(f" #{i}: score={score:.2f} {status} '{text[:65]}'") - - if score < quality_threshold: - reread = reread_cluster_crop( - full_image, - bbox_dict[i], - reader, - source_lang=source_lang, - upscale_factor=upscale_factor, - ) + clean_lines = {} + for bid, lines in bubbles.items(): + txt = normalize_text(" ".join(lines)) + q = ocr_quality_score(txt) + if q < quality_threshold: + reread = reread_crop(image, bubble_boxes[bid], reader, upscale=2.5, pad=18) if reread: - clean_bubbles[i] = reread + txt = normalize_text(reread) + clean_lines[bid] = apply_glossary(txt) - # Reading order + glossary prepass - reading_order_map = estimate_reading_order(bbox_dict, mode=reading_mode) - for i in list(clean_bubbles.keys()): - clean_bubbles[i] = apply_glossary(clean_bubbles[i], GLOSSARY) + reading_map = estimate_reading_order(bubble_boxes, mode=reading_mode) - # Translate - header = "BUBBLE|ORDER|ORIGINAL|TRANSLATED|FLAGS" divider = "─" * 120 - output_lines = [header, divider] + out_lines = ["BUBBLE|ORDER|ORIGINAL|TRANSLATED|FLAGS", divider] - print() + print(divider) print(f"{'BUBBLE':<8} {'ORDER':<6} {'ORIGINAL':<50} {'TRANSLATED':<50} FLAGS") print(divider) - ordered_ids = sorted(clean_bubbles.keys(), key=lambda b: reading_order_map.get(b, b)) translated_count = 0 - - for i in ordered_ids: - src = clean_bubbles[i].strip() + for bid in sorted(clean_lines.keys(), key=lambda x: reading_map.get(x, x)): + src = clean_lines[bid].strip() if not src: continue - flags = [] - forced_translation = None - # phrase-map pass - if source_lang == "it" and target_lang == "ca": - exact = PHRASE_MAP_IT_CA.get(src) - if exact: - forced_translation = exact - flags.append("PHRASE_EXACT") - else: - fuzzy, ratio, _ = fuzzy_phrase_match(src, PHRASE_MAP_IT_CA, min_ratio=0.88) - if fuzzy: - forced_translation = fuzzy - flags.append(f"PHRASE_FUZZY:{ratio:.2f}") + try: + tgt = translator.translate(src) or "" + except Exception as e: + tgt = f"[Translation error: {e}]" - if forced_translation is not None: - tgt = forced_translation - else: - try: - tgt = translator.translate(src) - except Exception as e: - tgt = f"[Translation error: {e}]" + tgt = apply_glossary(postprocess_translation_general(tgt)).upper() + src_u = src.upper() - if tgt is None: - tgt = "[No translation returned]" - - tgt = normalize_ocr_text(tgt) - tgt = apply_glossary(tgt, GLOSSARY) - - # suspicious retry - if looks_suspicious_translation(src, tgt): - flags.append("SUSPICIOUS_RETRY") - retry_src = italian_post_ocr_cleanup(src) if source_lang == "it" else src - try: - retry_tgt = translator.translate(retry_src) - if retry_tgt: - retry_tgt = normalize_ocr_text(retry_tgt) - retry_tgt = apply_glossary(retry_tgt, GLOSSARY) - if not looks_suspicious_translation(src, retry_tgt): - tgt = retry_tgt - flags.append("RETRY_OK") - else: - if source_lang == "it" and target_lang == "ca": - fallback, ratio, _ = fuzzy_phrase_match(src, PHRASE_MAP_IT_CA, min_ratio=0.80) - if fallback: - tgt = fallback - flags.append(f"FALLBACK_MAP:{ratio:.2f}") - except Exception: - pass - - tgt = tgt.upper() + out_lines.append(f"#{bid}|{reading_map.get(bid,bid)}|{src_u}|{tgt}|{','.join(flags) if flags else '-'}") + print(f"#{bid:<7} {reading_map.get(bid,bid):<6} {src_u[:50]:<50} {tgt[:50]:<50} {','.join(flags) if flags else '-'}") translated_count += 1 - ro = reading_order_map.get(i, i) - output_lines.append(f"#{i}|{ro}|{src}|{tgt}|{','.join(flags) if flags else '-'}") - print(f"#{i:<7} {ro:<6} {src:<50} {tgt:<50} {','.join(flags) if flags else '-'}") + out_lines.append(divider) + out_lines.append(f"✅ Done! {translated_count} bubble(s) translated, {skipped} detection(s) skipped.") + + with open(export_to_file, "w", encoding="utf-8") as f: + f.write("\n".join(out_lines)) + + export_bubbles( + export_bubbles_to, + bbox_dict=bubble_boxes, + quads_dict=bubble_quads, + indices_dict=bubble_indices, + ocr=filtered, + reading_map=reading_map, + image_shape=image.shape + ) - output_lines.append(divider) - summary = f"✅ Done! {translated_count} bubble(s) translated, {skipped} detection(s) skipped." - output_lines.append(summary) print(divider) - print(summary) - - if export_to_file: - write_output(output_lines, export_to_file) - - if export_bubbles_to: - export_bubble_boxes( - bbox_dict, - ocr_quads, - reading_order_map=reading_order_map, - filepath=export_bubbles_to, - bbox_expand_ratio=0.16, - image_shape=full_image.shape, - ) + print(f"Saved: {export_to_file}") + print(f"Saved: {export_bubbles_to}") + if debug: + print("Saved: debug_clusters.png (special chars included in yellow boxes)") -# ───────────────────────────────────────────── -# ENTRY POINT -# ───────────────────────────────────────────── if __name__ == "__main__": translate_manga_text( - image_path="001-page.png", - source_lang="it", + image_path="002-page.png", + source_lang="en", target_lang="ca", confidence_threshold=0.12, - min_text_length=2, - export_to_file="output.txt", - export_bubbles_to="bubbles.json", + min_text_length=1, gap_px="auto", filter_sound_effects=True, quality_threshold=0.62, - upscale_factor=2.5, - bbox_padding=3, - debug=True, + export_to_file="output.txt", + export_bubbles_to="bubbles.json", reading_mode="ltr", + debug=True )