
    9iJ                        S SK r S SKrS SKrS SKr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JrJrJrJrJrJrJrJr  S SKrS SKrS SKrS SKJr  \\\\\4   \\   4      r\\\\\   \\   4      r \ r!\\\\   4   r"\\\\\\\   4   4      r#Sr$Sr%S	\S
\\   4S jr&S\'S\\\\(   4   SS4S jr)SLS\S\S\4S jjr*S\\S\+4   S\4S jr,SLS\\S4   S\S\4S jjr-SSSSS.S\\#   S\\   S\\\      S\S\\\4   4
S jjr.S\S\R^                  S\4S jr0S \S!\S"\\/\14   S\4S# jr2SMS$\\\\\\4   S%\S\4S& jjr3S' r4S( r5SNS) jr6SOS*SS+\SS4S, jjr7\" S-5      r8S.\\\84   S\\
\84   4S/ jr9S0 r:\:S1\S\
4   SS4S2 j5       r;\;4S3\\\S\\
4      S4\\/\84   S\\8   4S5 jjr<SPS6 jr=SQS7 jr>\:SRS8\
4S9 jj5       r?S:\S;\\   S<\S=\4S> jr@\:S8\
S\R                  4S? j5       rB\:S8\
S\R                  4S@ j5       rC\:S8\
4SA j5       rD\:SB\
SC\4SD j5       rESE\4SF jrF\GSG:X  a  \@" SH/ SIQSJSK5        gg)S    N)Mapping)deepcopy)BytesIO)AnyCallableListTypeVarUnionTupleSetDictTypeOptionalSequence)version)g
ףp=
?gv/?gCl?)gZd;O?gy&1?g?text
delimitersc                    [        U [        5      (       d
   SU  35       eU Vs/ s H  o"S   PM	     nnU Vs/ s H  n[        U5      PM     nn/ nSn[        U 5      S:  a  [        U 5       H  u  px[        U5       V	V
s/ s H  u  pX:X  d  M  U	PM     nn	n
SnU H`  nXXtU   -    X   :X  d  M  U(       a  XeS   S'   OU(       a  UR	                  SUS.5        SnUR	                  SX   05        XXM   -   S	 n S
n  O   U(       d  Xh-  nM    O   X`:X  a  Sn [        U 5      S:  a  M  [        U5      (       a	  XeS   S'   U$ UR	                  SUS.5        U$ s  snf s  snf s  sn
n	f )zSplit the text field into parts.

Args:
    text: A text to be split.
    delimiters: The delimiters.

Returns:
    The split text in list of dicts.
ztext: r    Fcontentkeyr   r   NT)
isinstancestrlen	enumerateappend)r   r   dall_start_chars
all_length	text_list
last_wordschar_idxcharidx
start_charmatch_indexis_delimiterindexs                 h/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/modelscope/preprocessors/templates/utils.pysplit_str_parts_byr,      s    dC  1F4&/1 %/0ZtZO0",-*Q#a&*J-IJ
d)a-'oNH6?6Pg6P?3T^Tf36PKg L$u,=!=>*BSS 3="i0#!((
)KL!#J$$eZ->%?@:+< < =>D#'L %  "
# .$ D) d)a-, 9~~#-"i   	
;<A 1- hs   EE E"E"r"   regex_delimitersreturnc           
         SS K nUR                  5        VVs/ s H  u  p4UR                  " U5      U4PM     nnn[        [	        U 5      S-
  SS5       H  nX   nUR                  S5      S:X  d  M  US   nSn	/ n
U H  u  p4[        UR                  " X85      5      nU Hq  nUR                  5       U	:  a$  U
R                  SXUR                  5        S.5        U
R                  US   UR                  S5      S.5        UR                  5       n	Ms     M     U	[	        U5      :  a  U
R                  SSXS  S.5        U
(       d  M  XXfS-   & M     g s  snnf )Nr      r   r   r   r   r   )reitemscompileranger   getlistfinditerstartr   groupendinsert)r"   r-   r1   patternscalecompiled_patternsiitemres_textlast_idxsegmentsmatchesmatchs                r+   split_parts_by_regexrF   K   s7   L\LbLbLdeLd.'"**W-u5Lde3y>A%r2.|88E?b IHHH"3r{{7=>$E{{}x/ xQVQ\Q\Q^?_(`aOOE!HQ$PQ$yy{H	 % #4 #h-'2(9:M#NOx%-!E"' / fs    Etmpprompttmp_dirc                     Sn[         R                  " X 5      nSnSnU HA  nUR                  S5      nUR                  S5      n[	        X5      n	X@XWS    U	-   -  nUS   nMC     X@US  -  nU$ )Nz0<(?:img|audio|video)>(.+?)</(?:img|audio|video)>r   r   r0   )r1   r7   spanr9   _from_base64)
rH   rI   r<   
match_iternew_contentr&   mrK   
img_base64img_paths
             r+   _decode_promptrR   d   s    AGW-JK
CvvayWWQZ

4cq'*X551g  #$<K    rQ   zPIL.Image.Imagec                    [        U [        5      (       a&  [        R                  R	                  U 5      (       d  U $ [        U [        5      (       a&  [        U S5       nUR                  5       nS S S 5        OB[        U [        5      (       d+  [        5       nU R                  USS9  UR                  5       nOU n[        R                  " W5      R                  S5      nU$ ! , (       d  f       N5= f)Nrbpngformatutf-8)r   r   ospathisfileopenreadbytesr   savegetvaluebase64	b64encodedecode)rQ   f_bytesbytes_iorP   s        r+   
_to_base64rh   s   s    (C  )A)A(C  (D!QVVXF "!%((9hu-""$&&v.55g>J "!s   C  
C.rP   c                 :   SSK Jn  [        U [        5      (       d  [	        U 5      n [
        R                  R                  U 5      (       d  U R                  S5      (       a  U $ [        R                  " U R                  S5      5      R                  5       n[
        R                  R                  X S35      nUR                  [        [         R"                  " U 5      5      5      n[
        R                  R%                  U5      (       d  UR'                  U5        U$ )Nr   ImagehttprY   z.png)PILrk   r   r   rh   rZ   r[   r\   
startswithhashlibsha256encode	hexdigestjoinr]   r   rb   	b64decodeexistsr`   )rP   rI   rk   sha256_hashrQ   images         r+   rL   rL      s    j#&&
+
	ww~~j!!Z%:%:6%B%B..!2!27!;<FFHKww||G}D%9:HJJwv//
;<=E77>>(##

8OrS   )messagesrH   imagesrI   rx   ry   c                 4   [         R                  " USS9  0 nU b=  / nU  H1  n[        U5      n[        US   U5      US'   UR	                  U5        M3     XTS'   Ub  [        X5      nXS'   Ub+  / nU H  n	[        X5      n	UR	                  U	5        M!     XS'   U$ )NT)exist_okr   rx   rH   ry   )rZ   makedirsr   rR   r   rL   )
rx   rH   ry   rI   resres_messagesrO   m_new
res_imagesrw   s
             r+   decode_base64r      s     KK$'
CAQKE-eI.>HE)&  'J0H
E 0Ee$  #HJrS   inputsdevicec                 ~   [        [        U SS5      5      (       a  U R                  US9$ [        U [        5      (       a*  0 nU R                  5        H  u  p4[        XA5      X#'   M     U$ [        U [        5      (       a<  [        U [        5      (       d'  / nU  H  nUR                  [        XQ5      5        M     U$ U nU$ )zMove inputs to a devicetoN)r   )
callablegetattrr   r   r   r2   	to_devicer   r   r   )r   r   r}   kvbs         r+   r   r      s    d+,,yyy''&'""LLNDAq)CF # J 
FH	%	%j.E.EAJJy+,  J JrS   lohicondc                 \    X:  a&  X-   S-   S-	  nU" U5      (       a  Un OUS-
  nX:  a  M&  U $ )Nr0    )r   r   r   mids       r+   upper_boundr      s<    
'w{q 99BqB ' IrS   elementtypec                    [        U [        [        [        45      (       a5  U  H.  n[	        U5      nU(       d  M  Ub  [        X15      (       d  M,  Us  $    g [        U [
        5      (       a"  [	        [        U R                  5       5      5      $ U $ N)r   tuplesetr6   	fetch_onedictvalues)r   r   eleouts       r+   r   r      sl    'E3-..CC.Cs
3(=(=
  
GT	"	"gnn./00rS   c           
          SS K Jn  SSKJn  [        [
        pCUR                  UR                  S 5      UR                  X 4UR                  S9UR                  5       UR                  X4S9/5      nU$ )Nr   InterpolationModec                 H    U R                   S:w  a  U R                  S5      $ U $ )NRGB)modeconvert)imgs    r+   <lambda>"_build_transform.<locals>.<lambda>   s     388u3DS[[/M#MrS   )interpolation)meanstd)torchvision.transforms
transforms!torchvision.transforms.functionalr   IMAGENET_MEANIMAGENET_STDComposeLambdaResizeBICUBICToTensor	Normalize)
input_sizeTr   MEANSTD	transforms         r+   _build_transformr      sh    &C|#			MN	*)9J9R9RS	

	'	 I rS   c                     [        S5      nSnX#-  nU HI  nUS   US   -  n	[        X	-
  5      n
X:  a  U
nUnM&  X:X  d  M-  USU-  U-  US   -  US   -  :  d  MG  UnMK     U$ )Ninf)r0   r0   r   r0         ?)floatabs)aspect_ratiotarget_ratioswidthheight
image_sizebest_ratio_diff
best_ratioarearatiotarget_aspect_ratio
ratio_diffs              r+   _find_closest_aspect_ratior      s    ElOJ>D#Ahq1;<
'(OJ*cJ&3eAh>qII"
  rS   c                 R  ^^ U R                   u  pVXV-  n[        UU4S j[        TTS-   5       5       5      n[        US S9n[	        XxXVU5      n	X9S   -  n
X9S   -  nU	S   U	S   -  nU R                  X45      n/ n[        U5       HQ  nXU-  -  U-  XU-  -  U-  XU-  -  S-   U-  UX-  -  S-   U-  4nUR                  U5      nUR                  U5        MS     [        U5      U:X  d   eU(       a2  [        U5      S:w  a#  U R                  X345      nUR                  U5        U$ )Nc              3      >#    U  HJ  n[        S US -   5        H3  n[        S US -   5        H  nX#-  T::  d  M  X#-  T:  d  M  X#4v   M     M5     ML     g7f)r0   N)r4   ).0nr?   jmax_nummin_nums       r+   	<genexpr>&_dynamic_preprocess.<locals>.<genexpr>   sf      B(C1USTVWZ[V[_fklmopstotfuab5G+ 010@ fu_(Cs   2AAAr0   c                     U S   U S   -  $ )Nr   r0   r   )xs    r+   r   %_dynamic_preprocess.<locals>.<lambda>   s    !qtrS   )r   r   )	sizer   r4   sortedr   resizecropr   r   )rw   r   r   r   use_thumbnail
orig_widthorig_heightr   r   r   target_widthtarget_heightblocksresized_imgprocessed_imagesr?   box	split_imgthumbnail_imgs    ``                r+   _dynamic_preprocessr      s   #jjJ+L  Bgw{(C B BM=.CDM 5\R\kuv A 66LQ!77M #&9!&<<F ,,<=K6]Z/0J>WaGaAbfp@pj01Q6*DIUIcIehiHjmwGxy  $$S)		*   F***-.!3j%=>.rS   r   rescale_imagec                     SS K Jn  U R                  nU R                  nUS::  d  X4-  U::  a  U $ X4-  n[        R
                  " X-  S5      nXe-  nUR                  [        U5      [        U5      45      " U 5      $ )Nr   r   )r   r   r   r   mathpowr   int)r   r   r   r   r   r   height_scaledwidth_scaleds           r+   r   r     sr    &IIEZZFU^}<
NEHH]2C8M (L88S&M(:;<SAArS   _Tr[   c                    U n[        U [        5      (       a  U R                  5       n U R                  S5      (       aZ  0 n[	        [
        R                  " SS5      5      nUS:  a  X2S'   [        R                  " U 40 UD6R                  n[        U5      nU$ [
        R                  R                  U 5      (       a0  [        U S5       n[        UR                  5       5      nS S S 5        U$ SS Kn [         R"                  " U 5      n[        U5      nU$ U$ ! , (       d  f       U$ = f! [$        UR&                  4 a1  n[)        U 5      S:  a  [%        SU  S	35      e[%        S
U 35      eS nAff = f)Nrl   TIMEOUT60r   timeoutrU      zinvalid image: ""zinvalid image: )r   r   striprn   r   rZ   getenvrequestsr5   r   r   r[   ru   r]   r^   binasciirb   rt   
ValueErrorErrorr   )	r[   r}   request_kwargsr   r   re   r   dataerrors	            r+   	load_filer   )  sK   
C$zz|??6""NBIIi67G{,3y)ll4:>:BBG'"C J WW^^D!!dD!Qaffh' " J @''-dm J3J "! J / @t9s?$'7vQ%?@@$ug%>??	@s$   D1!D( 
D%(E/>,E**E/c                    ^  U 4S jnU$ )Nc                 6   > [        U 5      n T" U /UQ70 UD6nU$ r   )r   )r[   argskwargsr}   funcs       r+   new_func%load_file_decorator.<locals>.new_funcF  s%    4)$)&)
rS   r   )r  r  s   ` r+   load_file_decoratorr  D  s    
 OrS   rw   c                     SSK Jn  [        U [        5      (       a  UR	                  U 5      n U R
                  S:w  a  U R                  S5      n U $ )Nr   rj   r   )rm   rk   r   r   r]   r   r   )rw   rk   s     r+   
load_imager
  N  s?    %!!

5!zzUe$LrS   	path_list	load_funcc                     / n[        U [        [        45      (       d
   SU  35       eU  H  nUc  M  UR                  U" U5      5        M!     U$ )Nzpath_list: )r   r6   r   r   )r  r  r}   r[   s       r+   
load_batchr  X  sS    
Ci$//J;yk1JJ/<

9T?#  JrS   c                 d   U (       a
  U S   U S   peOSu  pV[        U[        XQ-  5      5      n[        [        Xa-  5      U5      n[        X-
  5      U-  n	[        R
                  " [        U5       V
s/ s H,  n
[        XyS-  -   [        R                  " X-  5      -   5      PM.     sn
5      nU$ s  sn
f )Nr   r0   )i`yi    )maxroundminr   nparrayr4   r   )boundfps	max_frame	first_idxnum_segmentsr8   r:   	start_idxend_idxseg_sizer&   frame_indicess               r+   
_get_indexr  c  s    1XuQxs$
IuU[12I%	"I.GW()L8HHHOTUaObcObYQ,'"((8>*BB	CObceM 	ds   13B-c                     [        US9n[        XSUS9nU V s/ s H
  o" U 5      PM     nn [        R                  " U5      nU$ s  sn f )N)r   T)r   r   r   )r   r   torchstack)rw   r   r   r   ry   pixel_valuess         r+   transform_imager$  p  sM     J7I T[bcF289&Ie$&L9;;|,L :s   Avideo_ioc                 6   SSK JnJn  SSKJn  U" X" S5      SS9n[        U5      S-
  n[        UR                  5       5      n/ n	[        XUSUS9n
U
 HB  nU	R                  UR                  Xk   R                  5       5      R                  S5      5        MD     U	$ )Nr   VideoReadercpurj   r0   )ctxnum_threads)r  r  r   )decordr(  r)  rm   rk   r   r   get_avg_fpsr  r   	fromarrayasnumpyr   )r%  r  r  r(  r)  rk   vrr  r  ry   r  frame_indexs               r+   load_video_internvlr2  x  s    '	X3q6q	9BB!I
 
!CFu9P\]M$eoobo&=&=&?@HHOP %MrS   img_dirbbox	bbox_typeoutput_filec                     SSK JnJn  SSKJn  UR                  U 5      nXSS./nUR                  X/S5        US   S   nUR                  U5      n	U	R                  USSS	9  UR                  U5        g )
Nr   )rk   	ImageDraw)Template)r4  r5  rw   realr4  redr  )outliner   )
rm   rk   r8  swift.llm.template.templater9  r]   normalize_bboxDraw	rectangler`   )
r3  r4  r5  r6  rk   r8  r9  rw   objectsdraws
             r+   	draw_plotrC    so    $4JJwEqABGGWf51:fD>>% DNN4aN0	JJ{rS   c                    SSK JnJnJn  UR	                  S5        SnSnSnU" X" S5      S9n[        U5      n[        XWR                  5       -  5      n	Ub%  [        U[        XGR                  5       -  5      5      OUn
[        R                  " XS-
  U[        S9nUR                  U5      nUR                  S	SSS
5      nU$ )Nr   )r)  r(  bridger!  <      r*  r0   )dtype   r  )r,  r)  r(  rE  
set_bridger   r   r-  r  r  linspace	get_batchpermute)r%  r)  r(  rE  clip_end_secclip_start_sec
num_frames	decord_vrdurationstart_frame	end_frameframe_id_list
video_datas                r+   load_video_cogvlm2rX    s    //
gLNJH#a&1I9~Hn'<'<'>>?K  Hc,1F1F1H"HIJ&. KK]JcRM$$]3J##Aq!Q/JrS   c           	         SS K nUR                  U 5      nUR                  R                  S   R                  n[
        R                  " SX3S-  5      R                  [        5      n/ nUR                  S5        US   nUS   n[        UR                  SS95       H+  u  pX:  a    O#X:  d  M  X;   d  M  UR                  U	5        M-     [
        R                  " U V
s/ s H  oR                  SS9PM     sn
5      $ s  sn
f )Nr      r   )videorgb24rW   )avr]   streamsr[  framesr  arangeastyper   seekr   rd   r   r"  
to_ndarray)r%  r]  	containertotal_framesindicesr_  start_index	end_indexr?   framer   s              r+   load_video_llavarj    s    !I$$**1-44Lii<)9:AA#FGFNN1!*KIi..Q.78=MM% 	 9
 886B6a\\\16BCCBs   C=c                    SSK Jn  SSKJnJn  S nU" X" S5      S9n[        UR                  5       S-  5      n[        S[        U5      U5       Vs/ s H  oPM     n	n[        U	5      U:  a  U" X5      n	UR                  U	5      R                  5       n
U
 Vs/ s H"  oR                  UR                  S5      5      PM$     n
nU
$ s  snf s  snf )Nr   rj   r'  c                     [        U 5      U-  n[        U5       Vs/ s H  n[        X2-  US-  -   5      PM     nnU Vs/ s H  o0U   PM	     sn$ s  snf s  snf )Nr  )r   r4   r   )_l_ngapr?   idxss        r+   uniform_sample6load_video_minicpmv_mplug_owl3.<locals>.uniform_sample  sV    "gl05b	:	1AGcAg%&	:#$t!1t$$ ;$s
   AArH  r0   uint8)rm   rk   r,  r(  r)  r  r-  r4   r   rM  r/  r.  ra  )r%  max_num_framesrk   r(  r)  rq  r0  
sample_fpsr?   	frame_idxr_  r   s               r+   load_video_minicpmv_mplug_owl3rw    s    '%
 
X3q6	*Br~~'!+,J!!SWj9:9q9I:
9~&"9=	\\)$,,.F:@A&Qooahhw/0&FAM ;
 Bs   C)Caudio_iosampling_ratec                 .    SS K nUR                  XS9S   $ )Nr   )sr)librosaload)rx  ry  r|  s      r+   load_audio_qwenr~    s    <<<3A66rS   
video_pathc           	      6   SSK Jn  SS KnSSKJnJn  SSKJnJnJnJ	nJ
n	Jn
JnJnJnJnJn  SSKJn  [&        R(                  " UR*                  5      [&        R(                  " S5      :  a  [-        U 5      n UR/                  U SSS	9u  nnnU" S
[0        S 5      nU" S[0        S 5      nU" S[0        U5      nU(       a  U(       a   S5       eUb
  U" UU5      nO_UnUR3                  S5      US   -  U-  nU" UU5      nU" S[0        U5      nU" S[0        U	5      nUU:  a	  U" UU5      nUU:  a	  U" UU5      nUU::  a  UUR3                  S5      ::  d$  [5        SU SUR3                  S5       SU S35      e[6        R8                  " SUR3                  S5      S-
  U5      R;                  5       R=                  5       nUR>                  SS  u  nnUU   nU" S[0        U
5      nU" S[0        U5      nU" S[0        S 5      nUc!  Un[A        [C        UUU-  U-  5      US-  5      nU" S[0        S 5      nU" S[0        S 5      n U(       a  U (       a  U" UU US9u  nn OU" UUUUUS9u  nn URD                  RG                  UUU /URH                  SS 9RK                  5       nU$ )!Nr   )get_env_args)ior   )round_by_factorFPSFRAME_FACTORFPS_MIN_FRAMESFPS_MAX_FRAMESVIDEO_MIN_PIXELSVIDEO_MAX_PIXELSVIDEO_TOTAL_PIXELSsmart_resizeceil_by_factorfloor_by_factorr   z0.19secTCHW)pts_unitoutput_formatnframesr  size_factorz%Only accept either `fps` or `nframes`	video_fps
min_frames
max_framesznframes should in interval [z, z], but got .r0   r  
min_pixelstotal_pixels
max_pixelsg?resized_heightresized_width)factor)r  r  r  T)r   	antialias)&r=  r  torchvisionr  r   qwen_vl_utils.vision_processr  r  r  r  r  r  r  r  r  r  r  r   r   r   parse__version__r   
read_videor   r   r   r!  rL  r  longshaper  r  
functionalr   r   r   )!r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r[  _infor  r  r  r  r  r&   r   r   r  r  r  r  r  s!                                    r+   load_video_qwen2r    s   8*O O O O 9}}[,,-v1FFz*
]] # NE1d
 9c40G
uc4
(C}c<@KI"II !';7**Q-${"33c9!';7!,^D
!,^D
Z$Z=GZ%j+>G7"w%**Q-'?7}BuzzRS}oU`ah`iijkll
..EJJqMA-w
7
=
=
?
D
D
FCKKOMFE#JElC1ABJ5GHLlC6J%
Z)?+)MNPZ]aPab
!"2C>N #t<M-(4)
% )5!!)
% !!((	''//	 ) 
 eg 
 LrS   __main__zman.jpg)ib  i  iD  i  	norm_1000zman_bbox.jpg)rG   r   )r0        F)r   )r       )r  r  )Nr  )Hrb   ro   r   rZ   r1   collections.abcr   copyr   r  r   typingr   r   r   r	   r
   r   r   r   r   r   r   numpyr  r   r!  	packagingr   r   Historyr   Prompt	StopWordsContextMessagesr   r   r,   r6   r   rF   rR   r_   rh   rL   r   r   r   boolr   r   r   r   r   r   r   r   r  r
  r  r  r$  r2  rC  ndarrayrX  rj  rw  r~  r  __name__r   rS   r+   <module>r     s      	 	 #   b b b b     uU38_d3i/0
1	eCcDI-.	/	
T#Y
S%T$Z0012 &$+S +d3i +\.D .Dd5kAQ<R .W[ .23   s$5u<= # $U3(9#9: S UX  26*.04!&	$X."3- #49- 	 ,0S>	6c 5<< C $C S #(= # 	uUD#tS89 	 	QT 	
 J
B( 
B 
BFW 
B T]E#r'N uWb['9 6 e-w67 <M   1;$uS$W%<=> "C5"9-?CBx
 '  
s 
$s) 
 
# 
  RZZ  " Dw D2:: D D" W  ( 7g 7c 7 7
F FR zi-{NK rS   