From e77aa579efecd6b5aaf32e4b7d263ef32ac5e711 Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 21:53:15 +0530 Subject: [PATCH 01/10] Delete trdg/fonts/hi/Lohit-Devanagari.ttf Deleting old Hindi font file --- trdg/fonts/hi/Lohit-Devanagari.ttf | Bin 72328 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 trdg/fonts/hi/Lohit-Devanagari.ttf diff --git a/trdg/fonts/hi/Lohit-Devanagari.ttf b/trdg/fonts/hi/Lohit-Devanagari.ttf deleted file mode 100644 index ce04a335825ab501f8d5dacdac4cf921e6609f5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72328 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 Date: Thu, 8 Feb 2024 22:10:44 +0530 Subject: [PATCH 02/10] Create Readme.md for font installation --- trdg/fonts/hi/Readme.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 trdg/fonts/hi/Readme.md diff --git a/trdg/fonts/hi/Readme.md b/trdg/fonts/hi/Readme.md new file mode 100644 index 0000000000..886de22d49 --- /dev/null +++ b/trdg/fonts/hi/Readme.md @@ -0,0 +1,9 @@ +# Added Gargi font for better Hindi Matras seperation +## Installation +In Debian/Ubuntu based system you can install it by downloading the gargi.ttf file and using local font installer as follows +![font_install](https://github.com/prathameshza/TextRecognitionDataGenerator/assets/46810093/1284d447-5187-484b-be26-f3738b9a0031) + + +Another way is to use a [Font Manager](https://itsfoss.com/font-manager/) + +Direct Download link [Gargi Font](https://fontsgeek.com/gargi-13-font) From ec086259d6b87043e9093cacb07e7ab4ed8e466b Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:11:46 +0530 Subject: [PATCH 03/10] Added Gargi font --- trdg/fonts/hi/gargi.ttf | Bin 0 -> 72500 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 trdg/fonts/hi/gargi.ttf diff --git a/trdg/fonts/hi/gargi.ttf b/trdg/fonts/hi/gargi.ttf new file mode 100644 index 0000000000000000000000000000000000000000..8ac690af64e3b7eaea3146c8d696035a6e1220fa GIT binary patch literal 72500 zcmc$H2Yh5z_3*p*P0jS)dvBRuGwGQmlS%KJZArH8W(&J4ZRtxB6i}KVO#wkf6i`$^ z!M}>As0aw6ltq!QfWT5@-+br3nS@n;S=GyV8g=k>#e{2#RyE8qNt}k zHm;jn``6vCMc~@2&@vn0gz(E%8{F%L@9vFTk3Mee@1G*$-$zk=-oo}Zb2l_Ce3haa zZlNgptgUm$?Z86n0=V7_{q5W4wyyhu@1#{Q+;J48d2Yw{T}M|>rqnS13UZx7@Ebk9 z{>F>`_T|;G;@cF>ffE#U?{)L{FCGs(!esbe907b6P?(&Be{dg1z+|aoIX4}6+=aaPETI5xqhskr2*OJYKEm zsnn?sIb|mpvHynGm)25kl;ow&bh4TRyzfF5xPVS&ucE6dLMsYQz^^~SI9B-VpiVYAOYNXW)B`JvyrILjMS~&Cp!rUT79* zZfN9u44N03ANubk4aSI)aoE;D4RdU8-}fjbv{C#IDgkXJd|rk3P^;(w)d=4w;l7Pn zQ18=0jnVVeAewf6Fnmzu5nuE^?xK9h$rs1=V{sX0hBWY4NZ-H?-5x@*bJ$eDg z?x?;*Jx_H3d|_xgn8OZ76SN@oQNhs)tqgri)brK9!}TJ3?xE+YGC2>;11$&51T^V| z>n^yD(69?WHvk+wI4YrOpxM!KDuSfcMmSml|3Qul)_~9ahN7x@l&4zpGn9=qdW7Pj zKf}5}!(*_5S!mye&xCV-cxa=yLjPe3(=(Kqe8yGi3u}sX&}N`r0qq26UxfA$w4Xt{ z6IwSk(r+g;543I2I-p%gg$Og^Rj}S#I6^=45*%TdqWy3j0-Tg^%)$42Y7Jit->u?_620YJ4Kd1E66V<1oy$6k)^HCh;9ytE8-hM+(F%QD$UC=s!=66!B zSIyA349!RJt25Bn(JLq|C9j@AQ3oEO8W;!FK<%X@)hZ2pY6*9O>(LZuaRb;1y!7R8 zJe6%H!0`lp2RaeoLA`|ssO8X(hBgCjJ+vWc8|uvp$1|brMaNKESva1kj=-^oL+$t; zMPvmB#-668VP8KC#~}3<)l0oe4WJ7^qNsuA)s!1uQ2hYD4@0xj_fRjwae#9Z+*)rG zQ~L~~QPeM)ah481i^cUKIFLqogQXLJh0uy^RToQdveu*#9@s%i@OR*NJG3p(eqLqp zS-_KLLc15f{{`Ap)t{lKVO)LnO?)zZ2kD9*gZ2)5AAsWm%=a1`LvVCKBi}y{-{F38 zA9@tpFX4L{8psKdTNECq0tk2uO+mW@&fNmX9dM5D6EupczRBJzg70U+buSz%&|o|w z?+}3*<{}M|J~xtk;7ItXb`OPKh0kpi2lL=O`Fs>Kay$nb&=VhDZ+F1)bm;Q~I0DzO z@GYxWSsGnj{|@{?c!cF`a^Kooqh)Xe{-IM87d>CSjWz(>fFJcDCBoMNeZB&ppQt9N zCzvtn$!a(CCuVNx`yy|^5q%SI|2fPBbV5L5^fK_mpQ}~$V@g2Q3Dz$Gylo-4z|jT! zLQB0+{Y#zC-h$(s)D!GnWIh4A_O*Rd+bfGaP~%P5D@+Hv3;O@1+J+vZ0(djvL1Y2Y z{*ZkST?ox+F&u%e?0TOI#|3D6p%ET=5E{^bi9Uoj257U;HbPrm^B_gDaskG}W#Bu& zh2@#stIy*L;qy^dhAzTfUT7d|XaSr{Q5Zc~eT%Fe(1PU`BJ*$$G&rK;U=Ne;HUJcO zhTy>R0D=23xUkot&*D7ny$6p6{8j%)!;v&IyLTz-Nn&}h-#OHMa12v+*wJFJc234m z3iHAN;e_xQyTmTHtL;X+)$Xu+?J;}7;dCmU2G4^pZ3f!~%pA}mPYRK+NjM~&wu_;+ z%C5JY?RK_zeyR7yYPI@y^|=FQzq96@`FG~tS-tO9`ySYL|GuB@`@elZ+4rM;-`#i1 zGe3X&v8NyUvsJgZ4j~Nx+5RD*JVAy0L##NjeO~$v7dc!WUm$D{i6v5*T%lB{HCmnC zU^JO6R-4`7bh$lVpFa=`g(Hp8SUizTr8C)FzR*-`ZfR|6@8|^Mucx=%SLq)Z92y=O z9UGsRoSI%XvwX$MRjX&`=9i}W|N21<)?Do;NOe#7UY1b26OMI2Uog&G`xE51bddF7EZ*d%5rN!n|SLM&3!hdw7rX zp5=4+c7BZC$Dik4#{V(@T|rjxIl)&1_X>V5_`9${XcuOMW#N=?qwoab*}|)Y?=%D( zRyJJR@Y{yhMIE9|q7y||iS88rRE))b@r?Kj;(NtUNqmxi$xg``l4~V*NuHLxEsaT= zrAJGzg`fMSk4j&X?T|et?~;FA;Z||6Kns1De3j zz->WZuoB!7{C@DAkRg-_Z3$f$dNG_}f7-(R;hFG4_|)(n;RBJL$Z?VDBlkAS8}s#_ zQX~1fvhj~mYjiYvK};0;dORGTihn--aw45LHt|rhH+fg8HTC_pCS6INo_;Zt$Xu3r zJnPS%oc(r|$qnRg&0F)A=HD*#7A`Bi)ue8kXga^?k3~W8xZ;nC)#lmeJ6jwr-7Q;N zzTLvK4z})Sy{z@F*4Nq^+qSk{)b?PzxP43ew>!ig+d6LUc&$^@S?)Zi^YN~5*BMbR*};OF(}{B-~H?&<5M@1A~XnQPgyWfw2|(@gu!2{Y%J3D*Z9Ct1|w{7medH($T z`~~xmud%HeU32-Ght?X`Ua|J&b=~W}x?Zq;bp2Q1=jjcm4LdjdWn=rs(>6Y`$-QZ4 z)3ux4+1#}Gn9X->k#1SD<<ioLNDZHQg z>WeR;)d!AQSb)A6^jFl3pM}1lw^T_Dbk4HBGjryE`Rj9LzXd%8-JK_f88s;}S_ z{sU#A04BswYFun{WnFw|=_K2d{A8Af3+P?X+;;oc;{!wf)1YlS#=hfZ&yeSIcj7e1 z>G%&1_I$7VN%+_Oy`Bdje31G3_W(0T^(1Vf9aI!Nr&bmstxl_Pd3|1=f_zf*dGG_+ zz?p0+orH7nqkwPeR5p`Uq~Wqgty5&OnRLqMJ z&dGwPO(tqEdXmV6KBdp^rqbSyc*}Uk55IFZWz=Mc-w6Xcuf(kDLVur5yW8U}6B!>| z&fAo6W9>42pexokn)bIRTE{cK-k8yrvnv{n_9mNr?mz=tTZ*-erUM;`mhrT|95veV zHbvBEg{!aj=r~gm=}ERFOMiL0D`t z8Y`ZBR9n*0G;~~(Gvgg7H{h;V%c_{UV9lNDcw#~(h^qB18lF-5%^T-5!n`|N>Jgyj zb1SbJNhrJ%$)547H?lk-l@7<9U4cw*(q#Kau7%!^_Q^CEy(p#7I6X?{riWTm8bhbw z*d+i3-if)?b+8*6SZ-3w5UAj^t8;c-+(^gq{!Pcov5()Sf}Z_VH;O_}1?gD_TSr)r zu-4m!(v$4wSHB6jU-65cj=SJ?1lIen(K@(WN@nM0b$lJ)$M4w=xZBi6 zmD6n&+M#crLEaVW=>W2;}H5g*~3WVg53c-F`d-l(BtLDA1@;< z`Th9gq~}a^1N8v4KzhPHSG#~1nP%jg*|ser;W;jh>vtmg`C|Ca%A1o+H*lT^ZkgVCqFN{_)B{( zdc)D9aRBPAh!qorTj7T+T8*1!hvSTw1|dL3>)hu%W%{%8jcG z4V;;oGrRLmnZk6%uWRD*oZTC9s|zi&pPS49alyDpAkSXJQkXFTG$FJmLg{0(@#{Q7 zb{5MpHPPVWKR@MaDjV#h9vaKha?VfW$}eUN8|F0p`Ico@l;1gIa-Z7b-;x;loPr*;c+Ntw8W73CAk~3p5}<=44HN@8 zu5lRTUWer+Z_5G;~c#WPIfTFsi53|ix%!9dPw8o*GW}dNEYx#iN+%6 zQlZzF-&mR}Cv`@bcdp*uDdd|KE9}Q^@+pQ~(avatXd;WBo%wBKdFzU^D%ozK&^3DE zxHo=OSRD~b5OKX(z9BO@s5s0?wjwK64xO15{Ol?IMeLexDqy$Ld{2a3rKRdv@%sd}Y{`K}vpPPXl z;jPooM1`m(xRaF$bxHaWIqLfe7W7BHqsva2XRexp7CT%mj z;dhtOxzevGxnisRnr=5bqj=)(*4RYz*q&lEp|@|ydWRC7Jt5^gMT4zukroZsL9>YY zb%!f7;n#FI!xOOif%1NUR{@lF63)#MA;vB)k6%|}WSi*JHFZqTP<;f*>>}mMvq!f_ zCV=uSMckQPr_liApI~Y3pA6~Syf@VdKa3}vr%vq7EMIX0m-my6<4SrifNdRt%x15= z%aec=AW%Upgn9-$fSzCh5!plRnrF6dB@zgIk4Pct0}^f@+Xtc! zH9iI-rY<5hE>Js5$`$011%nu#T4_;u_{ss)X7f(kl+$;sHG2#8w94Kt;;sB$KIPLn zdGfAO*(Pgtbv~)ZQ?d4Pv)x+J}%or!4jIcvhHuCaBj zvaj1#b>X;V%zS7FByw@y7yMK2rLwMJGNnuxnbhc`|6&nzWlaf7AU=#p~~7R41<$UNnd znWdac-^@uXSM#^5|B}&o(YlS!?(mL{U)JldJ;!ffZ{%;9|AIz)^5&JpmEL66QPY!X zxxS}!yxXPhN=)e#=D30ftEdFJ-w1k&Pqc=|!FM6Bz(g4Roq2M21CpME8WuL~KJmHd z@P4q7(r6iTBZ+a4B|8W1B03CWyN+Q0|xG9YsjJC?R1{?5GImtT2iTVTFr@~8}tqZ6%lGA~~=v2F9jSKh^pncjKdy}MQuu3ibh?gY#lD9u55@mxL@4>>_;C31gbv~Ya?j-TD} zJ)iK~M)Mtb|L11E_@_0k6F+KfqN+|VK)VXYIT^+wo`k}o0p~i{NA8b8~tU%2d=`I*g9#q@c1jXNc4wDaNYx#e7&K-jnYm{RfubRn~_?)YOD zZu7?l4|o3Jw5(+&+SU=@sivc@Nf?E2;w?3J$oNSGN(#Y+xB~z={v_tt zD7TY&8wr_rz|}hyoyz>0X+>ueJV*pD2={Rp*XO(F7$yKytcEp#>x01NI`{;d&EcZS z$R>c&r9dyNe|*JR&pvt9a=hojnb3a$UknKCA!81~nAgHRu!gWQ@L!Qc3ViKW=C~D` z(C1miHypSeju*4RP@-384y>dCbb8GaWIejNCd_=)H$s&~ha*OzGe)P}MnZ;UHDij%MXYO_rQ7SgX!J997IzbBYqSIkTf7;GyoA{fnI{V5B# zlI(ph|3en63uqtf{CF3+5O$6azaQVaY%76#?Pa&DU$Nzem80`LYd=RYSliMvfQmEe z8sx_>+<5yjXZ5eV@cPMSK;nkUW=lH&PtC!v{{svxl>bl+h`q@EfMc9y)kSTqvMBvz z7OlK3B&w(l?P>+W$_DvvEgDnl-hcUI702i7e;M^KKg9b_a)#HZB@%PMw`{FhD$*zV zI(I6#6U&skE+-g>HQ93(tW*ZRELmQ_r#4iVcy+@sNgyGTqGsGi5$i4yvfzak=qN{U zA*9S1gZG|j*45pCq7of7dqmn?Ly`hJH6>vvg&?Pgb#MIuf* z*BLES9ioQ9LUGO)a<)0_1-@X&&7l*%b5AR{k4_R8wLqawKq0UO2lDxCZ(hvggvUYZmt$Zkb!CY`vvFG?&eepVp`bW_|UX&giD%1Xdq- zbtLQ`cQwK|AcNU)K&LxEW5CuxU*5>Pw(*&VH^3byLv937z-jdTEYCq75pvO_8~mqv zo4@X#@|r4-+31Bq!`-xDl~;qRWu@xZgdr8;Sq5 z`=>wMh0bL5pd#}#bS65AdA#QTfVYUh4R=BofKZ?Y*Oz9QCy#yRkGoKSbVI*kE`ZE5 zV(tD_(3k904Fb`eMqs_HV4Bb`4%~|#U_c5?9k_F10{0WTb%Hm`f!>6+8ras*5NFGl zpWywK4}RK5KMbc2_V`SIZG3-zKk@iz5!|n@x~V5>_v_LiMxg28_9y%3=E?_+a5vS6 zCedABV**80Nfkl+H~nAjJ>{fc{4BE@<(LOxhL@^kysUZ>k)^Dywd}x!ds8WLcNb(S zu7|scwyD`p8lD9uub&+f2onkP`lekMbzY6z$BP_|5P5w!LNWACmz?uPZVg zGWU5v2|PPd^B(!AHLzVfCE6M;oZS|hZJyj#6xh(_buzp$+HrnVx%d2-W@~xVjl;W4$?6!bxM4KYJ8Jy4txNzQKZuWTCKk^SOqR?2IMLVQ8u zD3SPrl#(;eGkcmR+_vU^sdTE9S6bFIzP|0M8NYhO>R;(rO_;HR$z9ta61MQs3VR@+ zwIoBE%@ZQr$s0cFn$i4f>54@6g>ltvto_P}6!0tqWbeUB0-*^{)*TeUx4wHc3RihD zSJIky2IP}2XK321odg!#SC()G?0zupPRJV!!{H+H2*J1nmeQ3l8tcyy9Zh_?D<>gJ z?Kl8_-XFGZg(>_35GyWaRQZ9Fam3tW|MrCi-s7o;-VL}|LEy0KNu%L@vax{VZMTVV~;{NxT6Ok zBQ{^%hPxWN)NMGR0Ii2r3KCc}bqeSXONoPtGMpQbD_2IioLq<6aEg&T)vi#r`3zHi zVp*%t2nY`hiRdoAuuH^UuQP$)dF+IW*W`&ZH=|>h%jvu~#@t+||NAgIOaH~$f#`=$ zHKZ|Y4XY-bb!MPHjJ;x+lv{QN3Hf^s4K?y($^-jE31g91^^z^NxGg_siJ7i$vTiPn zUfSZ?mLHz;sYmRgRetS+9mmh^TzzXfaANoT_sYJJ)rrpY6Y3T5uFGO_Sm7LG z#fW^dfPAUX!gVPQ7B1=J$HGGNRMVocY#sOqh)EDG6G461^;hJW+|fg1<+5_ec$$b6 znB<(a0Vv-KG#X^*_;B4dJO~s5^?QelMX5}rt=Rd^K<+hjQVwStX*rRd%-;w%xj@Q3 z1^3pXSc^vDk|o8`d@05PI|;UT&FLm)6nbCzR|w2H{A!38l$c zB#!$YjKx}6H6zHs>c06eT`>oes+$yJAaV_p2oLM09AstTwl&)}&0jscedFdWTj$U> z!Ju(4)95DB$bI1VqgUZRkOD~M^6_0NI;qPhQS6>|=bSfx-<@mr?wtpH^8D|A54uit z|NZ114anp-;2t91!Hi?2aZU2Hf{ms^7q9%M&h2ir8_mk7lE#i7toS_0pRGlcQ98&A zaQTzi#Z1FEM8EzS#yQ0H0?X_kG|H4vH}en(0Oq*t;QW6#Q1O*uGwud0?<@Y-s^wjsZtq?#Sls)E8&94NH%dbkH1y@J3UAA z0~txRYH}qlS~W>R8j!b)Q2P;6*J|V{v^Q5yLGpNVCAx9d)GFo+q${RuP(SrMdMj8e za3k^&{Y^CfQcNJ5A%==ZM+^$!0$6r7ZVV7-;k-^uZUDOY61oHl8$uVpkMIKA26WTf zFhMH;>8`W`pVppGC{`;Yc7JC;-qq}FR`Z6+{alMwWmWO7T{+)R7X!M%t_iz67Ev1H zf=n0g%LnD+Vy3gy6b?3NWD39BA@TFno2e?^i4$2q&4rYx+SoXhZA3_|6sv+_$yX0N zh9m-7thHT<(DoU>yT>w5NQwgl5zJe}WI70#tig+zn9Q*rf{7%MKqy2|!6JeR%_X>CiUXCD!+;B) zg4#b88!!m@pJ5#Vl_M@>k{%u^54~_zxu0W^k)^w4)!YCs`gMb)35PuvRvKaH0JU-< zC?jjv1#4GO%jJHBovhs^2Kx^@fqmuPBdwFk^hpcV3+qHx*MTfM8ft+6Gmu5ZH6klO zs0=A^`%zt-#eT{mBe4bq&76?=EeU8X~fh|4B750bQ^cKImJDaf@5F{us`%ef!*6=+% z4r>@7YsjvePD?}&?QJDG27X|{An>~sSn|PA;ql$!+zdw9_`r2%HuBp%o=l}<6UM!< zwf4S*y2mV*GP_~eKq=WC44+tz1~EpiRU)rsVyZlkXJdmEt~6_o>16DF2N>uqz|aC- znpX4a(`y_xKo{j32s>CQ;3X&a362aDon>wc=hUXIu3XTUQ~HYY2r1QO_frP%k)W&) zM1-b691Q2$$1M@}83~J8!#-nBeVhI^z}^P*bATP5@}=tRzi2oU0%jKzDDcros#dr@ zCi&`NGPg$CcYRj&{BO6Tj9At>!eeyD6WeGe5^It3RV)-Gm?d2;bpax z1tRP9eN6U!eWSCRAEYi}l8b|*rF4tO+7#v^m(A%h*gTi-#3&yKH--HHw8?BTRiH*P zsMnVh&c^1h42`3aj?svI01UPZhl8{`(B9-#ha2^FwOp*ig^i|DTDzl$us)d#chlIQ zclJ(MlqzJghK4Fhal2t|c&Zdn=99d2^}T%@x|<#YpMwO7)WFriBS{t|pgQ2BuHln* zDY$?hd<6t+20+T^0o&JsF5WTRPiz3UJCd?H&{3Z0W+MbNA4O6bM-&tK@*JUDtwv(z z#Socla2DZYqCaA`7)^2JvB!I@DUM2Ecz}8CO-+MAnb2_?TDVXn%99^JEeFB412jKG zqz=~ntw>jsr(_d?=Kl=9UPLteDrKV$R<|Rd=xp{it9XGUf_$j{9;FXf;GYUTksd%{ z;2jsh{#hWr`^dlqK5a_Etz=EF2b;=A=JaJh)4X3E_-6}pA9?cKZx)#|KMeqw7i=|p zf$jya(vyrCYmnC%tHwGiqTD~DlK&JP@1U0vBQ%>|G(uMmm4{yhmH!`FYjkhTeogd; z3xq-UeYyp3BukBkm`s%(V(nH3wc$|yt!J|iwp>3WQDAQ#+48~vT4eM<=OUX=)Quso znKg#4T{$;UvtuX07^>N^HDidFd0oU9Vh!0PW9Sp@*spy$jXv2*ssO);p-z7p%dsMA zWRYh-JBxf8H5_!qz?-dTc&Kma#jE-%EN7?%*RsZ7&5n0~F=&tpGmxz)FBEEQ5OKYvD2bU1vY@7UyqPRS z&*2oYeff)ONI_I(mHBqAy%cT4bel5VYw{=Qm@8eWB!+r(8H84K<8ieW`D_7$0jz+C z+w0RXSHZM_JBKiiHg*+e42ifj-jZ=N;yui}H>WU)$I3mMk$6-nq%Gz^%wSS$?Z{Wt z_wUj+fY`{|EJRcRcr{ZTG=G-B&w5RCnmwBaGnhpES<^TPmmEY-x_r=$So^fCui_o* z&#vg2Xy)s5%`#CeMDL?*mt;ysQ1X#T-fGiGoBJV>-y34S=Jte?@)83UdWANkmqY-l!c=X{{|Z@{%Mb z;PxKA0^p%*F+xZlxHJx(wiOefiZzYFhRG5i1Amr!b0J^@5 z%u9?=c6YHhDp?RJet=K%?8|;z=#mCh-dma8c%#$az87yb>VV9F=(7)xD(~6Hez&eOB z;h*0ZOOy;8^kKEzL6mDOCIl(=x1`+nX8d*$;}Nw9mXO(e*kz! z>sS&=K$wxp142+D&WNMJ2E~9qNKg!-VJvxn&{wf2jVVDQHj*xQvvG6U=h`f=+afB1 zi60YNlcw`SR-@l`;3@nA0_w|LT00O8W3w{YWHQQWdY7=#?&9-#d7fBr0vBsWnXA0}tV7h+`5={tY>_ zbNOeMLOUUL^I2pNk&W+TA3)=&tu;`V6~sF4Vyu(M2BOJG!nH&3X38r(cN9*&f*WG;rw$*4=KR)SLPh>R3`Qg@=otwnBMrZ3;_U#Bl8sQadztkiVJnlmGY10M4W$Dx_x5uC-k`6eJroJy z?aWn|mc2TVB?o?oj^32%QL7>QLh|Ol}6alHhat{go5zWGiidvkb zMt@)`9UJ9jwH$Hs@an#b-ZnVW5=mmcz&J}|k0%v!dn$oAc3b4pl*{pJyE70TwcFRc zO9=C@UYl}zi*CC_+qDutVYe#+PqU)9H|i0}dnQa032N5cAtDVxu^Ny_5|W!+;;%&x zuX90nx&Lp7ZV0eS^slz>0XLYd~lYOx!DCL4g2wi)ya*h=STn?mT7OZGXfL7xq5 zvID>SlRpsY{%eJ~>tE0K^=gH*zN=n?@jR?W1~xSj*ldP|1fSBGnj|M?DgFSY43a4y3n=;>*XzPKw;qnGDc?$^Fb~+X*6=p1vxFXV)bj0-H zH1qmn?ix6EAWYz?WA`pVV`Fo0um;3hW_1hUlDb{2gXc$x9Z&memkV%OZ4`nQ(&ztu>5o$2g;Qy%>40k zU8Bi_feU!Rr^5gPl+b**W=k6)MF^sXU6P6-*fxY(Q2xa3+2Ov*j~v=WQYw}N_1ZW` zC>-YTfI$;p=a1?e6)DyUY1C9O$Yjc^4dxg&sv4A*BpBRgOX9na)-8#5p+10cA<4uo z@gW;dt4Ug7gTY#3Wx4VwqRqN^oR-0yvsiiYqbxHjhGkd+^W;oYx$@Bp^X#LK)~wxk zaUMq2e`r^dMfCw)iQpk}sW!BhSom79?Qp)_-!eYm(MEHW7N5n8?L75aIDg5{f=*Y; zyt+9fA`?E7X>DD@<7l)#zg;M;Fu!^wvN7C<22g|)$icpP6a5J0t!Zc&I|LG@R?^6a zWCiO4HA7LH1N~^&@5{)M*rnE%eGREqE6y(3E&XlG({O*_qO{A76L!N?BQLx9^q&T! z0fZA@tkbME13bwH&k;c059Hes<~c2&$)la0JXfZWDWD&H;(P?7x1s*FE=g-SGd2at z+P$o7hfTD|x4?Ho6or_XD|J{xE}f#vGg$oN96S>;fowTSUdUue(>c6+wwN3nOf`*K3@?JirHFUT1u0nzeY5iC-^T#Gzjp06|6?RZ zS7FP)jYdstAR@Ea2x(nnflWd*T1{fH+MZ2x!G_8b$%WpXtr$h|P+umE>jFzDaXW*0 zBSIE)G#Rn+nLA)mBC*t5Jwow#xs)X$i${}3Vf|5~0b_@bkNh>y?R9u&^k~R>x)$wn zqAmF@Ul3UZ9~;rIk7DPp+*UrM5Rf9vznINvh)gCz5GG}f7GL-ABD z*od@i(QUi5y+*Z$xRY8h0QDqxm&=L%Wu@M0(@ZAd4Yh$!WU=Q`w#ruqv04LhaZsVG zN6G3cDb$_UW!XV$1Vot1cZkC3DW_SD_2AvVbDF~e1FN%sOLW$273QfwGOs*&JE#c> zJU&OP(>L)q0cR`wTpTMUS&l!PSYZ_-AAhslf0NnQtrUDry5MhK@(mul?IPaDVMGk` zue&Z%YS^{@A^IoGN{VK{LT9ZLT}@?b+4K@|ed_y5SF>+`4_IEPr(OR!!0Z!fw8|#i za5_$7o4pvu37ah!Zp54WhhQ_IlAJTYpoNTu_|#(_(tCw5(f@npqKY1xGI%bJ$X^z9tb%(8!s}(a%?c z9*l}nb!t7v3XRX-d17xI%1X*2kzCukRWS(52k&x1)IN6CKqWI9A$IH=DsM&@2M;`s z1CX9W@SY?JUq~MhTn6h+^dm@14QPK-mJL7YBx@%V>lt4-nMzeUXSVYBBse~xOr|F` zty;iG^JDRl|0uOp-*@0K9PG;&2NEfSnmS>07?j#aFA$xz7_?ogjRgq}PZh z(E>sa7a99*<~8a@h(5#KRxLiOz`8KH+6vZmkM_oc#*`>v%odLuk@-%a2r}=FrO2=x zMKq7F)78w*1!Mn`dAGVB#s)!B=LgpIVg37>?#ed!hda|nynmVp{*9>g%gs#DeEU<&+;rQuqUuLkp>v$P^-V5lS0(hE=b zcOnc^xQtfLVdk|mb1<*d-r6FAQ%?<56$WN5Oap?TRQOPIHY94$XAEK}MeWc!COs2QAeH{&JR&IY!LY z99l00yRQtp?~n9ll;}gaA$gMgBaGPce9QjjbqHT5GEYHoAG=q-!@eh=zV~a{7ItHH zGOr~5yuS66@%l|)%$@z1oB0{sH&azph3fN!y6|R!WWjOovR^wM2D(?*fxKH$qq_=< zB3Ilz@I!jwEd&ob)07r!GzQ?6jihF7Ep!G+Lu?|K)0-w4bs`wEs@irYVv=k+pb%_l zmk;8VHA1Dy719&LmJ5p2;1<^213krx72@!d4(yK2fCM{teEhbK_GMG2_eMk6#uz+; ziClq7Q^+n78uebSa!gz5si=fF80_12jJx2oj5LiRWOKyzMo%mZLQM%$AnMCodq-M_ zGDd|;uMCb3M|;4MymL@7ozL%_h8Q|VPEXT;H;0=_iC($D;By2or-w$6(byk^9dl1X zt(GP(d)}2U)+@j;(=QUvR3y< zG9r_JXAuu-U5-|x+DNbGmNY!j3%a-$g3d5HwU=IoE~DQDO-8ARI|`Pb4m=qUAu_x- z-Y9b!WQ`HHz1N_T(THBnONiurzCP}uRSKDg1_uIix%hO{Mb83+kXeCeX=*D>G~ZIu z#3Rd>9~FyrwnG_Yi`C`}n@ornOm}pJLns{S^qLGheTcP%e#~aYXj0X{#v1 zHl)#!VsN%RoZVn-whf*kNmopkAw8GZ*s4@D3bc@Q6E+|uv^aPil6zy$?C*cxua(47 zGCbG-rB@AHzQzL4Ag@);;cL41#xO#1#L=RdDr%6LnXffSVHurr%!j;(3?a!Iw_yI$AdYT|n@1s=r-Go)^d*) zVv=|aHRFx8}x>-M%67-1Q)t=b&0N z38E5YCt|Ns)7JBm+^aVODVoEWw)xsJaUQcBViqocYu?NH2{ItltLu#?wsu5}AzdO7 zDnWUKy?fjYo{Gg3?(a)AwCQID$2$^MIY~L+2tbfQdd%3-m)Ifae;KUSl$T)X#82H z+Nx5deL6>D!Viv_GuG@-W#_m^Y*DJk0%@ZI>=tXx@8Mi+&Z6s8^U;J;WrsJn*;3f8 zPqk`HNTabAvOYmf+1u2b@OXkg0gGJ<&#~A=spUt&uI5aAeC_{hY#*^T#RCy!f<=`; zvA;=eGOBdP{-?+@k5~~hT4Osk_z{`Yxwdq1VCfm$C7LMKhhm2{XVO zut7-Zh;Reg>ge^R!sJvwj|f4)gByATwyktdT7;c9Sg_)a$7 zodQc3@L`h)Faay+NRk9GxI36Xz4-!}oaeK-aA$MO87R=fKyx6c@T81Ag~(KAJNm}D zzOeS;@N*oj(7H2ptRdV|ZgM!Wo~O*}3~E$pg4x$sPh_KT@JNsfD&=dQ4+Q;*y;n0a zfcw}OGQdRwo-jWNfRa)V*8`EQyEeI_0o>SDYV3`t^0-C8%TwlwujPy~~`4 z`}`)phhulh^~He9V#>NDMzaoNLyS4OP*4YK`T?NmhUy2{4eJRpY_5wyLF&@k2sVL~ zuq2yL;FrZ?9huG?VI0Nel7g)6q zPrwntk{MFm2PdHlNehW$l#MtX7^=9PGObxmcN7s8D@27-UL;ovMsittdLzb}RCBLe z5$tsW1I8L1eR`B~JK-rpgODra7^i#fT7zh>>ntuOp6Fkb$gFG*xRI<|s8BlXZU@Qg zTA?09gg3*kBH2MDd2j;=k|OW)Vc~TD)S2*3?>|612s}^^P>fv|c>Nz?A8i`_L3w#^V^n_f(3!Fovv=N#vDe)jh@rjA zLfBNIHvlGkt6zircSDqgRPqp6R8vrd#_aZ`$zrpFCaXcPsXcN;HWK9~X z%7h$BquidbPp4lVRY zFp&O^m|f@=i9lgCgiR8M5?mjRHlozYlt!PVL90+e(uC(oY2+egX1pH6!5i;S~UdaFp2XZ0ZrmO5U^W}XVoJ;#55+Mtfgp=|BN#Z4ft%{L&g|^^?42= zOEgG&*0ZPU5hD^`dhU!fI7=a>r}r?wXM@dblnFz;8POEPn`!oq4KN-5$WdpSI^&ET zhYvj8y61Zbg`P=3`@_&PzzB%M^)H$=6J}ADv zd1b=J@w;+rIv3eG;41~eLij5z6uA~aaRM6J_C3++HLa6m19Ar|P|qh_xJ#5asud!o1$2|fci81jB%LmobA8vbZjDB%b31jqM*LLV z4d;?^m#h0!gE6DCXmuUz)9f~Yd4gfL8bW9$nam+V9P-_v zgixGGtaOODi(e6>$KWg3N7Vuf!TyALEG}WsC1Z~uS+ff=NToMf-M#?CmDI+pMxv64 zmAc@xDxftR^f9x^qL3@0f?O&krDw3rW{Sb<$c`s*VTNI_xlGaUS2}n|OJ52)+e2(6 zsFi?M$SR=th{ci^P7uU|axdXym+QR zDj`qEnu{fPK$aD>G-QvCqIS?f1}scOo2mF|oiEOZryLIf2G}>Nt7n&X?AR9TOMzJd z&+aybLr_xyFZY#-q!sx&i+QI%qm8&l)MX)$;}*NKMGv2==YZwG+;tU6xxk->fWIfh zgL&_Q43Y@yA)wZAQHy6k9RfS3w-< gJFbX$=9Up+tZom>0bO49(#aVDj*^3+yGT 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 literal 0 HcmV?d00001 From c82fc9b415871109bbd67bf6d99633fcfc5cf52e Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:15:52 +0530 Subject: [PATCH 04/10] modified make_filename_valid function Modified the function to prevent it from removing Hindi matras and also to remove invalid characters for image name --- trdg/utils.py | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/trdg/utils.py b/trdg/utils.py index 4084fa7150..5b326167b9 100644 --- a/trdg/utils.py +++ b/trdg/utils.py @@ -111,26 +111,14 @@ def draw_bounding_boxes( def make_filename_valid(value: str, allow_unicode: bool = False) -> str: - """ - Code adapted from: https://docs.djangoproject.com/en/4.0/_modules/django/utils/text/#slugify - Convert to ASCII if 'allow_unicode' is False. Convert spaces or repeated - dashes to single dashes. Remove characters that aren't alphanumerics, - underscores, or hyphens. Convert to lowercase. Also strip leading and - trailing whitespace, dashes, and underscores. - """ - value = str(value) - if allow_unicode: - value = unicodedata.normalize("NFKC", value) - else: - value = ( - unicodedata.normalize("NFKD", value) - .encode("ascii", "ignore") - .decode("ascii") - ) - value = re.sub(r"[^\w\s-]", "", value) - - # Image names will be shortened to avoid exceeding the max filename length + #remove spaces if in last character only + value = re.sub(r'\s+$', '', value) + + #replacing invalid characters with underscores + value = re.sub(r'[:?<>|*$`]', '', value) + + # Truncate the resulting string to a maximum length of 200 characters return value[:200] From 8efcab7e9535a558ba1149888589f0866d97c143 Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:18:17 +0530 Subject: [PATCH 05/10] Added try catch block to save image Try catch block skips the image if OSError 22 occured --- trdg/data_generator.py | 44 +++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/trdg/data_generator.py b/trdg/data_generator.py index f96d554845..06647fdf91 100644 --- a/trdg/data_generator.py +++ b/trdg/data_generator.py @@ -268,23 +268,27 @@ def generate( tess_box_name = "{}.box".format(name) # Save the image - if out_dir is not None: - final_image.save(os.path.join(out_dir, image_name)) - if output_mask == 1: - final_mask.save(os.path.join(out_dir, mask_name)) - if output_bboxes == 1: - bboxes = mask_to_bboxes(final_mask) - with open(os.path.join(out_dir, box_name), "w") as f: - for bbox in bboxes: - f.write(" ".join([str(v) for v in bbox]) + "\n") - if output_bboxes == 2: - bboxes = mask_to_bboxes(final_mask, tess=True) - with open(os.path.join(out_dir, tess_box_name), "w") as f: - for bbox, char in zip(bboxes, text): - f.write( - " ".join([char] + [str(v) for v in bbox] + ["0"]) + "\n" - ) - else: - if output_mask == 1: - return final_image, final_mask - return final_image + try: + if out_dir is not None: + final_image.save(os.path.join(out_dir, image_name)) + if output_mask == 1: + final_mask.save(os.path.join(out_dir, mask_name)) + if output_bboxes == 1: + bboxes = mask_to_bboxes(final_mask) + with open(os.path.join(out_dir, box_name), "w") as f: + for bbox in bboxes: + f.write(" ".join([str(v) for v in bbox]) + "\n") + if output_bboxes == 2: + bboxes = mask_to_bboxes(final_mask, tess=True) + with open(os.path.join(out_dir, tess_box_name), "w") as f: + for bbox, char in zip(bboxes, text): + f.write( + " ".join([char] + [str(v) for v in bbox] + ["0"]) + "\n" + ) + else: + if output_mask == 1: + return final_image, final_mask + return final_image + + except Exception as e: + print("Error while saving the image: {}".format(e)) From 655d086a369e030dc46c7dc1fb8ced00df715900 Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:25:34 +0530 Subject: [PATCH 06/10] Added Hindi Sample 30.jpg --- samples/30.jpg | Bin 0 -> 3405 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 samples/30.jpg diff --git a/samples/30.jpg b/samples/30.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b2e2de44a7f5ed8f8a33087c3b97f05037d88add GIT binary patch literal 3405 zcmbW%c{J2*`vCCom>DznC1e?67*Zp$jD0ky$5L-dqC}~&ge)WLJlV1o*_X0q2@TI< zkFkd=gPu$=cF7V-))*pYetO>DdEaw>fBoL~y3c+8b6@8=*XP{#xmaVY8G!$Sk*N^? z0s#Q%XaTHA;2Z#FXNR#v;V>ACg9FaVEyTmk#lJmGN;i9 z#7WIlrM+tTO02>GlW`lsCPzdBGJNW1xfCxYZ zrBw{rk6peElOYPJh9?)m(T3F>!j>O4WYzBYJmlaMIW8(DE_XuyPP<87*^MB^$FjwOoY3AYC&9yQtr%Szig9PHPO=DoCF;S+LGV}}K3y`)GioJ*46HtmIgs8UN=b1N;kE0%d) zK5oG~@*MEtbnCd;{;WkLo{8Av>o2|Zd*xm6w22nmt8v~_O>)Dvq+~A*YwySNyP*n> zVdmP%c`WG5jm)$X-4IWc)gkiU`h~6_x03u+dTO2-3n-R#I%rwFO5E+$o?M-5+gr73 z36UAC@Z&L>9z9=^qN|YjswHLl?9CNmocfgby^3k~9%ikP(Wz{Zpq9|e0;HIYMY>h& zLme|Na&0s{g@Ns0(hiT(x?O}>RqViy^V91}brekb^M*wnDE$lm&7aFRG0mIMqNfoT zYqO>mnjKZIyR8Tp`AYy!iODINBnOfO?4^PON6dhk3A&U8FqZZPS0w{65-1hnrQJ|| zKLxI@W%3_ZMDA7;QXD;O78OwthW*FvYs#={{+ruI87~oq*dMa;mOfRx6 zoo_(xd;RX?uRlmO(q41HKI;RKcXdd5EsONMtO83%P6@7z#u;XG0SkzHYd^{R0Pngr z-5U0>REm*bMPOF09X#63=N-SA_?Pm9he4vu&?t4G6I04>7+UKGTXt5jvBQ?WwTWhf zb(J-QZyIxl3IUhr-+pTY** z{dQp&>*h8}y-m$4N=97mi@EhaI1IJq?$Qd}aL+*dymaKLE5gtsYQ3)|nvJsn@oQw` zSk0K-o-bn8;o7(E`J=Ve7qeD(3g*1(4zn)}S+anC)F0;v_A2GTRdv+lEpN0(IaqAI zvwN?^xWs2v-yrUvA+mA$wckh?S}_d(UZ8}a?VLJy!t|hN(RiiV_%X%jE&D?cy1}>a zrQ_nZrOXE!?KQj3$_!&m{J1>0%&#d4HDR-oVKDqQO}Gc+MshBIm=<4uZaw{7N@HL5 zyX}nGdSqzo;s9Kp0s_|ozw`TRPn>&gJ}O4tWBO)bYz@gMha5+yQ2QW?-FRXtMb&&X zCqz==nB69H`Ux(T1vud-Dv+Qxp7wLmT9e{_{$gLL^eo_0`}eUmF_`q@Wxo2+y}_Dv zo`;kAqBNr2d9`Jqz_*quikMSMvvmo|x2$eU^bAaf+&aVQ{YWqL%4NI2Ip(NEZ2NUr z!D&-(3JY*~WOI6Xg_OKNOkk#grWW`vk%6%!M11{?!!NJU0lZGo(OWGf4-)@@ELFtzcS9=PIuD$gO;%Y65DM{J6Y4ux-5nN@+ zyGMI~G+OxOxTa>7T;%QtjNMy!0Q`-9;LLZJti#XyjC`*8q$k-DPl%_h_L9?FBBLDp z8L;ZbhIjZ5s^KtBCt2^~Hj!h#AxLrpRW1gs$VT;P%}?3f-{Nlsqqcg~sK0zA$YSIB zG!#i3n7{JICeL+9(eran;~;iC_oA0Nm-)gfMg|pMY&1)=J2{UV*5m6GFSGT0e&20m zq&|-z^2#9C&2db`*ujcj6t9We2&~wAZD+y(a4V5wtwN43&g6oShbO_&?`yNiQr~P& zU+<6M%_a)Xrh4`ej`OT}2kyN1*{K>mq9tm?Uw`Q27QJ4pkF&WAWIx1f z6EFq-JYmv@Ut$#P?WJE^y%HDQ6M9zfB*;G^TtZNXpTunguKX$}8DN#=pMZ)a~0xKv|Nguip5nJw^wfa}RzioVrB33*;ZiDJ721jiPrAPod!rC-6 za;|y$BD6m|*H|CFPanCem?EL|`51L8pBHcW!E<5LqnPn2yVO+?Q|l^jRPKdB#s9FU ziK6ua^$fnIQwc}6ZD_lfWPVe2gYh>jQ;Oe#+*a@b5D=8?TNSI+@Ywlw7> zNyol2gHM8W?FQK^odgxTlFT8c*kdKIw|?@jXwln!y}K26hB^mteG1Go8&Ntt;%Pm3 zC`Yiu7*aS-;+2NtTn3wcsLuM_CVH=OLvN;E-~Q=ON7D^6Djtf)JqfczdXLS71xa@7 z=Y;uCZi*&aYy{IDt(RTO+2}W%GUTv%_QU1eXs%jnM=#FW(uYg^vB^Vb)z|9Hpn1x_h!;Pnn?pO@0yITx zl<{aW4(k>Fq#y=+v)om9b7p3mV``6i<=*rf-|pDR`~)D#p2U_Q{pSs(wQI-c=da=2UI@g z9Tj#xz`M-F>+~**pQo6*;xoNGyG`MIMwin&LH!J5tGmon=OsdAzi+ErZ>@W|`e<(= z{6b5#(E+;}L-1>kE4-iubnL$g;z$bA`t#k zORWHrbmq~T@6Xkn)c_3!6fofUKIJpQ;>M`^2Refsr8 zrh~~uM~u^!?6lEFS);C&Ha=$C(IZc#1N^grCbiVYAjA7Ek;M=W%v#XW{^&yp$@p=F zN2Q-cb9U>NG0;F90647>TJvr9c!yv5LPyl41SXb6h7{9RH2z534e+q;gV7O4_dgv( zc|rRTR`~24koJs&LpT+2h&MPVle2=R=O8K<82Nmx@&5tn CGc{oV literal 0 HcmV?d00001 From 6ceea72f8f47d1a821d8b20b6a8f39814d308adf Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:32:06 +0530 Subject: [PATCH 07/10] added Hindi support for ReadMe.md It shows the Hindi text generation and sample of Hindi image --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 8381e9ca10..b115f96681 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,15 @@ Output ![29](samples/29.jpg "2") +## Create images with Hindi text + +It is simple! Just do `trdg -l hi -c 1000 -w 5`! + +Output + +![30](samples/30.jpg) + + ## Add new fonts The script picks a font at random from the *fonts* directory. @@ -184,6 +193,7 @@ The script picks a font at random from the *fonts* directory. | fonts/ko | Korean | | fonts/ja | Japanese | | fonts/th | Thai | +| fonts/hi | Hindi | Simply add/remove fonts until you get the desired output. From 4f1c92a6866c9221f102eb28ddae76dd70308c73 Mon Sep 17 00:00:00 2001 From: Prathamesh Zade <46810093+prathameshza@users.noreply.github.com> Date: Thu, 8 Feb 2024 22:42:33 +0530 Subject: [PATCH 08/10] Delete trdg/fonts/hi/Readme.md Deleted the file as it was creating OSError --- trdg/fonts/hi/Readme.md | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 trdg/fonts/hi/Readme.md diff --git a/trdg/fonts/hi/Readme.md b/trdg/fonts/hi/Readme.md deleted file mode 100644 index 886de22d49..0000000000 --- a/trdg/fonts/hi/Readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Added Gargi font for better Hindi Matras seperation -## Installation -In Debian/Ubuntu based system you can install it by downloading the gargi.ttf file and using local font installer as follows -![font_install](https://github.com/prathameshza/TextRecognitionDataGenerator/assets/46810093/1284d447-5187-484b-be26-f3738b9a0031) - - -Another way is to use a [Font Manager](https://itsfoss.com/font-manager/) - -Direct Download link [Gargi Font](https://fontsgeek.com/gargi-13-font) From 28486e1ade14b8c3f8557b2beabca130d19a7f98 Mon Sep 17 00:00:00 2001 From: Prathamesh Zade Date: Fri, 16 Feb 2024 16:49:09 +0530 Subject: [PATCH 09/10] custom bbox for jupyter --- bbox.py | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) create mode 100644 bbox.py diff --git a/bbox.py b/bbox.py new file mode 100644 index 0000000000..bfdcaf60f8 --- /dev/null +++ b/bbox.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +import sys +import os +import time +import argparse + +import torch +import torch.nn as nn +import torch.backends.cudnn as cudnn +from torch.autograd import Variable + +from PIL import Image + +import cv2 +from skimage import io +import numpy as np +import craft_utils +import imgproc +import file_utils +import json +import zipfile + +from craft import CRAFT + +from collections import OrderedDict +def copyStateDict(state_dict): + if list(state_dict.keys())[0].startswith("module"): + start_idx = 1 + else: + start_idx = 0 + new_state_dict = OrderedDict() + for k, v in state_dict.items(): + name = ".".join(k.split(".")[start_idx:]) + new_state_dict[name] = v + return new_state_dict + +def str2bool(v): + return v.lower() in ("yes", "y", "true", "t", "1") + +# define arguments +class Args: + test_folder = '/data/' + trained_model = 'craft_mlt_25k.pth' + text_threshold = 0.7 + low_text = 0.4 + link_threshold = 0.4 + cuda = False + canvas_size = 1280 + mag_ratio = 1.5 + poly = False + show_time = False + refiner_model = 'craft_refiner_CTW1500.pth' + refine=False + +args = Args() + + +""" For test images in a folder """ +image_list, _, _ = file_utils.get_files(args.test_folder) + +result_folder = './result/' +if not os.path.isdir(result_folder): + os.mkdir(result_folder) + +def test_net(net, image, text_threshold, link_threshold, low_text, cuda, poly, refine_net=None): + t0 = time.time() + + # resize + img_resized, target_ratio, size_heatmap = imgproc.resize_aspect_ratio(image, args.canvas_size, interpolation=cv2.INTER_LINEAR, mag_ratio=args.mag_ratio) + ratio_h = ratio_w = 1 / target_ratio + + # preprocessing + x = imgproc.normalizeMeanVariance(img_resized) + x = torch.from_numpy(x).permute(2, 0, 1) # [h, w, c] to [c, h, w] + x = Variable(x.unsqueeze(0)) # [c, h, w] to [b, c, h, w] + if cuda: + x = x.cuda() + + # forward pass + with torch.no_grad(): + y, feature = net(x) + + # make score and link map + score_text = y[0,:,:,0].cpu().data.numpy() + score_link = y[0,:,:,1].cpu().data.numpy() + + # refine link + if refine_net is not None: + with torch.no_grad(): + y_refiner = refine_net(y, feature) + score_link = y_refiner[0,:,:,0].cpu().data.numpy() + + t0 = time.time() - t0 + t1 = time.time() + + # Post-processing + boxes, polys = craft_utils.getDetBoxes(score_text, score_link, text_threshold, link_threshold, low_text, poly) + + # coordinate adjustment + boxes = craft_utils.adjustResultCoordinates(boxes, ratio_w, ratio_h) + polys = craft_utils.adjustResultCoordinates(polys, ratio_w, ratio_h) + for k in range(len(polys)): + if polys[k] is None: polys[k] = boxes[k] + + t1 = time.time() - t1 + + # render results (optional) + render_img = score_text.copy() + render_img = np.hstack((render_img, score_link)) + ret_score_text = imgproc.cvt2HeatmapImg(render_img) + + if args.show_time : print("\ninfer/postproc time : {:.3f}/{:.3f}".format(t0, t1)) + + return boxes, polys, ret_score_text + + + +# if __name__ == '__main__': +# load net +net = CRAFT() # initialize + +print('Loading weights from checkpoint (' + args.trained_model + ')') +if args.cuda: + net.load_state_dict(copyStateDict(torch.load(args.trained_model))) +else: + net.load_state_dict(copyStateDict(torch.load(args.trained_model, map_location='cpu'))) + +if args.cuda: + net = net.cuda() + net = torch.nn.DataParallel(net) + cudnn.benchmark = False + +net.eval() + +# LinkRefiner +refine_net = None +if args.refine: + from refinenet import RefineNet + refine_net = RefineNet() + print('Loading weights of refiner from checkpoint (' + args.refiner_model + ')') + if args.cuda: + refine_net.load_state_dict(copyStateDict(torch.load(args.refiner_model))) + refine_net = refine_net.cuda() + refine_net = torch.nn.DataParallel(refine_net) + else: + refine_net.load_state_dict(copyStateDict(torch.load(args.refiner_model, map_location='cpu'))) + + refine_net.eval() + args.poly = True + +t = time.time() + +def getbboxes(image_path): + image = imgproc.loadImage(image_path) + bboxes, p, s=test_net(net, image, args.text_threshold, args.link_threshold, args.low_text, args.cuda, args.poly, refine_net) + return bboxes \ No newline at end of file From c54475264bb59ebf8b819141bb8ad9db1bb44402 Mon Sep 17 00:00:00 2001 From: Prathamesh Zade Date: Fri, 16 Feb 2024 16:51:21 +0530 Subject: [PATCH 10/10] Delete bbox.py --- bbox.py | 156 -------------------------------------------------------- 1 file changed, 156 deletions(-) delete mode 100644 bbox.py diff --git a/bbox.py b/bbox.py deleted file mode 100644 index bfdcaf60f8..0000000000 --- a/bbox.py +++ /dev/null @@ -1,156 +0,0 @@ -# -*- coding: utf-8 -*- -import sys -import os -import time -import argparse - -import torch -import torch.nn as nn -import torch.backends.cudnn as cudnn -from torch.autograd import Variable - -from PIL import Image - -import cv2 -from skimage import io -import numpy as np -import craft_utils -import imgproc -import file_utils -import json -import zipfile - -from craft import CRAFT - -from collections import OrderedDict -def copyStateDict(state_dict): - if list(state_dict.keys())[0].startswith("module"): - start_idx = 1 - else: - start_idx = 0 - new_state_dict = OrderedDict() - for k, v in state_dict.items(): - name = ".".join(k.split(".")[start_idx:]) - new_state_dict[name] = v - return new_state_dict - -def str2bool(v): - return v.lower() in ("yes", "y", "true", "t", "1") - -# define arguments -class Args: - test_folder = '/data/' - trained_model = 'craft_mlt_25k.pth' - text_threshold = 0.7 - low_text = 0.4 - link_threshold = 0.4 - cuda = False - canvas_size = 1280 - mag_ratio = 1.5 - poly = False - show_time = False - refiner_model = 'craft_refiner_CTW1500.pth' - refine=False - -args = Args() - - -""" For test images in a folder """ -image_list, _, _ = file_utils.get_files(args.test_folder) - -result_folder = './result/' -if not os.path.isdir(result_folder): - os.mkdir(result_folder) - -def test_net(net, image, text_threshold, link_threshold, low_text, cuda, poly, refine_net=None): - t0 = time.time() - - # resize - img_resized, target_ratio, size_heatmap = imgproc.resize_aspect_ratio(image, args.canvas_size, interpolation=cv2.INTER_LINEAR, mag_ratio=args.mag_ratio) - ratio_h = ratio_w = 1 / target_ratio - - # preprocessing - x = imgproc.normalizeMeanVariance(img_resized) - x = torch.from_numpy(x).permute(2, 0, 1) # [h, w, c] to [c, h, w] - x = Variable(x.unsqueeze(0)) # [c, h, w] to [b, c, h, w] - if cuda: - x = x.cuda() - - # forward pass - with torch.no_grad(): - y, feature = net(x) - - # make score and link map - score_text = y[0,:,:,0].cpu().data.numpy() - score_link = y[0,:,:,1].cpu().data.numpy() - - # refine link - if refine_net is not None: - with torch.no_grad(): - y_refiner = refine_net(y, feature) - score_link = y_refiner[0,:,:,0].cpu().data.numpy() - - t0 = time.time() - t0 - t1 = time.time() - - # Post-processing - boxes, polys = craft_utils.getDetBoxes(score_text, score_link, text_threshold, link_threshold, low_text, poly) - - # coordinate adjustment - boxes = craft_utils.adjustResultCoordinates(boxes, ratio_w, ratio_h) - polys = craft_utils.adjustResultCoordinates(polys, ratio_w, ratio_h) - for k in range(len(polys)): - if polys[k] is None: polys[k] = boxes[k] - - t1 = time.time() - t1 - - # render results (optional) - render_img = score_text.copy() - render_img = np.hstack((render_img, score_link)) - ret_score_text = imgproc.cvt2HeatmapImg(render_img) - - if args.show_time : print("\ninfer/postproc time : {:.3f}/{:.3f}".format(t0, t1)) - - return boxes, polys, ret_score_text - - - -# if __name__ == '__main__': -# load net -net = CRAFT() # initialize - -print('Loading weights from checkpoint (' + args.trained_model + ')') -if args.cuda: - net.load_state_dict(copyStateDict(torch.load(args.trained_model))) -else: - net.load_state_dict(copyStateDict(torch.load(args.trained_model, map_location='cpu'))) - -if args.cuda: - net = net.cuda() - net = torch.nn.DataParallel(net) - cudnn.benchmark = False - -net.eval() - -# LinkRefiner -refine_net = None -if args.refine: - from refinenet import RefineNet - refine_net = RefineNet() - print('Loading weights of refiner from checkpoint (' + args.refiner_model + ')') - if args.cuda: - refine_net.load_state_dict(copyStateDict(torch.load(args.refiner_model))) - refine_net = refine_net.cuda() - refine_net = torch.nn.DataParallel(refine_net) - else: - refine_net.load_state_dict(copyStateDict(torch.load(args.refiner_model, map_location='cpu'))) - - refine_net.eval() - args.poly = True - -t = time.time() - -def getbboxes(image_path): - image = imgproc.loadImage(image_path) - bboxes, p, s=test_net(net, image, args.text_threshold, args.link_threshold, args.low_text, args.cuda, args.poly, refine_net) - return bboxes \ No newline at end of file