ó
    ñZjV  ã                   ód   • S SK Jr  S SKJrJrJrJrJr  S SKr	SSK
Jr  SSKJrJr   " S S	5      rg)
é    )ÚPath)ÚAnyÚListÚOptionalÚTupleÚUnionNé   )Úhas_chinese_charé   )ÚWordInfoÚWordTypec                   ó  • \ rS rSr  SS\\\      S\\\S4   4S jjr	 SS\
R                  S\S\\\\\4      \\   4   4S	 jjr  SS\\\      S\\\S4   S\\   4S
 jjr\S\\\4   S\\   4S j5       r\ SS\\   S\S\S\\   4S jj5       r     SS\
R                  S\\
R                     S\S\\   S\S\S\\\\\4      \\   4   4S jjr\S\S\
R                  S\4S j5       r\S\\   4S j5       rSrg)ÚCTCLabelDecodeé   NÚ	characterÚcharacter_pathc                 óš   • U R                  X5      U l        [        U R                  5       VVs0 s H  u  p4XC_M	     snnU l        g s  snnf ©N)Úget_characterr   Ú	enumerateÚdict)Úselfr   r   ÚiÚchars        ÚX/home/mande/repo/quber/.venv/lib/python3.13/site-packages/rapidocr/ch_ppocr_rec/utils.pyÚ__init__ÚCTCLabelDecode.__init__   s>   € ð
 ×+Ñ+¨IÓFˆŒÜ,5°d·n±nÔ,EÔFÒ,E¡ �T’WÑ,EÒFˆ�	ùÓFs   ¯AÚpredsÚreturn_word_boxÚreturnc           	      ó¸   • UR                  SS9nUR                  SS9nUR                  SS5      nUR                  SS5      nU R                  UUUUUSS9u  p‰X‰4$ )	Nr	   )ÚaxisÚwh_ratio_list©ç      ð?Úmax_wh_ratior%   T)Úremove_duplicate)ÚargmaxÚmaxÚgetÚdecode)
r   r   r   ÚkwargsÚ	preds_idxÚ
preds_probr#   r&   Úline_resultsÚword_resultss
             r   Ú__call__ÚCTCLabelDecode.__call__   sw   € ð —L‘L a�LÐ(ˆ	Ø—Y‘Y A�YÐ&ˆ
àŸ
™
 ?°FÓ;ˆØ—z‘z .°#Ó6ˆà%)§[¡[ØØØØØØ!ð &1ð &
Ñ"ˆð Ð)Ð)ó    c                 óæ   • Uc  Uc  [        S5      eS nU(       a  UnUc  Ub  U R                  U5      nUc  [        S5      eU R                  US[        U5      5      nU R                  USS5      nU$ )Nzcharacter must not be NoneÚ Úblankr   )Ú
ValueErrorÚread_character_fileÚinsert_special_charÚlen)r   r   r   Úcharacter_lists       r   r   ÚCTCLabelDecode.get_character)   s�   € ð
 Ñ Ñ!7ÜÐ9Ó:Ð:àˆÞØ&ˆNàÑ Ñ!;Ø!×5Ñ5°nÓEˆNàÑ!ÜÐ9Ó:Ð:à×1Ñ1Ø˜C¤ ^Ó!4ó
ˆð ×1Ñ1°.À'È1ÓMˆØÐr3   c                 ó
  • / n[        U S5       nUR                  5       nU HC  nUR                  S5      R                  S5      R                  S5      nUR	                  U5        ME     S S S 5        U$ ! , (       d  f       U$ = f)NÚrbzutf-8Ú
z
)ÚopenÚ	readlinesr+   ÚstripÚappend)r   r;   ÚfÚlinesÚlines        r   r8   Ú"CTCLabelDecode.read_character_fileA   sx   € àˆÜ�. $Ô'¨1Ø—K‘K“MˆEÛ�Ø—{‘{ 7Ó+×1Ñ1°$Ó7×=Ñ=¸fÓE�Ø×%Ñ% dÖ+ñ ÷ (ð
 Ð÷ (Ô'ð
 Ðús   �AA3Á3
Br;   Úspecial_charÚlocc                 ó(   • U R                  X!5        U $ r   )Úinsert)r;   rH   rI   s      r   r9   Ú"CTCLabelDecode.insert_special_charK   s   € ð 	×Ñ˜cÔ0ØÐr3   Ú
text_indexÚ	text_probr#   r&   r'   c                 ón  • / / p‡U R                  5       n	[        U5      n
[        U
5       GH{  nX   n[        R                  " [        U5      [
        S9nU(       a  USS  US S :g  USS & U	 H
  nXÜU:g  -  nM     UbF  [        R                  " X+   U   5      R                  5       nU Vs/ s H  n[        US5      PM     nnOS/[        U5      -  n[        U5      S:X  a  S/nXÍ    Vs/ s H  nU R                  U   PM     nnSR                  U5      nUR                  U[        R                  " U5      R                  S5      R                  5       45        U(       d  GM9  U R                  UU5      n[        U5      XK   -  U-  Ul        UUl        UR                  U5        GM~     Xx4$ s  snf s  snf )N)Údtyper   éÿÿÿÿé   r   Ú )Úget_ignored_tokensr:   ÚrangeÚnpÚonesÚboolÚarrayÚtolistÚroundr   ÚjoinrC   ÚmeanÚget_word_infoÚline_txt_lenÚconfs)r   rM   rN   r   r#   r&   r'   Úresult_listÚresult_words_listÚignored_tokensÚ
batch_sizeÚ	batch_idxÚtoken_indicesÚ	selectionÚignored_tokenÚ	conf_listÚconfÚtext_idÚ	char_listÚtextÚrec_word_infos                        r   r+   ÚCTCLabelDecode.decodeR   s½  € ð *,¨RÐ&Ø×0Ñ0Ó2ˆÜ˜“_ˆ
Ü˜z×*ˆIØ&Ñ1ˆMäŸš¤ MÓ 2¼$Ñ?ˆIÞØ -¨a¨bÐ 1°]À3ÀBÐ5GÑ G�	˜!˜"�ã!/�Ø¨mÑ;Ñ;’	ñ "0ð Ñ$ÜŸHšH YÑ%9¸)Ñ%DÓE×LÑLÓN�	Ù8AÓBº	°œU 4¨ž^¹	�	ÐB�	à˜C¤# i£.Ñ0�	ä�9‹~ Ó"Ø˜C�	ð 8EÒ7OóÚ7O¨G�—‘˜wÔ'Ñ7Oð ð ð —7‘7˜9Ó%ˆDà×Ñ ¤b§g¢g¨iÓ&8×&>Ñ&>¸qÓ&A×&HÑ&HÓ&JÐKÔLç‰Ø $× 2Ñ 2°4¸Ó C�ä˜Ó&¨Ñ)AÑAÀLÑPð Ô*ð '0�Ô#Ø!×(Ñ(¨×7ñA +ðB Ð-Ð-ùò+ Cùòs   Â)F-Ã)F2rm   rg   c                 ó  • / n/ n/ n/ n/ n[         R                  " U5      S   n[        U5      S::  a
  [        5       $ [         R                  " UR
                  5      nUSS USS -
  USS& [        [        U S   5      (       a  SOS[        US   5      5      US'   Sn	[        U 5       GH  u  p«UR                  5       (       a@  U(       a7  UR                  U5        UR                  U5        UR                  U	5        / n/ nM[  [        U5      (       a  [        R                  O[        R                  nU	c  Un	Xœ:w  d  XŠ   S:”  aH  [        U5      S:w  a7  UR                  U5        UR                  U5        UR                  U	5        / n/ nUn	UR                  U5        UR                  [        Xz   5      5        GM     [        U5      S:w  a3  UR                  U5        UR                  U5        UR                  U	5        [        X#US9$ )	zÔ
Group the decoded characters and record the corresponding decoded positions.
from https://github.com/PaddlePaddle/PaddleOCR/blob/fbba2178d7093f1dffca65a5b963ec277f1a6125/ppocr/postprocess/rec_postprocess.py#L70
r   r   NrQ   é   r	   rR   )ÚwordsÚ	word_colsÚ
word_types)rV   Úwherer:   r   ÚzerosÚshapeÚminr
   Úintr   ÚisspacerC   r   ÚCNÚEN_NUM)rm   rg   Ú	word_listÚword_col_listÚ
state_listÚword_contentÚword_col_contentÚ	valid_colÚ	col_widthÚstateÚc_ir   Úc_states                r   r^   ÚCTCLabelDecode.get_word_info�   sÞ  € ð ˆ	ØˆØˆ
àˆØÐä—H’H˜YÓ'¨Ñ*ˆ	Üˆy‹>˜QÓÜ“:Ðä—H’H˜YŸ_™_Ó-ˆ	Ø! ! "˜¨	°#°2¨Ñ6ˆ	�!�"ˆÜÔ 0°°a±× 9Ñ 9™1¸qÄ#ÀiÐPQÁlÓBSÓTˆ	�!‰àˆÜ" 4Ÿ‰IˆCØ�|‰|�~‰~ÞØ×$Ñ$ \Ô2Ø!×(Ñ(Ð)9Ô:Ø×%Ñ% eÔ,Ø#%�LØ')Ð$Ùä%5°d×%;Ñ%;”h—k’kÄÇÁˆGØ‰}Ø�àÓ 9¡>°AÓ#5Ü�|Ó$¨Ó)Ø×$Ñ$ \Ô2Ø!×(Ñ(Ð)9Ô:Ø×%Ñ% eÔ,Ø#%�LØ')Ð$Ø�à×Ñ Ô%Ø×#Ñ#¤C¨	©Ó$7×8ñ1 )ô4 ˆ|Ó Ó!Ø×Ñ˜\Ô*Ø× Ñ Ð!1Ô2Ø×Ñ˜eÔ$ä˜iÈZÑXÐXr3   c                  ó   • S/$ )Nr   © r‰   r3   r   rT   Ú!CTCLabelDecode.get_ignored_tokens¸   s	   € àˆsˆ
r3   )r   r   )NN)F)rQ   )NFr$   r%   F)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   Ústrr   r   r   rV   ÚndarrayrX   r   Úfloatr   r1   r   Ústaticmethodr8   ry   r9   r   r+   r^   rT   Ú__static_attributes__r‰   r3   r   r   r      s  † ð *.Ø15ñGà˜D ™IÑ&ðGð ˜c 4¨˜oÑ.õGð :?ñ*Ø—Z‘Zð*Ø26ð*à	ˆt�E˜#˜u˜*Ñ%Ñ&¨¨S©	Ð1Ñ	2õ*ð* *.Ø15ñà˜D ™IÑ&ðð ˜c 4¨˜oÑ.ðð 
ˆc‰õ	ð0 ð¨E°#°t°)Ñ,<ð ÀÀcÁó ó ðð àACñØ˜S™	ðØ14ðØ;>ðà	ˆc‰ôó ðð +/Ø %Ø&,Ø!Ø!&ñ-.à—J‘Jð-.ð ˜BŸJ™JÑ'ð-.ð ð	-.ð
 ˜U‘|ð-.ð ð-.ð ð-.ð 
ˆt�E˜#˜u˜*Ñ%Ñ&¨¨X©Ð6Ñ	7õ-.ð^ ð4Y˜Cð 4Y¨B¯J©Jð 4Y¸8ó 4Yó ð4Yðl ð  S¡	ó ó ór3   r   )Úpathlibr   Útypingr   r   r   r   r   ÚnumpyrV   Úutils.utilsr
   Útypingsr   r   r   r‰   r3   r   Ú<module>r™      s%   ðõ ß 4Õ 4ã å *ß '÷mò mr3   