o
    !i                     @   s  d dl 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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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! ddl"m#Z# ddl$m%Z% ddl&m'Z' d	d
 Z(dd Z)dd Z*dd Z+dd Z,dd Z-dd Z.dd Z/dS )    N)Thread   )ChartParsingDocImgOrientationClassificationDocVLMFormulaRecognitionLayoutDetectionSealTextDetectionTableCellsDetectionTableClassificationTableStructureRecognitionTextDetectionTextImageUnwarping!TextLineOrientationClassificationTextRecognition)
DocPreprocessorDocUnderstandingFormulaRecognitionPipeline	PaddleOCRPaddleOCRVLPPChatOCRv4DocPPDocTranslationPPStructureV3SealRecognitionTableRecognitionPipelineV2)version)CLIDeprecationWarning)loggerc              
   C   sB   t ttttttttt	f
D ]}|
 }|| }|j|jd qd S Nexecutor)r   r   r   r   r   r   r   r   r   r   get_cli_subcommand_executoradd_subparserset_defaultsexecute_with_args
subparsersclsZsubcommand_executor	subparser r)   Z/home/app/PaddleOCR-VL-test/.venv_paddleocr/lib/python3.10/site-packages/paddleocr/_cli.py_register_pipelines9   s   
r+   c                 C   sH   t ttttttttt	t
ttfD ]}| }|| }|j|jd qd S r   )r   r   r   r   r   r	   r
   r   r   r   r   r   r   r!   r"   r#   r$   r%   r)   r)   r*   _register_modelsK   s$   
r,   c                 C   6   dd }|  d}|jdtg dd |j|d d S )Nc                 S   sR   d| j  }ztdd|g tg d W d S  tjy(   td Y d S w )Nzhpi-paddlex	--install)r.   r/   Zpaddle2onnxFailed to install dependencies)variant
subprocess
check_callCalledProcessErrorsysexit)argsZhpipr)   r)   r*   _install_hpi_depsa   s   z=_register_install_hpi_deps_command.<locals>._install_hpi_depsZinstall_hpi_depsr1   )cpuZgpuZnputypechoicesr   
add_parseradd_argumentstrr#   )r&   r8   r(   r)   r)   r*   "_register_install_hpi_deps_command`   s   
rA   c                 C   r-   )Nc                 S   sB   zt ddd| j dg W d S  t jy    td Y d S w )Nr.   r/   zgenai-z-serverr0   )r2   r3   r1   r4   r5   r6   r7   r)   r)   r*   _install_genai_server_depso   s   
zO_register_install_genai_server_deps_command.<locals>._install_genai_server_depsZinstall_genai_server_depsr1   )ZvllmZsglangZ
fastdeployr:   r   r=   )r&   rC   r(   r)   r)   r*   +_register_install_genai_server_deps_commandn   s   

rD   c                    sh   z
ddl m}m W n
 ty   Y d S w dd   fdd}| }| jd|gdd	}|j|d
 d S )Nr   )get_arg_parserrun_genai_serverc              	   S   s   | dkrd} 	 zt jd|  d| ddd}|jd	krW nW n t jjt jjfy-   Y nw td qd
| d|  d| d}t	| d S )Nz0.0.0.0	localhostTzhttp://:z/healthr   )timeout   zThe PaddleOCR GenAI server has been started. You can either:
    1. Set the server URL in the module or pipeline configuration and call the PaddleOCR CLI or Python API. For example:
        paddleocr doc_parser --input demo.png --vl_rec_backend z#-server --vl_rec_server_url http://zK/v1
    2. Make HTTP requests directly, or using the OpenAI client library.)
requestsgetstatus_code
exceptionsConnectionErrorTimeouttimesleepr   info)hostportbackendresppromptr)   r)   r*   #_show_prompt_when_server_is_running   s*   

zK_register_genai_server_command.<locals>._show_prompt_when_server_is_runningc                    sN   t  | j| j| jfdd  z|  W d S  tjy&   td Y d S w )NT)targetr7   daemonzFailed to run the server)	r   rT   rU   rV   startr2   r4   r5   r6   rB   rY   rF   r)   r*   _run_genai_server   s   z9_register_genai_server_command.<locals>._run_genai_serverZgenai_serverresolve)parentsconflict_handlerr   )Zpaddlex.inference.genai.serverrE   rF   RuntimeErrorr>   r#   )r&   rE   r^   Zpaddlex_parserr(   r)   r]   r*   _register_genai_server_command~   s   rc   c                  C   s\   t jdd} | jddddt d | jdd	}t| t| t| t| t	| | S )
NZ	paddleocr)progz-vz	--versionr   z	%(prog)s )actionr   
subcommand)dest)
argparseArgumentParserr?   r   add_subparsersr+   r,   rA   rD   rc   )parserr&   r)   r)   r*   _get_parser   s   rl   c                 C   s   |  |  d S )Nr   rB   r)   r)   r*   _execute   s   rm   c                  C   sT   t tj tjdtd t } |  }|j	d u r$| 
tj td t| d S )Ndefault)category   )r   setLevelloggingINFOwarningsfilterwarningsr   rl   
parse_argsrf   print_usager5   stderrr6   rm   )rk   r7   r)   r)   r*   main   s   

ry   )0rh   rr   r2   r5   rQ   rt   	threadingr   rK   Z_modelsr   r   r   r   r   r	   r
   r   r   r   r   r   r   Z
_pipelinesr   r   r   r   r   r   r   r   r   r   _versionr   Z_utils.deprecationr   Z_utils.loggingr   r+   r,   rA   rD   rc   rl   rm   ry   r)   r)   r)   r*   <module>   s*   <0*