
    i                         S r SSKrSSKJr  SSKJrJrJrJrJ	r	  SSK
Jr  SSKJr  SSKJr  SSKJrJr  SS	KJr   " S
 S\5      rg)z3
Image parser.

Contains parsers for image files.

    N)Path)DictListOptionalcastAny)AbstractFileSystem)BytesIO)
BaseReader)DocumentImageDocument)infer_torch_devicec                       \ rS rSrSrSSSS0 4S\\   S\S\S	\S
\\\	4   4
S jjr
  SS\S\\   S\\   S\\   4S jjrSrg)ImageReader   zF
Image parser.

Extract text from images using DONUT or pytesseract.

NFtextparser_config
keep_image
parse_text	text_typepytesseract_model_kwargsc                 R   X@l         UcT  U(       aM  US:X  a
   SSKnSnUnO9 SSKn	SSKn
SSKJn  SSKJnJ	n  UR                  S5      nUR                  S5      nXxS	.nXl        X l        X0l        XPl        g! [         a    [        S5      ef = f! [         a    [        S5      ef = f)
zInit parser.N
plain_textr   zPlease install extra dependencies that are required for the ImageReader when text_type is 'plain_text': `pip install pytesseract`Image)DonutProcessorVisionEncoderDecoderModelzPlease install extra dependencies that are required for the ImageCaptionReader: `pip install torch transformers sentencepiece Pillow`z+naver-clova-ix/donut-base-finetuned-cord-v2)	processormodel)
_text_typepytesseractImportErrorsentencepiecetorchPILr   transformersr   r   from_pretrained_parser_config_keep_image_parse_text_pytesseract_model_kwargs)selfr   r   r   r   r   r!   r   r   r#   r$   r   r   r   s                 ]/home/james-whalen/.local/lib/python3.13/site-packages/llama_index/readers/file/image/base.py__init__ImageReader.__init__   s     $ ZL(& !	#
( )V +::A	 2AAA +4DM+%%)A&A # %4  # %P s   A7 B 7BB&file
extra_infofsreturnc                 ~   SSK Jn  SSKJn  U(       aA  UR	                  US9 nUR	                  [        UR                  5       5      5      nSSS5        OUR	                  U5      nWR                  S:w  a  UR                  S5      nSnU R                  (       a  U" U5      nSn	U R                  (       Ga  U R                  c   eU R                  S   n
U R                  S	   nU(       Gai  [        5       nU
R                  U5        S
nUR                  USSS9R                  nU" USS9R                   nU
R#                  UR                  U5      UR                  U5      U
R$                  R&                  R(                  SUR                  R*                  UR                  R,                  SSUR                  R.                  //SS9
nUR1                  UR2                  5      S   nUR5                  UR                  R6                  S5      R5                  UR                  R8                  S5      n[:        R<                  " SSUSS9R?                  5       n	O:SSK n[C        UU R                  S   5      n
U
RD                  " U40 U RF                  D6n	[I        U	U[K        U5      U=(       d    0 S9/$ ! , (       d  f       GNV= f)zParse file.r   )	img_2_b64r   )pathNRGB r   r   z<s_cord-v2>Fpt)add_special_tokensreturn_tensors)r;   T   )	decoder_input_ids
max_lengthearly_stoppingpad_token_ideos_token_id	use_cache	num_beamsbad_words_idsreturn_dict_in_generatez<.*?>   )count)r   image
image_pathmetadata)&llama_index.core.img_utilsr5   r%   r   openr
   readmodeconvertr)   r*   r(   r   to	tokenizer	input_idspixel_valuesgeneratedecoderconfigmax_position_embeddingsr@   rA   unk_token_idbatch_decode	sequencesreplace	eos_token	pad_tokenresubstripr!   r   image_to_stringr+   r   str)r,   r0   r1   r2   r5   r   frH   	image_strtext_strr   r   devicetask_promptr=   rS   outputssequencer!   s                      r-   	load_dataImageReader.load_dataK   s    	9 d#q

71668#45 $# JJt$E::MM%(E $(	!%(I &&222''0E++K8I+-  ,$-$7$7E$ %8 %) "  )tDQQ.. OOF+&7&:&:6&B$}}33KK#'!*!4!4!A!A!*!4!4!A!A"$-$7$7$D$D#E"F,0 )  %11'2C2CDQG#++I,?,?,I,I2NVV''112 66(BBHHJ"[$*=*=g*FG 00!;;
 t9#)r	
 	
w $#s   )J--
J<)r)   r*   r(   r+   r    )NN)__name__
__module____qualname____firstlineno____doc__r   r   boolrb   r   r.   r   r	   r   r   rj   __static_attributes__     r-   r   r      s     )-  35.B~.B .B 	.B
 .B #'sCx..Bf &*+/	N
N
 TNN
 '(	N

 
hN
 N
rt   r   )rp   r^   pathlibr   typingr   r   r   r   r   fsspecr	   ior
   llama_index.core.readers.baser   llama_index.core.schemar   r   llama_index.core.utilsr   r   rs   rt   r-   <module>r|      s5    
  2 2 %  4 ; 5F
* F
rt   