
    wi                         d dl Z d dlZd dlmZ d dlmZmZmZ d dlZ	d dl
mZmZmZ ddlmZmZ ddlmZ dd	lmZmZ d
dlmZ  G d de          Z G d de          ZdS )    N)Path)AnyDictList)GraphOptimizationLevelInferenceSessionSessionOptions   )DownloadFileDownloadFileInput)logger   )FileInfoInferSession   )ProviderConfigc                       e Zd Zdeeef         fdZedeeef         defd            Z	de
j        de
j        fdZdee         fdZdee         fdZdd
edee         fdZdd
edefdZdS )OrtInferSessioncfgc           	         |                     dd           }|Qt          |t                    st          dt	          |                     t          j        d           || _        d S |                     dd           }||                     t          |j
        |j        |j        |j        |j                            }| j        t!          |d                   j        z  }t%          |d         |d         |t
                    }t'          j        |           t          j        d	|            t!          |          }|                     |           |                     |j                  }t3          |j        
          }t          t5          |          ||                                          | _        |                    | j                                                   d S )Nsessionz0Expected session to be an InferenceSession, got z2Using the provided InferenceSession for inference.
model_path)engine_typeocr_version	task_type	lang_type
model_type	model_dirSHA256)file_urlsha256	save_pathr   zUsing )
engine_cfg)sess_options	providers)get
isinstancer   	TypeErrortyper   debugr   get_model_urlr   r   r   r   r   r   DEFAULT_MODEL_PATHr   namer   r   runinfo_verify_model_init_sess_optsr#   r   strget_ep_listverify_providersget_providers)selfr   r   r   
model_infodownload_paramssess_optprovider_cfgs           /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/rapidocr/inference_engine/onnxruntime/main.py__init__zOrtInferSession.__init__   s   '')T**g'788 VtG}}VV   LMNNN"DLFWW\400
++ # #!m!m"~   J 04
;8O3P3P3UUJ/#K0!(+$	  O _---)Z))****%%
:&&&''77%@@@'
OO!"..00
 
 

 	%%dl&@&@&B&BCCCCC    returnc                 \   t                      }d|_        | j        |_        t          j        |_        t          j                    }|                     dd          }|dk    rd|cxk    r|k    r
n n||_	        |                     dd          }|dk    rd|cxk    r|k    r
n n||_
        |S )N   intra_op_num_threadsr   inter_op_num_threads)r	   log_severity_levelenable_cpu_mem_arenar   ORT_ENABLE_ALLgraph_optimization_levelos	cpu_countr&   rA   rC   )r   r9   cpu_numsrA   rC   s        r;   r1   zOrtInferSession._init_sess_optsC   s    !##&'#(+(@%,B,Q)<>>"ww'=rBB2%%!/C*O*O*O*Ox*O*O*O*O*O,@H)"ww'=rBB2%%!/C*O*O*O*Ox*O*O*O*O*O,@H)r=   input_contentc                 4   t          t          |                                 |g                    }	 | j                            |                                 |          d         S # t          $ r(}t          j                    }t          |          |d }~ww xY w)Nr   )
dictzipget_input_namesr   r.   get_output_names	Exception	traceback
format_excONNXRuntimeError)r6   rK   
input_dicte
error_infos        r;   __call__zOrtInferSession.__call__U   s    #d2244}oFFGG
	6<##D$9$9$;$;ZHHKK 	6 	6 	6"-//J":..A5	6s   2A% %
B/#BBc                 H    d | j                                         D             S )Nc                     g | ]	}|j         
S  r-   .0vs     r;   
<listcomp>z3OrtInferSession.get_input_names.<locals>.<listcomp>^   s    :::1:::r=   )r   
get_inputsr6   s    r;   rO   zOrtInferSession.get_input_names]   s$    :: 7 7 9 9::::r=   c                 H    d | j                                         D             S )Nc                     g | ]	}|j         
S r[   r\   r]   s     r;   r`   z4OrtInferSession.get_output_names.<locals>.<listcomp>a   s    ;;;1;;;r=   )r   get_outputsrb   s    r;   rP   z OrtInferSession.get_output_names`   s$    ;; 8 8 : :;;;;r=   	characterkeyc                 r    | j                                         j        }||                                         S )N)r   get_modelmetacustom_metadata_map
splitlinesr6   rg   	meta_dicts      r;   get_character_listz"OrtInferSession.get_character_listc   s.    L..00D	~((***r=   c                 r    | j                                         j        }||                                v rdS dS )NTF)r   ri   rj   keysrl   s      r;   have_keyzOrtInferSession.have_keyg   s7    L..00D	)..""""4ur=   N)rf   )__name__
__module____qualname__r   r2   r   r<   staticmethodr	   r1   npndarrayrX   r   rO   rP   rn   boolrq   r[   r=   r;   r   r      s)       .DDcN .D .D .D .D` T#s(^     \"6bj 6RZ 6 6 6 6;c ; ; ; ;<$s) < < < <+ +c +DI + + + + C $      r=   r   c                       e Zd ZdS )rT   N)rr   rs   rt   r[   r=   r;   rT   rT   n   s        Dr=   rT   )rH   rR   pathlibr   typingr   r   r   numpyrv   onnxruntimer   r   r	   utils.download_filer   r   	utils.logr   baser   r   provider_configr   r   rQ   rT   r[   r=   r;   <module>r      s1   
			           " " " " " " " " " "     P P P P P P P P P P B B B B B B B B       ) ) ) ) ) ) ) ) + + + + + +Y Y Y Y Yl Y Y Yx	 	 	 	 	y 	 	 	 	 	r=   