ó
    ñZj  ã                   óF  • S SK r S SKrS SKJr  S SKJrJr  S SKrS SKr	S SK
JrJr  SSKJrJr  SSKJr  SSKJr  SS	KJr  SS
KJr  SSKJrJr  SSKJr  \" \5      R<                  R<                  S-  S-  rSr \" \5      R<                  R<                  S-  r! " S S5      r"g)é    N)ÚPath)ÚAnyÚDict)ÚFileInfoÚ
get_engineé   )ÚDownloadFileÚDownloadFileInput)Úlogger)Únormalize_lang)Úreorder_bidi_for_display)ÚVisResé   )ÚTextRecInputÚTextRecOutput)ÚCTCLabelDecodeÚmodelszppocr_keys_v1.txtz|https://www.modelscope.cn/models/RapidAI/RapidOCR/resolve/v2.0.7/paddle/PP-OCRv4/rec/ch_PP-OCRv4_rec_infer/ppocr_keys_v1.txtc                   ó‚   • \ rS rSrS\\\4   4S jrS rS\	S\
4S jrS\R                  S	\S\R                  4S
 jrSrg)ÚTextRecognizeré%   Úcfgc                 óÌ   • [        UR                  5      " U5      U l        U R                  U5      u  p#[	        X#S9U l        US   U l        US   U l        Xl        1 SkU l	        g )N)Ú	characterÚcharacter_pathÚrec_batch_numÚrec_img_shape>   ÚfaÚurÚarabic)
r   Úengine_typeÚsessionÚget_character_dictr   Úpostprocess_opr   Úrec_image_shaper   Ú	RTL_LANGS)Úselfr   r   Úcharacter_dict_paths       ÚW/home/mande/repo/quber/.venv/lib/python3.13/site-packages/rapidocr/ch_ppocr_rec/main.pyÚ__init__ÚTextRecognizer.__init__&   sd   € Ü! #§/¡/Ô2°3Ó7ˆŒð *.×)@Ñ)@ÀÓ)EÑ&ˆ	ä,Øñ
ˆÔð ! Ñ1ˆÔØ" ?Ñ3ˆÔàŒâ/ˆ�ó    c           
      ó‚  • S nUR                  SS 5      nU R                  R                  5       (       a  U R                  R                  5       nX#4$ U(       d  U(       a  [	        U5      R                  5       (       dÁ  U R                  R                  [        UR                  UR                  UR                  UR                  UR                  S95      nUb  UO[        n[        [	        U5      R                  -  n[	        U5      R                  5       (       d$  [         R"                  " [%        US U[&        S95        X#4$ )NÚrec_keys_path)r    Úocr_versionÚ	task_typeÚ	lang_typeÚ
model_type)Úfile_urlÚsha256Ú	save_pathr   )Úgetr!   Úhave_keyÚget_character_listr   ÚexistsÚget_dict_key_urlr   r    r.   r/   r0   r1   ÚDEFAULT_DICT_URLÚDEFAULT_MODEL_PATHÚnamer	   Úrunr
   r   )r&   r   r   Ú	dict_pathÚdict_download_urls        r(   r"   Ú!TextRecognizer.get_character_dict7   s	  € Øˆ	Ø—G‘G˜O¨TÓ2ˆ	Ø�<‰<× Ñ ×"Ñ"ØŸ™×7Ñ7Ó9ˆIØÐ'Ð'ö ¦)´T¸)³_×5KÑ5K×5MÑ5MØ $§¡× =Ñ =ÜØ #§¡Ø #§¡Ø!Ÿm™mØ!Ÿm™mØ"Ÿ~™~ñó!Ðð &7Ñ%BÑ!ÔHXð ô +¬TÐ2CÓ-D×-IÑ-IÑIˆIÜ˜	“?×)Ñ)×+Ñ+Ü× Ò Ü%Ø!2Ø#Ø"+Ü%ñ	ôð Ð#Ð#r+   ÚargsÚreturnc                 ó  • [         R                  " 5       n[        UR                  [        R
                  5      (       a  UR                  /OUR                  nUR                  nU Vs/ s H*  oUR                  S   [        UR                  S   5      -  PM,     nn[        R                  " [        R                  " U5      5      n[        U5      nS/U-  n	U R                  n
Sn[        SXŠ5       GH\  n[        XŒU
-   5      nU R                  S S u  pïnUU-  n/ n[        XÍ5       H?  nX7U      R                  SS u  nnUS-  U-  n[!        UU5      nUR#                  U5        MA     / n[        XÍ5       H@  nU R%                  X7U      U5      nUR#                  U[        R&                  S S 24   5        MB     [        R(                  " U5      R+                  [        R,                  5      nU R/                  U5      nU R1                  UUUUS9u  nn[3        U5       H*  u  nnU(       a  UUU   4X—UU-      '   M  US 4X—UU-      '   M,     GM_     [5        [7        U	6 5      u  nn[5        [7        U6 5      u  n n![9        U R:                  R<                  5      U R>                  ;   a  [A        U 5      n [         R                  " 5       U-
  n[C        UU U!UU[E        U R:                  R<                  U R:                  RF                  S9S	9$ s  snf )
Nr   r   )Ú g        é   r   g      ð?)Úwh_ratio_listÚmax_wh_ratio)r0   Ú	font_path)Úviser)$ÚtimeÚperf_counterÚ
isinstanceÚimgÚnpÚndarrayÚreturn_word_boxÚshapeÚfloatÚargsortÚarrayÚlenr   ÚrangeÚminr$   ÚmaxÚappendÚresize_norm_imgÚnewaxisÚconcatenateÚastypeÚfloat32r!   r#   Ú	enumerateÚlistÚzipr   r   r0   r%   r   r   r   rH   )"r&   rA   Ú
start_timeÚimg_listrP   rM   Ú
width_listÚindicesÚimg_numÚrec_resÚ	batch_numÚelapseÚ
beg_img_noÚ
end_img_noÚimgCÚimgHÚimgWrG   rF   ÚinoÚhÚwÚwh_ratioÚnorm_img_batchÚnorm_imgÚpredsÚline_resultsÚword_resultsÚrnoÚone_resÚall_line_resultsÚall_word_resultsÚtxtsÚscoress"                                     r(   Ú__call__ÚTextRecognizer.__call__Y   sÔ  € Ü×&Ò&Ó(ˆ
ä!+¨D¯H©H´b·j±j×!AÑ!A�D—H‘H‘:ÀtÇxÁxˆØ×.Ñ.ˆáDLÓMÂH¸S—i‘i ‘l¤U¨3¯9©9°Q©<Ó%8Ô8ÁHˆ
ÐMô —*’*œRŸXšX jÓ1Ó2ˆä�h“-ˆØ�+ Ñ'ˆà×&Ñ&ˆ	ØˆÜ  7×6ˆJÜ˜W°9Ñ&<Ó=ˆJð  $×3Ñ3°B°QÐ7ÑˆD˜Ø $™;ˆLØˆMÜ˜ZÖ4�Ø¨¡Ñ-×3Ñ3°A°aÐ8‘��1Ø˜s™7 Q™;�Ü" <°Ó:�Ø×$Ñ$ XÖ.ñ	 5ð  ˆNÜ˜ZÖ4�Ø×/Ñ/°À¹Ñ0FÈÓU�Ø×%Ñ% h¬r¯z©zº1¨}Ñ&=Ö>ñ 5ô  Ÿ^š^¨NÓ;×BÑBÄ2Ç:Á:ÓNˆNà—L‘L Ó0ˆEØ)-×)<Ñ)<ØØØ+Ø)ð	 *=ð *Ñ&ˆL˜,ô !*¨,Ö 7‘��WÞ"Ø:AÀ<ÐPSÑCTÐ9U�G J°Ñ$4Ñ5Ñ6Ùà6=¸t°_� 
¨SÑ 0Ñ1Ó2ô !8ñ7 7ôD .2´#°w°-Ó-@Ñ*ÐÐ*ÜœCÐ!1Ð2Ó3‰ˆˆfä˜$Ÿ(™(×,Ñ,Ó-°·±Ó?Ü+¨DÓ1ˆDä×"Ò"Ó$ zÑ1ˆÜØØØØØÜ 4§8¡8×#5Ñ#5ÀÇÁ×ASÑASÑTñ
ð 	
ùòg Ns   Á(1LrM   rG   c                 ó  • U R                   u  p4nX1R                  S   :X  d   e[        XB-  5      nUR                  S S u  pgU[        U5      -  n[        R
                  " XH-  5      U:”  a  Un	O![        [        R
                  " XH-  5      5      n	[        R                  " XU45      n
U
R                  S5      n
U
R                  S5      S-  n
U
S-  n
U
S-  n
[        R                  " X4U4[        R                  S9nX«S S 2S S 2SU	24'   U$ )Nr   r^   )r   r   r   éÿ   g      à?)Údtyper   )r$   rQ   ÚintrR   ÚmathÚceilÚcv2Úresizer]   Ú	transposerN   Úzerosr^   )r&   rM   rG   Úimg_channelÚ
img_heightÚ	img_widthrp   rq   ÚratioÚ	resized_wÚresized_imageÚ
padding_ims               r(   rZ   ÚTextRecognizer.resize_norm_img›   sþ   € Ø-1×-AÑ-AÑ*ˆ ØŸi™i¨™lÓ*Ð*Ð*ä˜
Ñ1Ó2ˆ	à�y‰y˜˜!ˆ}‰ˆØ”E˜!“H‘ˆÜ�9Š9�ZÑ'Ó(¨9Ó4Ø!‰IäœDŸIšI jÑ&8Ó9Ó:ˆIäŸ
š
 3°JÐ(?Ó@ˆØ%×,Ñ,¨YÓ7ˆØ%×/Ñ/°	Ó:¸SÑ@ˆØ˜ÑˆØ˜Ñˆä—X’X˜{¸	ÐBÌ"Ï*É*ÑUˆ
Ø(5’1’a˜˜9˜Ð$Ñ%ØÐr+   )r%   r   r#   r   r$   r!   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ústrr   r)   r"   r   r   r~   rN   rO   rR   rZ   Ú__static_attributes__© r+   r(   r   r   %   sU   † ð0˜D  c ™Nô 0ò" $ðD@
˜\ð @
¨mô @
ðD 2§:¡:ð ¸Uð ÀrÇzÁz÷ r+   r   )#r„   rJ   Úpathlibr   Útypingr   r   r†   ÚnumpyrN   Úrapidocr.inference_engine.baser   r   Úutils.download_filer	   r
   Ú	utils.logr   Úutils.model_resolverr   Úutils.utilsr   Úutils.vis_resr   Útypingsr   r   Úutilsr   Ú__file__ÚparentÚDEFAULT_DICT_PATHr:   r;   r   r˜   r+   r(   Ú<module>r§      s‚   ðó Û Ý ß ã 
Û ç ?ç AÝ Ý 1Ý 2Ý "ß 0Ý !á˜“N×)Ñ)×0Ñ0°8Ñ;Ð>QÑQÐ ð RÐ Ù˜(“^×*Ñ*×1Ñ1°HÑ<Ð ÷Kò Kr+   