
    4 jV                          d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZmZ d dlmZ d Zdd	d
dddedededededededededededz  fdZd Zedk(  r e        yy)    N)Path)Optional)SegmentedPdfPageTextCellUnit)DoclingPdfParserPdfDocument)DecodePageConfigc                     t        j                  d      } | j                  ddt        g dddd	       | j                  d
dt        ddgddd	       | j                  ddt        g dddd	       | j                  ddt        dd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  ddd       | j                  d d!t        dd d"#       | j                  d$d%t        dd&d'#       | j                  d(t        dd)*       | j                         }t        j                  j                  |j                        sJ d+|j                          |j                  kt        j                  j                  |j                        sBt        j                  |j                         t        j                  d,|j                   d-       |j                  |j                  |j                  |j                  t	        |j                         |j"                  |j$                  |j&                  |j(                  |j*                  |j,                  fS ).NzProcess a PDF file.)descriptionz-lz--log-level)infowarningerrorfatalFr   z'Log level [info, warning, error, fatal])typechoicesrequireddefaulthelpz-bz--page-boundarycrop_box	media_boxz#page-boundary [crop_box, media_box]z-cz
--category)allcharwordliner   z(category [`all`, `char`, `word`, `line`]z-iz--input-pdfzPath to the PDF fileT)r   r   r   z--interactive
store_truez(Enable interactive mode (default: False))actionr   z--display-textz
--log-textz--enforce-same-fontz-oz--output-dirz,Path to the output directory (default: None))r   r   r   r   z-pz--pagez)page to be displayed (default: -1 -> all)z
--passwordz.Optional password for password-protected files)r   r   r   zPDF file does not exist: zOutput directory 'z
' created.)argparseArgumentParseradd_argumentstrint
parse_argsospathexists	input_pdf
output_dirmakedirsloggingr   	log_levelinteractivepagedisplay_textlog_textenforce_same_fontpage_boundarycategorypassword)parserargss     J/home/agent/.local/lib/python3.12/site-packages/docling_parse/visualize.pyr#   r#      s   $$1FGF 56   [)2   /7  	 m#,BT  
 7   7   7   7   ;   8   =	   D 77>>$..)W-Ft~~FV+WW) 	#bggnnT__.M
DOO$)$//):*EF 	DII     r   r   r   )r1   r2   page_numr3   r+   pdf_pathr,   r(   r.   r/   r0   r1   r2   r8   r3   c                    t        |       }|j                  |d|
      }|	g}|	dk(  r)t        |j                               D cg c]  }|dz   	 }}|D ]f  }t	        d| d|        t               }||_        |j                  ||      }t        j                  j                  t        |            r@|j                  t        | d	t        j                  j                  |       d
| d             |dv r|j                  t         j"                  | |      }t        j                  j                  t        |            r7|j%                  | d	t        j                  j                  |       d
| d       |r|j'                          |rK|j)                  t         j"                  dd      }t	        d| d       t	        dj+                  |             |dv r|j                  t         j,                  | |      }t        j                  j                  t        |            r7|j%                  | d	t        j                  j                  |       d
| d       |r|j'                          |rK|j)                  t         j,                  dd      }t	        d| d       t	        dj+                  |             |dv r|j                  t         j.                  | |      }t        j                  j                  t        |            r7|j%                  | d	t        j                  j                  |       d
| d       |r|j'                          |rK|j)                  t         j.                  dd      }t	        d| d       t	        dj+                  |             |j1                  ||dz   f       i y c c}w )N)loglevelT)path_or_streamlazyr3   r      zparsing z
 on page: )page_noconfig/z.page_z.json)r   r   )	cell_unitdraw_cells_bboxdraw_cells_textz	.char.pngF)rB   add_fontkeyadd_fontnameztext-lines (original, page_no: z):
)r   r   z	.word.pngz text-words (sanitized, page_no: )r   r   z	.line.pngz text-lines (sanitized, page_no: )
page_range)r   loadrangenumber_of_pagesprintr	   r0   get_pager$   r%   r&   r!   save_as_jsonr   basenamerender_as_imager   CHARsaveshowexport_to_textlinesjoinWORDLINEunload_pages)r+   r9   r,   r(   r.   r/   r0   r1   r2   r8   r3   r4   pdf_docpage_nospage_indr?   r@   pdf_pageimgliness                       r6   visualise_pyr_      s    y1F!;;dX ' G zH2~389P9P9R3STxX\TT W@
*WI67!##4 %,%5%5 &6 &

 77>>#j/*!!
|1RWW%5%5h%?$@wiuUV &**&++%1!1 , + C ww~~c*o.!l!BGG$4$4X$>#?vgYiX 
 44*// $!& 5 
 7yCDdii&'&**&++%1!1 , + C ww~~c*o.!l!BGG$4$4X$>#?vgYiX 
 44*// $!& 5 
 8	DEdii&'&**&++%1!1 , + C ww~~c*o.!l!BGG$4$4X$>#?vgYiX 
 44*// $!& 5 
 8	DEdii&''A+(>?oW@ Us   N?c                      t        j                  t         j                  d       t               \  } }}}}}}}}}	}
t        j                  d|        t        | ||||||||	||
       y )Nz)%(asctime)s - %(levelname)s - %(message)s)levelformatzpage_boundary: )r+   r9   r,   r(   r.   r/   r0   r1   r2   r8   r3   )r*   basicConfigINFOr#   r   r_   )r+   r9   r,   r(   r8   r.   r/   r0   r1   r2   r3   s              r6   mainre      s    ll#N" 	 LL?=/23!+#r7   __main__)r   r*   r$   pathlibr   typingr   docling_core.types.doc.pager   r   docling_parse.pdf_parserr   r   docling_parse.pdf_parsersr	   r#   r!   boolr"   r_   re   __name__ r7   r6   <module>ro      s      	   F B 6yJ $o@o@ o@ 	o@
 o@ o@ o@ o@ o@ o@ o@ Djo@d#L zF r7   