o
    'j                  	   @   s   d dl Z d dlZe je jeZeje ejd e je j	ed de j
d< d dlZd dlZd dlZd dlZd dlm  mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZmZ d d
lm Z  d dl!m"Z" e Z#G dd de$Z%dd Z&e'dkre&e   dS dS )    Nz../..Zauto_growthZFLAGS_allocator_strategy)create_operators	transform)build_post_process)
get_logger)draw_ser_results)get_image_file_listcheck_and_read)
parse_args)	PaddleOCRc                   @   s   e Zd Zdd Zdd ZdS )SerPredictorc              
   C   s   t |j|j|jd|jd| _d|j|jd| j|jdiddddid	dddid
dddgiidg dg ddddidd iddg diig}d|jd}t	|ddi| _
t|| _t|dt\| _| _| _| _d S )NF)use_angle_clsdet_model_dirrec_model_dirZshow_loguse_gpuZVQATokenLabelEncode)	algorithm
class_pathZcontains_re
ocr_engineZorder_methodZVQATokenPadi   T)Zmax_seq_lenZreturn_attention_maskZVQASerTokenChunkZResizesize   ZNormalizeImage)g(\2M@g(\L@g     L@)g33333^@gR]@gRY@1Zhwc)ZstdmeanscaleorderZ
ToCHWImageZKeepKeysZ	keep_keys)	Z	input_idsZbboxZattention_maskZtoken_type_idsimagelabelsZsegment_offset_idocr_infoentitiesZVQASerTokenLayoutLMPostProcess)namer   Z
infer_modeZser)r
   r   r   r   r   r   Zkie_algorithmZser_dict_pathZocr_order_methodr   preprocess_opr   postprocess_oputilityZcreate_predictorlogger	predictorinput_tensoroutput_tensorsconfig)selfargsZpre_process_listZpostprocess_params r(   p/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/paddleocr/ppstructure/kie/predict_kie_token_ser.py__init__*   sh   	)
zSerPredictor.__init__c                 C   s  |  }d|i}t|| j}|d d u rdS t }tt|D ]}t|| tjr6tj	|| dd||< q || g||< q tt| j
D ]}| j
| ||  qE| j  g }| jD ]}| }|| q\|d }	| j|	|d |d d}
t | }|
||fS )Nr   r   )Nr   )Zaxis      )Zsegment_offset_idsZ	ocr_infos)copyr   r   timerangelen
isinstancenpZndarrayZexpand_dimsr#   Zcopy_from_cpur"   runr$   Zcopy_to_cpuappendr   )r&   imgZori_imdataZ	starttimeidxZoutputsZoutput_tensoroutputpredsZpost_resultelapser(   r(   r)   __call__e   s.   


zSerPredictor.__call__N)__name__
__module____qualname__r*   r;   r(   r(   r(   r)   r   )   s    ;r   c              	   C   sn  t | j}t| }d}d}tj| jdd ttj| jdddd}|D ]}t	|\}}}	|sCt
|}|d d d d d d df }|d u rPtd	| q%||\}
}	}|
d }
d
|tjd|
idd}|| t||
| jd}tj| jtj|}t
|| td| |dkr||7 }|d7 }td|| q%W d    d S 1 sw   Y  d S )Nr   T)exist_okz	infer.txtwzutf-8)modeencodingzerror in loading image:{}z{}	{}
r   F)ensure_ascii)Z	font_pathzsave vis result to {}   zPredict time of {}: {})r   Z	image_dirr   osmakedirsr8   openpathjoinr   cv2Zimreadr!   infoformatjsondumpswriter   Zvis_font_pathbasenameZimwrite)r'   Zimage_file_listZser_predictorcount
total_timeZf_wZ
image_filer5   flag_Zser_resr:   res_strZimg_resZimg_save_pathr(   r(   r)   main   sZ   




"rW   __main__)(rF   sysrI   dirnameabspath__file____dir__r4   insertrJ   environrK   rN   numpyr2   r.   Ztools.infer.utilityZinferr    Z
ppocr.datar   r   Zppocr.postprocessr   Zppocr.utils.loggingr   Zppocr.utils.visualr   Zppocr.utils.utilityr   r   Zppstructure.utilityr	   Z	paddleocrr
   r!   objectr   rW   r<   r(   r(   r(   r)   <module>   s0    
[,