ó
    ñZjç  ã                   óL  • S SK r S SKJr  S SKJr  S SKJr  S SKJrJ	r	J
r
  S SKrS SKJr  SSKJr  SS	KJrJr  SS
KJrJrJrJr  SSKJr  \" \5      R9                  5       R:                  R:                  r\S-  rS\4S jr \ " S S5      5       r! " S S\ RD                  5      r#g)é    N)Ú	dataclass)ÚEnum)ÚPath)ÚDictÚListÚUnion)Ú	OmegaConfé   )Úlogger)Únormalize_langÚresolve_model_key)Ú
EngineTypeÚ	ModelTypeÚ
OCRVersionÚTaskType)Úimport_packagezdefault_models.yamlÚengine_typec                 óÀ  • [         R                  " SU R                  5        U [        R                  :X  a:  [        U R                  5      (       d  [        U R                   S35      eSSKJn  U$ U [        R                  :X  a:  [        U R                  5      (       d  [        U R                   S35      eSSK
Jn  U$ U [        R                  :X  a:  [        U R                  5      (       d  [        U R                   S35      eSSKJn  U$ U [        R                  :X  a:  [        U R                  5      (       d  [        U R                   S35      eSSKJn  U$ U [        R$                  :X  a#  [        S	5      (       d  [        S
5      eSSKJn  U$ U [        R*                  :X  a#  [        S5      (       d  [        S5      eSSKJn  U$ [1        SU R                   35      e)NzUsing engine_name: %sz is not installed.é   )ÚOrtInferSessionz is not installed)ÚOpenVINOInferSession)ÚPaddleInferSession)ÚTorchInferSessionÚtensorrtztensorrt is not installed)ÚTRTInferSessionÚMNNzMNN is not installed)ÚMNNInferSessionzUnsupported engine: )r   ÚinfoÚvaluer   ÚONNXRUNTIMEr   ÚImportErrorÚonnxruntimer   ÚOPENVINOÚopenvinor   ÚPADDLEÚpaddler   ÚTORCHÚpytorchr   ÚTENSORRTr   r   r   Úmnnr   Ú
ValueError)r   r   r   r   r   r   r   s          Ú[/home/mande/repo/quber/.venv/lib/python3.13/site-packages/rapidocr/inference_engine/base.pyÚ
get_enginer-      s“  € Ü
‡K‚KÐ'¨×):Ñ):Ô;à”j×,Ñ,Ó,Ü˜k×/Ñ/×0Ñ0Ü ×!2Ñ!2Ð 3Ð3EÐFÓGÐGå0àÐà”j×)Ñ)Ó)Ü˜k×/Ñ/×0Ñ0Ü ×!2Ñ!2Ð 3Ð3DÐEÓFÐFå2à#Ð#à”j×'Ñ'Ó'Ü˜k×/Ñ/×0Ñ0Ü ×!2Ñ!2Ð 3Ð3DÐEÓFÐFå.à!Ð!à”j×&Ñ&Ó&Ü˜k×/Ñ/×0Ñ0Ü ×!2Ñ!2Ð 3Ð3DÐEÓFÐFå.à Ð à”j×)Ñ)Ó)Ü˜j×)Ñ)ÜÐ9Ó:Ð:å-àÐà”j—n‘nÓ$Ü˜e×$Ñ$ÜÐ4Ó5Ð5å(àÐä
Ð+¨K×,=Ñ,=Ð+>Ð?Ó
@Ð@ó    c                   óR   • \ rS rSr% \\S'   \\S'   \\S'   \\	\
4   \S'   \\S'   Srg)	ÚFileInfoéL   r   Úocr_versionÚ	task_typeÚ	lang_typeÚ
model_type© N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__annotations__r   r   r   r   Ústrr   Ú__static_attributes__r6   r.   r,   r0   r0   L   s)   ‡ àÓØÓØÓØ�T˜3�YÑÓØÖr.   r0   c                   óˆ  • \ rS rSr\R
                  " \5      r\R                  S 5       r
\R                  S\R                  S\R                  4S j5       r\S\\\S4   4S j5       r\R                  SS	\S\4S
 jj5       r\R                  SS	\S\\   4S jj5       r\S\S\\\4   4S j5       r\S\S\4S j5       rSrg)ÚInferSessionéU   c                 ó   • g ©Nr6   )ÚselfÚconfigs     r,   Ú__init__ÚInferSession.__init__X   ó   € àr.   Úinput_contentÚreturnc                 ó   • g rB   r6   )rC   rH   s     r,   Ú__call__ÚInferSession.__call__\   rG   r.   Ú
model_pathNc                 óÂ   • U c  [        S5      e[        U 5      n U R                  5       (       d  [        U  S35      eU R	                  5       (       d  [        U  S35      eg )Nzmodel_path is None!z does not exists.z is not a file.)r+   r   ÚexistsÚFileNotFoundErrorÚis_fileÚFileExistsError)rM   s    r,   Ú_verify_modelÚInferSession._verify_model`   sf   € àÑÜÐ2Ó3Ð3ä˜*Ó%ˆ
Ø× Ñ ×"Ñ"Ü# z lÐ2CÐ$DÓEÐEà×!Ñ!×#Ñ#Ü! Z L°Ð"@ÓAÐAð $r.   Úkeyc                 ó   • g rB   r6   ©rC   rU   s     r,   Úhave_keyÚInferSession.have_keyl   rG   r.   c                 ó   • g rB   r6   rW   s     r,   Úget_character_listÚInferSession.get_character_listp   rG   r.   Ú	file_infoc                 óp  • UR                   R                  nUR                  R                  nUR                  R                  n[	        UR
                  5      nUR                  R                  n[        R                  " U R                  U SU SU 35      nU(       d  [        SU SU SU SU 35      e[        UR                  UR                  UR
                  UR                  5      nUb#  X‡;   a  Xx   $ [        SU SU SU SU SU 3
5      eU[        R                  R                  :X  a,  U H&  n	U	R                  U5      (       d  M  Xi;   d  M"  Xy   s  $    U H&  n	U	R                  U5      (       d  M  Xi;   d  M"  Xy   s  $    [        R                   " SU SU SU SU SU S35        [        S	5      e)
NÚ.zUnsupported configuration: z-Unsupported configuration:
  engine_type   = z
  ocr_version   = z
  task_type     = z
  lang_type     = z
  model_type     = aE  

Please refer to the official model list for supported combinations:
https://rapidai.github.io/RapidOCRDocs/main/model_list/

Example valid usage:
  from rapidocr import LangRec, OCRVersion, RapidOCR
  engine = RapidOCR(params={'Rec.ocr_version': OCRVersion.PPOCRV5, 'Rec.lang_type': LangRec.CH, 'Rec.model_type': 'mobile'})zInvalid OCR configuration.)r   r   r2   r3   r   r4   r5   r	   ÚselectÚ
model_infor+   r   r   ÚSERVERÚ
startswithr   Úerror)
Úclsr]   r   r2   r3   r4   r5   Ú
model_dictÚ	model_keyÚks
             r,   Úget_model_urlÚInferSession.get_model_urlt   sé  € à×+Ñ+×1Ñ1ˆØ×+Ñ+×1Ñ1ˆØ×'Ñ'×-Ñ-ˆ	Ü" 9×#6Ñ#6Ó7ˆ	Ø×)Ñ)×/Ñ/ˆ
ä×%Ò%Ø�N‰N˜{˜m¨1¨[¨M¸¸9¸+ÐFó
ˆ
ö ÜØ-¨k¨]¸!¸K¸=ÈÈ)ÈÐTUÐV`ÐUaÐbóð ô &Ø×ÑØ×!Ñ!Ø×ÑØ× Ñ ó	
ˆ	ð Ñ ØÓ&Ø!Ñ,Ð,äØ-¨k¨]¸!¸K¸=ÈÈ)ÈÐTUÐV_ÐU`Ð`aÐblÐamÐnóð ð
 œ×)Ñ)×/Ñ/Ó/Û�Ø—<‘< 	×*Ó*¨z­Ø%™=Ò(ñ  ó ˆAØ�|‰|˜I×&Ó&¨:­?Ø!‘}Ò$ñ ô 	�Šð!Ø!, ð .!Ø!, ð .!Ø!* ð ,!Ø!* ð ,"Ø", ð .KðKô	
ô Ð5Ó6Ð6r.   c                 ó.   • U R                  U5      nUS   $ )NÚdict_url)ri   )re   r]   rf   s      r,   Úget_dict_key_urlÚInferSession.get_dict_key_url¯   s   € à×&Ñ& yÓ1ˆ
Ø˜*Ñ%Ð%r.   r6   )Ú	character)r7   r8   r9   r:   r	   ÚloadÚMODEL_URL_PATHra   ÚabcÚabstractmethodrE   ÚnpÚndarrayrK   Ústaticmethodr   r<   r   rS   ÚboolrX   r   r[   Úclassmethodr0   r   ri   rm   r=   r6   r.   r,   r?   r?   U   s"  † Ø—’ Ó/€Jà×Ññó ðð 	×Ñð b§j¡jð °R·Z±Zó ó ðð ð	B %¨¨T°4¨Ñ"8ó 	Bó ð	Bð 	×Ññ˜Cð °$ô ó ðð 	×Ññ cð ¸DÀ¹Iô ó ðð ð87 hð 87°4¸¸S¸±>ó 87ó ð87ðt ð&¨ð &°có &ó ó&r.   r?   )$rr   Údataclassesr   Úenumr   Úpathlibr   Útypingr   r   r   Únumpyrt   Ú	omegaconfr	   Ú	utils.logr   Úutils.model_resolverr   r   Úutils.typingsr   r   r   r   Úutils.utilsr   Ú__file__ÚresolveÚparentÚcur_dirrq   r-   r0   ÚABCr?   r6   r.   r,   Ú<module>rˆ      s‘   ðó Ý !Ý Ý ß $Ñ $ã Ý å ß Dß GÓ GÝ (á
ˆx‹.×
 Ñ
 Ó
"×
)Ñ
)×
0Ñ
0€ØÐ0Ñ0€ð3A˜Jô 3Aðl ÷ð ó ðô]&�3—7‘7õ ]&r.   