a
    gF?                     @   s   z$d dl mZ d dlmZ d dlZW n ey>   d dlZY n0 d dlZd dlmZ d dlZd dl	Z	d dl
Z
d dlmZ d dlT d dlZd dlZd dlZd dlT d dlZd dlmZ d dlmZ d	d
 ZG dd deZdS )    )Image)uuid4N)Output)convert_from_path)*)datetime)Counterc                   C   s   dS )N  r
   r
   r
   _/mnt/bigdisk/leo/remi/toosmart/soft/v2017b/4_specific/TOOSMART_DIGICOCHE/2_tools/ocr/Cooperl.pygetTime   s    r   c                   @   s   e Zd ZdZdZdZdZdZg Zg Z	i Z
dZdZdZdZdZdZd	ZdZg ZdZdZdZdZdZdZd
ZdZdd Zdd Zdd Zdd Zdd Z dd Z!dS )CooperlFtoosmartr	   i5Hf7MSHKkPN1hyr   g        z#C[\w\S]*E COUPE EURO [EF]ILIERE LBC   z,/home/serge/www/toosmart_digicoche/data/tmp/   c                 C   s   zl|| _ || _|| _tj| j| j| j| jd| _| j | _|| _	|| _
|| _| d | dt|  W n   | d Y n0 d S )N)hostuserpasswddbu#   Connexion à la base de données OKzoutputFileName = u*   Erreur de connexion à la base de données)debugsqlDbsqlHostMySQLdbconnectsqlUser	sqlPasswdconncursorpdfoutputFileName	ocrFolder
printDebugstr)selfr   r    ocrDirectorydbNamer   r   r
   r
   r   __init__:   s    
zCooperl.__init__c                 C   s"   | j d | | _ | jrt| d S )Nz<br />)	_debugOCRr   print)r$   pTxtr
   r
   r   r"   L   s    zCooperl.printDebugc                 C   sF  zt | j| j}d}g }|D ]}zdt| d }|| j| d t| j| }| }t	| jd t| d | t
| jd t| d }tjt|ddd}	||	 |d }W q ty }
 z0| d	|
d
t|
 | d W Y d }
~
qd }
~
0 0 qztt| j|d }|d ur:| | _nH| d | |d  | d | d| j  td d| _W W dS W nJ ty }
 z0| d	|
d
t|
 | d W Y d }
~
n
d }
~
0 0 | d|d   z| d|d   td|d tj}t|dkr,|D ]}|| _qn:td|d tjtjB }t|dkrf|D ]}|| _qXW nP ty }
 z6d| _| d|
d
t|
 | d W Y d }
~
n
d }
~
0 0 | jdkr|   rtd d| _W dS td|d }t|dkr(t|d !dd| _"| j#|d  zPtd| j d |d tj}t|dkrv|D ]}|d | _$|d | _%qZW nJ ty }
 z0| d|
d
t|
 | d W Y d }
~
n
d }
~
0 0 |D ]}| jdkrtd|}t|dkr| j&'| t|| _(|D ]8}t)| j*t)t+|d !dd d! d!| _*|d | _,qqtj-t|tj.j/d"}z| 0| W nF ty }
 z,td#|
d
t|
 td$ W Y d }
~
n
d }
~
0 0 W n ty@ } zlt12 \}}}|j3j4j5}|j6}td%| td&| td'| | d(|d)t| | d W Y d }~n
d }~0 0 d S )*N   Page_z.jpgJPEGz_result.jpgfraz --oem 0 --psm 4)langconfigUnexpected err=, type(err)=ERRORr   z------u,   Le BL ne comporte pas la bonne clé coche : z{"blNonIntegrable":1}TFz1 : z^([0-9]{6}) [\w]+$u*   [A-Z]ON DE LIVRAISON[ ]?N°[\D]+([0-9]{6})r	   zUnexpected1 err=ERROR1z{"blEnDoublon":1}z:Date livraison ([0-9 ]{1,3}/ *[0-9 ]{1,3} */ *[ 0-9]{2,3}) z\D+(([\d,])*)[| ]*(([\d,])*)   zUnexpected 1 err=z8([0-9]{1,3})[. ]{0,2}([0-9]{1,4}) ([0-9]{1,3}[.,][0-9]*),.   )output_typezUnexpected 2 cooperl.py err=ZERROR2Exception type: File name: Line number: Unexpected e=
, type(e)=)7r   r   ocrDpir#   saver!   cv2imreadcopyimwriter   openpytesseractimage_to_stringnparrayappend	Exceptionr"   typeresearchcleCochegrouptypeLivraisonr)   nonIntegrablefindall	MULTILINElen_numBl
IGNORECASEblExistreplacedateLivraisonmotsASurlignerpoidsTotalDetecteqttCocheDetecte
linesPoidsextendqttCocheCalculeround
poidsTotalfloat	quantiemeimage_to_datar   DICTsurlignerZonessysexc_infotb_framef_codeco_filename	tb_lineno)r$   pagesPdfiPageocrReturnArraypage
image_nameimgZimageAmelioreeimageAmelioreeSurligneedferrmelementSfilepoidtesseract_outputeexception_typeexception_objectexception_tracebackfilenameline_numberr
   r
   r   readR   s    
"


  


 
("



zCooperl.readc                 C   s  zt | jd }g }W nD ty\ } z,td|dt| td W Y d }~n
d }~0 0 zft|d D ]R\}}|dkrnd|d |  d|d	 |  d|d
 |  d|d |  d|d | |d | d}t|d | dkrd}n t|d | dkr
d}nd}zl| }	t 	|	|d |d f|d |d
  |d |d  f|t j
 d}
t |	|
|d|
 d}|| W qn ty } z,td|dt| td W Y d }~qnd }~0 0 qnW nF ty } z,td|dt| td W Y d }~n
d }~0 0 z4t |t j}t|d}|| j| j d  W nF ty } z,td td|dt| W Y d }~n
d }~0 0 dS ) NzPage_1_result.jpgzUnexpected C err=r2   ERRORClevel   r+   lefttopwidthheightr   conftext)xyr   r   rotation
confidencer   U   )*         2   )r         )r   r   r   r   r   g      ?zUnexpectedD err=ERRORDzUnexpected D err=RGBz-BL.pdferreurzUnexpectedE err=T)rB   rC   r!   rL   r)   rM   	enumerateintrD   	rectangleFILLEDaddWeightedrK   cvtColorCOLOR_BGR2RGBr   	fromarrayrA   r    )r$   r|   imageASurlignerblockASurlignerrw   i	level_idxbboxcoloroverlayalphart   r
   r
   r   rh      sX    


$$.zCooperl.surlignerZonesc                 C   s  z.| j rW dS | jD ]&}|d |d |d d| j|d < qzt| jdd| _W n   d| _Y n0 t| j| _z>| jD ]2}t	| j
t	t| j| d	 d
dd d| _
qW nD ty } z,td|dt| td W Y d }~n
d }~0 0 t d}dt| d t| j d | j d t| j
 d t| j d t| j
 d t| j d t| j d | j d | j d | jdd d }z| j| W nJ ty } z0td|dt| td|  W Y d }~n
d }~0 0 | jj}tdt| d  | jdkr(d| _| jD ]}t| j| d dd  }d t| d! t| d t| j| d	  d t| t| j d t| j d t| j d | j d }z| j| W nR ty } z8td|dt| td"|  t| W Y d }~n
d }~0 0 q.| j   W n ty } zvt!" \}	}
}|j#j$j%}|j&}td#|	 td$| td%| | 'd&|d't| | 'd( | '| W Y d }~n
d }~0 0 d S ))NFr6   r   r+   )poidsre   lotz%d/%m/%yz%Y%m%dr	   r   r7   r8   r9   r1   r2   zERROR A1z
%Y%m%d%H%MzINSERT INTO tier_att(id_base, id_type, id_tier,attdatcre, id_work, actif, newobj, att1, att2, att3,att6,att7,att8,att9,attf100,att17,att90) VALUES (1, 10, NULL,'z', 16, 1, 0, z, 'z', 'z','z	',ROUND('z'),''z\'z');z	ERROR A2 z{"blId":}r   zINSERT INTO prod_att(id_base, id_type, id_prod, id_work, actif, newobj, fid_prod, type, name, revision, `desc`, att1, att2, att3, att4, attf100, attf101,att10,attf104) VALUES (1, 11, NULL, 11, 1, 0, null, null, null, null, null, 'z','', 'z	ERROR A3 r;   r<   r=   r>   r?   r3   )(rS   r_   
lineMergedr   strptimer[   strftimerV   ra   rb   poidsTotalCalculerd   rZ   rL   r)   rM   nowr#   
idAbattoirrR   r]   r^   rW   r(   r   execute	lastrowidre   quantiemeVersDater   
enAnomalier   closeri   rj   rk   rl   rm   rn   r"   )r$   	linePoidskeyrw   currentDatesqlblIdnumeroTuerier}   r~   r   r   r   r   r
   r
   r   	mergeData  s    
$
4("
"




zCooperl.mergeDatac              
   C   s$  zt  j}|d dkr$|d dks0|d dkr6d}nd}tddD ]F}|| |krDt|td	| td	|||d      W S qDW n ty } zvt \}}}|j	j
j}	|j}
td
| td|	 td|
 td| | d|dt| | d W Y d }~n
d }~0 0 d S )N   r   d   i  )r      <   [   y               i  i1  iO  in  )r   r   ;   Z   x   r            i  i0  iN  im  r+      z{:02d}r;   r<   r=   zn: r>   r?   r3   )r   r   yearranger#   formatrL   ri   rj   rk   rl   rm   rn   r)   r"   rM   )r$   najmrx   r}   r~   r   r   r   r   r
   r
   r   r   g  s$    
$<




zCooperl.quantiemeVersDateN)"__name__
__module____qualname__r   r   r   r   r   r_   	linesLotsr   r[   rR   r   rc   rP   r@   r!   r    r\   
dateTuerier   r]   ra   r^   rS   r   re   r'   r"   r   rh   r   r   r
   r
   r
   r   r      s@    7Mr   )PILr   uuidr   jsonImportErrorrG   r   rB   ri   rN   	pdf2imager   TSLibOCRtimeosnumpyrI   TS_OCRr   r   collectionsr   r   r   r
   r
   r
   r   <module>   s*   