
    Yh|                     D   d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZ d dlT ddlmZ ddlZddlZddlZddlZddlZddlmZ ddlmZ ddlZddlZej        d         d	k    rdd
l m!Z! ddl"m#Z# ddl$m%Z% nddl&m#Z# ddl'm%Z%  ee(          Z) G d de*          Z+dS )   )get_recognizerget_text)group_text_boxget_image_listcalculate_md5get_paragraphdownload_and_unzipprintProgressBardiffreformat_inputmake_rotated_img_listset_result_with_confidencereformat_input_batchedmerge_to_free)*    )get_displayN)Image)	getLogger   )open)urlretrieve)Pathc                       e Zd Z	 	 	 	 	 d dZd Zd Zd	 Zd
 Zd Zd Z		 	 	 	 	 d!dZ
	 	 	 	 	 	 d"dZ	 	 	 	 	 	 	 	 	 	 d#dZ	 	 	 	 	 	 	 	 	 	 d#dZ	 	 	 	 	 	 	 	 	 	 	 d$dZdS )%ReaderTNcraftstandardFc           
      (   |
| _         || _        t          dz   | _        |r|| _        t	          | j                                      dd           t          dz   | _        |r|| _        t	          | j                                      dd           t          j        	                    | j                   |du r$d| _
        |
rt                              d           n|du rut          j                                        rd| _
        nVt          j        j                                        rd	| _
        n+d| _
        |
rt                              d
           n|| _
        t$          | _        t&          | _        ddg| _        |f| _        || _        |r|                     |          }i }|dgd t&          d         D             z   d t&          d         D             z   v r|d t&          d         D             v r$t&          d         |         }d}|d         | _        n|d t&          d         D             v r$t&          d         |         }d}|d         | _        nt3          |          t3          t4                    z
  }|t3                      k    rt7          |d          |dgk    r0|                     d|dgd           t&          d         d         }d}n1d|v r1|                     d|ddgd           t&          d         d         }d}nd |v r1|                     d!|d dgd"           t&          d         d#         }d}nd$|v r1|                     d%|d$dgd&           t&          d         d'         }d}nd(|v r1|                     d)|d(dgd*           t&          d         d+         }d}n]d,|v r1|                     d-|d,dgd.           t&          d         d/         }d}n(d0|v r1|                     d1|d0dgd2           t&          d         d3         }d}nd4|v r1|                     d5|d4dgd6           t&          d         d7         }d}nd8|v r1|                     d9|d8dgd:           t&          d         d;         }d}nt3          |          t3          t:                    z  r8|                     d<|t:          dgz   d=           t&          d         d>         }d}n-t3          |          t3          t<                    z  r7|                     d?|t<          dgz   d@           t&          d         dA         }d}nt3          |          t3          t>                    z  r7|                     dB|t>          dgz   dC           t&          d         dD         }d}nwt3          |          t3          t@                    z  r7|                     dE|t@          dgz   dF           t&          d         dG         }d}ndH| _        t&          d         dI         }d}|dJ         | _!        tD          j        #                    | j        |dK                   }|	rtD          j        $                    |          dk    r| j        stK          dL|z            t                              dM           tM          |dN         |dK         | j        |
           tO          |          |dO         k    sJ tP                      t          )                    dP           ntO          |          |dO         k    r| j        stK          dQ|z            t                              tP                     tE          j*        |           t                              dR           tM          |dN         |dK         | j        |
           tO          |          |dO         k    sJ tP                      t          )                    dS           | +                    ||           ntY          tD          j        #                    | j        |dTz             dUV          5 }t[          j.        |tZ          j/        W          }dXdXdX           n# 1 swxY w Y   |dY         r|dY         a0|dZ         }|                     |||tc          |                     |d[         | _!        |d\z   }tD          j        #                    | j        |          }| +                    ||           i }|D ].}tD          j        #                    td          d]|d^z             ||<   /|r| 3                    |          | _4        |	rR|dk    rd_d`d`da}n|dk    rd_dbdbda}n|dc         }tk          ||| j!        |||| j
        |d          \  | _6        | _7        dXS dXS )eaD  Create an EasyOCR Reader

        Parameters:
            lang_list (list): Language codes (ISO 639) for languages to be recognized during analysis.

            gpu (bool): Enable GPU support (default)

            model_storage_directory (string): Path to directory for model data. If not specified,
            models will be read from a directory as defined by the environment variable
            EASYOCR_MODULE_PATH (preferred), MODULE_PATH (if defined), or ~/.EasyOCR/.

            user_network_directory (string): Path to directory for custom network architecture.
            If not specified, it is as defined by the environment variable
            EASYOCR_MODULE_PATH (preferred), MODULE_PATH (if defined), or ~/.EasyOCR/.

            download_enabled (bool): Enabled downloading of model data via HTTP (default).
        z/modelT)parentsexist_okz/user_networkFcpuz7Using CPU. Note: This module is much faster with a GPU.cudampszdNeither CUDA nor MPS are available - defaulting to CPU. Note: This module is much faster with a GPU.r   dbnet18r   c                     g | ]}|S  r&   .0models     a/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/easyocr/easyocr.py
<listcomp>z#Reader.__init__.<locals>.<listcomp>a   s    +Z+Z+ZeE+Z+Z+Z    gen1c                     g | ]}|S r&   r&   r'   s     r*   r+   z#Reader.__init__.<locals>.<listcomp>a   s2      ^M  ^M  ^Mhm^c  ^M  ^M  ^Mr,   gen2c                     g | ]}|S r&   r&   r'   s     r*   r+   z#Reader.__init__.<locals>.<listcomp>b   s     O O O5 O O Or,   generation1model_scriptc                     g | ]}|S r&   r&   r'   s     r*   r+   z#Reader.__init__.<locals>.<listcomp>f   s    "Q"Q"QU5"Q"Q"Qr,   generation2zis not supportedenenglishz["en"]
english_g2ththaiz["th","en"]thai_g1ch_trachinese_traz["ch_tra","en"]	zh_tra_g1ch_simchinese_simz["ch_sim","en"]	zh_sim_g2jajapanesez["ja","en"]japanese_g2kokoreanz["ko","en"]	korean_g2tatamilz["ta","en"]tamil_g1teteluguz["te","en"]	telugu_g2knkannadaz["kn","en"]
kannada_g2bengaliz["bn","as","en"]
bengali_g1arabicz["ar","fa","ur","ug","en"]	arabic_g1
devanagariz["hi","mr","ne","en"]devanagari_g1cyrillicz-["ru","rs_cyrillic","be","bg","uk","mn","en"]cyrillic_g2latinlatin_g2
charactersfilename!Missing %s and downloads disabledzqDownloading recognition model, please wait. This may take several minutes depending upon your network connection.urlmd5sumzDownload complete.*MD5 mismatch for %s and downloads disabledzxRe-downloading the recognition model, please wait. This may take several minutes depending upon your network connection.Download completez.yamlutf8encoding)LoaderNimgH	lang_listcharacter_listz.pthdict.txtr   i   )input_channeloutput_channelhidden_size   network_params)devicequantize)8verbosedownload_enabledMODULE_PATHmodel_storage_directoryr   mkdiruser_network_directorysyspathappendro   LOGGERwarningtorchr"   is_availablebackendsr#   detection_modelsrecognition_modelssupport_detection_networkrp   cudnn_benchmarkgetDetectorPath
model_langsetall_lang_list
ValueErrorsetModelLanguagebengali_lang_listarabic_lang_listdevanagari_lang_listcyrillic_lang_list	characterosjoinisfileFileNotFoundErrorr	   r   corrupt_msginforemovesetLanguageListr   yamlload
FullLoaderre   str	BASE_PATHinitDetectordetectorr   
recognizer	converter)selfrf   gpurt   rv   detect_networkrecog_networkrr   r   r   rq   rp   r   detector_pathseparator_listr)   unknown_lang
model_pathfilerecog_configavailable_lang
model_file	dict_listlangrn   s                            r*   __init__zReader.__init__    s
   ,  0'2X'=$" 	C+BD(T)**000MMM&1O&C#! 	A*@D'T())//t/LLL3444%<<DK ZXYYYD[[z&&(( K$#0022 K## KNN  $J  K  K  KDK 0"4 +29)=&i, 	A 00@@M ZL+Z+Z?QRX?Y+Z+Z+ZZ  ^M  ^M  rD  EK  rL  ^M  ^M  ^M  M  M  M O O4Fv4N O O OOO*62=A -"'"7"Q"Q6H6P"Q"Q"QQQ*62=A -"'"7"9~~M0B0BB355(($\3EFFF&&)))YQQQ.v6|DE$1MMY&&))&)d4[-XXX.v6yAE$1MM**))-XdOUfggg.v6{CE$1MM**))-XdOUfggg.v6{CE$1MMY&&))*i$tm\\\.v6}EE$1MMY&&))(IT{MZZZ.v6{CE$1MMY&&))'9tDk=YYY.v6zBE$1MMY&&))(IT{MZZZ.v6{CE$1MMY&&)))Yd][[[.v6|DE$1MM^^c*;&<&<< 2)))Y@QSWRX@XZlmmm.v6|DE$1MM^^c*:&;&;; 2))(I?OQUPV?VXtuuu.v6{CE$1MM^^c*>&?&?? 2)),	CWY]X^C^`wxxx.v6GE$1MM^^c*<&=&== 2))*iASUYTZAZ*Y[ [ [.v6}EE$1MM&-DO.v6zBE$1M"<0DNd&BE*DUVVJ 57>>*--660 b/0SV`0`aaaNN $k l l l&uU|U:5FHdfmnnn(44hGGGGGGKK 45555":..%/AA0 k/0\_i0ijjjNN;///Ij)))NN $k l l l&uU|U:5FHdfmnnn(44hGGGGGGKK 3444  E2222 bgll4#>w@VWWbhiii Gmq#ydoFFFG G G G G G G G G G G G G G G F# ,#F+)+6N!!-NCP^L_L_```)*:;DN&.Jd&BJOOJ  L999	 	M 	MD gll9fdVmLLIdOO 	= --m<<DM 	y--%&&)#&" "
 -//%&&)#&" " "..>!?.<]N9=9BJY]Ydow/y /y /y+DOT^^^	y 	ys   -!aa!ac                    || j         v rz|| _        | j        dk    r	ddlm}m} n!| j        dv r	ddlm}m} nt          d          || _        || _        d}t          j        	                    | j
        | j        | j                 d                   }t          j                            |          dk    r| j        st          d	|z            t                              d
           t#          | j        | j                 d         | j        | j                 d         | j
        | j                   t'          |          | j        | j                 d         k    s
J |            t                              d           n@t'          |          | j        | j                 d         k    r| j        st          d|z            t                              |           t          j        |           t                              d           t#          | j        | j                 d         | j        | j                 d         | j
        | j                   t'          |          | j        | j                 d         k    s
J |            n:t          d                    d	                    | j                                       |S )Nr   r   )get_detectorget_textbox)r$   zCUnsupport detector network. Support networks are craft and dbnet18.z+MD5 hash mismatch, possible file corruptionr[   Fr\   zoDownloading detection model, please wait. This may take several minutes depending upon your network connection.r]   r^   r`   r_   zvRe-downloading the detection model, please wait. This may take several minutes depending upon your network connection.z4Unsupport detector network. Support networks are {}.z, )r   r   	detectionr   r   detection_dbRuntimeErrorr   rx   r   rt   r   r   rr   r   rz   r{   r	   rq   r   r   r   format)r   r   r   r   r   r   s         r*   r   zReader.getDetectorPath   s-   T;;;"0D"g--@@@@@@@@@$33CCCCCCCCC"#hiii*D ,DGKGLL)EtG\]a]pGqr|G}~~Mw~~m,,55, a+,OR_,_```  g h h h"4#89L#Me#TVZVklpl  WA  BL  WM  OS  Ok  mq  my  z  z  z$]33t7LTM`7abj7kkkkmxkkk/0000}--1FtGZ1[\d1eee, j+,X[h,hiii{+++	-(((  g h h h"4#89L#Me#TVZVklpl  WA  BL  WM  OS  Ok  mq  my  z  z  z$]33t7LTM`7abj7kkkkmxkkkU\\]a]f]fgk  hF  ^G  ^G   H   H  I  I  Ir,   c                 R    |                      || j        | j        | j                  S )N)ro   rp   r   )r   ro   rp   r   )r   r   s     r*   r   zReader.initDetector  s1      *.+,0M373G ! # # 	#r,   c                 d    |                      |          }|                     |          | _        d S )N)r   r   r   )r   r   r   s      r*   setDetectorzReader.setDetector  s.    ,,^<<))-88r,   c                     || _         t          |          t          |          z
  t                      k    r5|dk    s|dk    rd}t          |                                dz   |z             d S )Nr;   r>   chinesez0 is only compatible with English, try lang_list=)r   r   r   
capitalize)r   languagerf   	list_langlist_lang_strings        r*   r   zReader.setModelLanguage  sq    "y>>C	NN*cee338##x8';';$X00225ggjzz{{{ 43r,   c                    t           j                            t          d|          }t	          |dd          5 }|                                                                }d                    |          }d d d            n# 1 swxY w Y   |S )Nr   r	utf-8-sigrb    )r   rx   r   r   r   read
splitlines)r   fileName	char_file
input_filelistchars         r*   getCharzReader.getChar   s    GLLKBB	)S;777 	!:??$$//11D774==D	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! s   <BBBc                 \   g | _         |D ]}t          j                            t          d|dz             }t          |dd          5 }|                                                                }d d d            n# 1 swxY w Y   | xj         |z  c_         |                    d          r	|d         }n |                    d          r	|d         }nd}t          | j                   
                    t          |                    | _         d	                    | j                   | _         d S )
Nr   z	_char.txtr   r   rb   symbolsrg   z+0123456789!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ r   )	lang_charr   rx   r   r   r   r   r   getr   union)r   rf   r)   r   r   r   	char_listsymbols           r*   r   zReader.setLanguageList'  sO    	( 	(DYTK=OPPIi=== <'__..99;;	< < < < < < < < < < < < < < <NNi'NNN99Y 	E9%FFYY'(( 	E+,FFDFT^,,223v;;??00s   'A::A>	A>	   ffffff?皙? 
        ?皙?      ?皙?   r   c                 d   |rt          |          \  }}|                     | j        ||||||d| j        |||||          }g g }}|D ]d}t	          |||	|
|||d u           \  }}rfd|D             }fd|D             }|                    |           |                    |           e||fS )NF)canvas_size	mag_ratiotext_thresholdlink_thresholdlow_textpolyro   optimal_num_chars	thresholdbbox_min_scorebbox_min_sizemax_candidatesc                 x    g | ]6}t          |d          |d         z
  |d         |d         z
            k    4|7S )r   r   r   r   )maxr(   imin_sizes     r*   r+   z!Reader.detect.<locals>.<listcomp>X  sb     #: #: #:aD1Q4K1!B. B.08B9 B91 B9 B9 B9r,   c           	          g | ]F}t          t          d  |D                       t          d |D                                 k    D|GS )c                     g | ]
}|d          S )r   r&   r(   cs     r*   r+   z,Reader.detect.<locals>.<listcomp>.<listcomp>[  s    ***1!A$***r,   c                     g | ]
}|d          S r   r&   r   s     r*   r+   z,Reader.detect.<locals>.<listcomp>.<listcomp>[  s    2C2C2CA1Q42C2C2Cr,   )r   r   r   s     r*   r+   z!Reader.detect.<locals>.<listcomp>Z  s{     R R R1S*****++T2C2C2C2C2C-D-D6F 6FHP6Q 6QQ 6Q 6Q 6Qr,   )r   r   r   ro   r   ry   )r   imgr   r   r   r   r   r   	slope_thsycenter_ths
height_ths	width_ths
add_marginreformatr   r   r   r   r   img_cv_greytext_box_listhorizontal_list_aggfree_list_aggtext_boxhorizontal_list	free_lists     `                       r*   detectzReader.detect7  sC     	3-c22C(($'2=095C5C/7+0-1[8I095C4A5C ) & &  .0]% 	, 	,H)7)8CZ8A:9Jd9R*U *U&OY  R#: #: #: #:o #: #: #:R R R R	 R R R	&&777  ++++"M11r,   greedy   r   ~jth?c                    ! |rt          |          \  }}|r8d                    t          | j                  t          |          z
            }na|	r#d                    t          |	                    }n<d                    t          | j                  t          | j                  z
            }| j        dv rd}|d k    r|d k    r|j        \  }}d|d|gg}g }|dk    s| j        dk    r|sg !|D ]j}|g}g }t          |||t                    \  }}t          | j        t          t          |          | j        | j        |||||||||| j                  }!|z  !k|D ]j}g }|g}t          |||t                    \  }}t          | j        t          t          |          | j        | j        |||||||||| j                  }!|z  !knt          |||t                    \  }}t          |           |r'|r%t          ||          }t!          |t                    }t          | j        t          t          |          | j        | j        |||||||||| j                  !|r>||z   r9t#           !fdt%          t          |          dz             D                       !| j        d	k    r,d
}d !D             !!D ]}t'          |d                   |d<   nd}|rt)          !|||          !|
dk    rd !D             S |dk    r|rd !D             S d !D             S |dk    r|rd !D             S d !D             S |dk    rt+          !|          S !S )Nr   )r<   r?   r   r   r   r!   )model_heightc                 6    g | ]}|z  |d z   z           S r   r&   )r(   r   	image_lenresults     r*   r+   z$Reader.recognize.<locals>.<listcomp>  s/    ```QVIaK	1Q378```r,   rR   rtlc                 ,    g | ]}t          |          S r&   )r   r(   items     r*   r+   z$Reader.recognize.<locals>.<listcomp>  s    444Td4jj444r,   ltr)x_thsy_thsmodec                     g | ]
}|d          S r   r&   r
  s     r*   r+   z$Reader.recognize.<locals>.<listcomp>  s    ///DG///r,   rh   c                 0    g | ]}|d          |d         dS )r   r   boxestextr&   r
  s     r*   r+   z$Reader.recognize.<locals>.<listcomp>  s(    MMMd$q'a99MMMr,   c                 >    g | ]}|d          |d         |d         dS )r   r   r   r  r  	confidentr&   r
  s     r*   r+   z$Reader.recognize.<locals>.<listcomp>  s.    ]]]dd1gT!WaII]]]r,   jsonc                 l    g | ]1}t          j        d  |d         D             |d         dd          2S )c                 R    g | ]$}t          t          t          |                    %S r&   r   mapintr(   lsts     r*   r+   z/Reader.recognize.<locals>.<listcomp>.<listcomp>  s(    ,T,T,TST#c3---@-@,T,T,Tr,   r   r   r  Fensure_asciir  dumpsr
  s     r*   r+   z$Reader.recognize.<locals>.<listcomp>  sb      N  N  N  C
,T,TDQRG,T,T,T\`ab\c#d#dsxyyy  N  N  Nr,   c                 z    g | ]8}t          j        d  |d         D             |d         |d         dd          9S )c                 R    g | ]$}t          t          t          |                    %S r&   r  r  s     r*   r+   z/Reader.recognize.<locals>.<listcomp>.<listcomp>  s(    (P(P(Pc#smm)<)<(P(P(Pr,   r   r   r   r  Fr   r"  r
  s     r*   r+   z$Reader.recognize.<locals>.<listcomp>  sw      ^  ^  ^  OSDJ(P(PQ(P(P(PX\]^X_lpqrlstt  DI  J  J  J  ^  ^  ^r,   
free_merge)r   r   r   r   r   r   shapero   r   re   r   r  r   r   lenr   r   r   ranger   r   r   )"r   r   r   r   decoder	beamWidth
batch_sizeworkers	allowlist	blocklistdetailrotation_info	paragraphcontrast_thsadjust_contrast
filter_thsr  r  r   output_formatr   ignore_chary_maxx_maxbboxh_listf_list
image_list	max_widthresult0direction_moder  r  r  s"                                   @@r*   	recognizezReader.recognizea  sg     	;-k::C 	K''#dn"5"5c)nn"DEEKK 	K''#i..11KK''#dn"5"5c$.6I6I"IJJK?;;;xWT!!	4&,LE5 !5!U34OI 1__$+"6"6"6F' " "(6vv{cg(h(h(h%
I"4>4YZ^Zhjt)7Iz<Yhjt%t{4 4 '!! " "(6vv{cg(h(h(h%
I"4>4YZ^Zhjt)7Iz<Yhjt%t{4 4 '!" %3?I{ko$p$p$p!J	JI 1 12=*MM
	400	dndC	NNDOUYUceo%w	:|Udfp!4;0 0F  b/)"; b 4`````%MHZHZ]^H^B_B_```b b ?h&&"N44V444F / /%d1g..Q/ #N 	\"6eN[[[FQ;;//////f$$ NMMfMMMM]]V\]]]]f$$ N N  N  GM  N  N  N  N ^  ^  W]  ^  ^  ^  ^l** 333Mr,   c                      t          |          \  } }!|                     | |||||||||||d||||          \  }"}#|"d         |#d         }#}"|                     |!|"|#||||||||	|
|||||d|          }$|$S )]
        Parameters:
        image: file path or numpy-array or a byte stream object
        Fr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rA  )%r   imager*  r+  r,  r-  r.  r/  r0  r1  r2  r   r3  r4  r5  r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r6  r   r   r   r   r  s%                                        r*   readtextzReader.readtext  s     *%00[%)[[<DWe<DWe?JXa=FVa>HU^>HUZ=FYgANao &1 	&3 	&3" &5Q%71_i 'J 'Iv} )< *E5%	P P r,   c                    ,- t          |          \  } }!|                     | |||||||||||d||||          \  }"}#|"d         |#d         }#}"|                     |!|"|#||||||||	|
|||||d|          -g }$d}%t          t	          -                    D ]#}&|$                    -|&         d                    $d }',-fd}(t          j        |%          D ],,                    d          rt          d,z   d	d
          5 })t          |)                                                                                              dd          }*t          t	          |$                    D ]N}& |'|*|$|&                   }+|+dk    r4,dd         dk    s,dd         dk    rt           |(|&                     O	 ddd           n# 1 swxY w Y   dS )rC  FrD  r   zcharacters/r   c                 z    d}t          t          |                     D ]}| |         |k    rd} dS |dk    rdS d S )NFTr   )r)  r(  )arrxgr   s       r*   searchz#Reader.readtextlang.<locals>.search  sW    A3s88__  q6199A11  Ezzr zr,   c                 4    |          }|dd         fz   }|S )Nr   r   r&   )r   abr[   r  s      r*   tupleaddz%Reader.readtextlang.<locals>.tupleadd  s&    q	AXac]$$AHr,   ri   rtra   rb   
r   rI  r   r5   chN)r   r   rA  r)  r(  ry   r   listdirendswithr   r   r   r   replaceprint).r   rE  r*  r+  r,  r-  r.  r/  r0  r1  r2  r   r3  r4  r5  r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r6  r   r   r   r   r   	directoryr   rM  rQ  myfilechartrsresr[   r  s.                                               @@r*   readtextlangzReader.readtextlang  s    *%00[%)[[<DWe<DWe?JXa=FVa>HU^>HUZ=FYgANao &1 	&3 	&3" &5Q%71_i 'J 'Iv} )< *E5%	P P !	s6{{## 	& 	&AKKq	!%%%%	 	 		 	 	 	 	 	
 
9-- 	3 	3H  (( 3=(24HHH 3F!&++--":":"<"<==EEd2NNG"3t99-- 3 3$fWT!W55"99'!}d22hqsmT6I6I %hhqkk 2 2 2	33 3 3 3 3 3 3 3 3 3 3 3 3 3 3	3 	3s   B3GG		G	c"                 b   t          |||          \  }"}#|                     |"|||||||||||d||||           \  }$}%g }&t          |#j                  dk    r|#gn|#}#t	          |#|$|%          D ]@\  }'}(})|&                    |                     |'|(|)||||||	|
|||||||d|!                     A|&S )a6  
        Parameters:
        image: file path or numpy-array or a byte stream object
        When sending a list of images, they all must of the same size,
        the following parameters will automatically resize if they are not None
        n_width: int, new width
        n_height: int, new height
        FrD  r   )r   r   r(  r'  zipry   rA  )*r   rE  n_widthn_heightr*  r+  r,  r-  r.  r/  r0  r1  r2  r   r3  r4  r5  r   r   r   r   r   r   r   r   r   r  r  r   r   r   r   r   r6  r   r   r   r   
result_agggrey_imgr   r   s*                                             r*   readtext_batchedzReader.readtext_batched  s   & 2%(KK[-1[[<DWe<DWe?JXa=FVa>HU^>HUZ=FYgANao .9 	.3 	.3*] 
'*;+<'='='B'B{mm47EXZg4h4h 	] 	]0HoydnnX	,3Y
,3Y	6S`,5|_,6ue]	\ \ ] ] ] ] r,   )TNNr   r   TTTTTF)r   r   r   r   r   r   r   r   r   r   r   TNr   r   r   r   )NNr   r  r   r   NNr   NFr   r   r  r   r   Tr   )r   r  r   r   NNr   NFr   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ) NNr   r  r   r   NNr   NFr   r   r   r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   rA  rF  r]  rd  r&   r,   r*   r   r      s       DH=D<@9=05	Iy Iy Iy IyV! ! !F# # #9 9 9| | |  1 1 1  KNDF@CSWZ[	(2 (2 (2 (2T FJABLM38INISU U U Un NOKLEGHMHK13BEIL\])" " " "H RSKLEGHMHK13BEIL\])<3 <3 <3 <3| >BHISTMOPUPS9;JMQTde'1) ) ) ) ) )r,   r   ),recognitionr   r   utilsr   r   r   r   r	   r
   r   r   r   r   r   r   configbidir   numpynpcv2r|   r   rw   PILr   loggingr   r   r  version_infoior   six.moves.urllib.requestr   pathlib2r   urllib.requestpathlibre  rz   objectr   r&   r,   r*   <module>rx     s   2 1 1 1 1 1 1 19 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9               



  				 



              A!444444******	8		e e e e eV e e e e er,   