
    j?                         	 d dl mZ d dlmZ d dlZn# e$ r d dlZY nw xY w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	 Z G d
 de          ZdS )    )Image)uuid4N)Output)convert_from_path)*)datetime)Counterc                      dS )N  r       N/var/www/html/soft/v2017b/4_specific/TOOSMART_DIGICOCHE/2_tools/ocr/Cooperl.pygetTimer      s    2r   c                       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 Zd Zd Z	 d Zd Z 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                    	 || _         || _        || _        	 t          j        | j        | j        | j        | j                  | _        | j                                        | _        || _	        || _
        || _        |                     d           |                     dt          |          z              d S #  |                     d           Y d S xY w)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   s          r   __init__zCooperl.__init__:   s    	JDJDJ"DLNT\UYUchlhrsssDI)**,,DKDH"0D)DNOOABBBOO/#n2E2EEFFFFF	JOOHIIIIIIs   B4B8 8Cc                 Z    | j         dz   |z   | _         | j        rt          |           d S d S )Nz<br />)	_debugOCRr   print)r)   pTxts     r   r'   zCooperl.printDebugL   s8    (2T9: 	$KKKKK	 	r   c                    	 t          | j        | j                  }d}g }	 |D ]^}	 dt          |          z   dz   }|                    | j        |z   d           t          j        | j        |z             }|                                }t          j	        | j        dz   t          |          z   dz   |           t          j        | j        dz   t          |          z   dz             }t          j        t          j        |          dd          }	|                    |	           |dz   }# t"          $ rH}
|                     d	|
d
t'          |
                     |                     d           Y d }
~
Xd }
~
ww xY w	 t)          j        | j        |d                   }||                                | _        nz|                     d           |                     |d                    |                     d           |                     d| j        z              t3          d           d| _        dS nT# t"          $ rG}
|                     d	|
d
t'          |
                     |                     d           Y d }
~
nd }
~
ww xY w|                     d|d         z              	 |                     d|d         z              t)          j        d|d         t(          j                  }t;          |          dk    r|D ]	}|| _        
nRt)          j        d|d         t(          j        t(          j        z            }t;          |          dk    r|D ]	}|| _        
n[# t"          $ rN}
d| _        |                     d|
d
t'          |
                     |                     d           Y d }
~
nd }
~
ww xY w| j        dk    r,|                                  rt3          d           d| _        dS t)          j        d|d                   }t;          |          dk    rvt          |d                   !                    dd          !                    dd          !                    dd          | _"        | j#                            |d                    	 t)          j        d| j        z   dz   |d         t(          j                  }t;          |          dk    r|D ]}|d         | _$        |d         | _%        nT# t"          $ rG}
|                     d |
d
t'          |
                     |                     d           Y d }
~
nd }
~
ww xY w|D ]}| j        dk    rt)          j        d!|          }t;          |          dk    r| j&        '                    |           t;          |          | _(        |D ]a}tS          | j*        tS          tW          |d         !                    d"d#                    d$          z   d$          | _*        |d         | _,        bt          j-        t          j        |          t          j.        j/        %          }	 | 0                    |           d S # t"          $ r<}
t3          d&|
d
t'          |
                     t3          d'           Y d }
~
d S d }
~
ww xY w# t"          $ r}tc          j2                    \  }}}|j3        j4        j5        }|j6        }t3          d(|           t3          d)|           t3          d*|           |                     d+|d,t'          |                     |                     d           Y d }~d S d }~ww xY w)-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}zYDate livraison\s+((?:[0-9oO ]\s*){1,3}\/\s*(?:[0-9oO ]\s*){1,3}\/\s*(?:[0-9oO ]\s*){2,3}) o0Oz\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=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imgimageAmelioreeimageAmelioreeSurligneedferrmelementSfilepoidtesseract_outputeexception_typeexception_objectexception_tracebackfilenameline_numbers                         r   readzCooperl.readR   s   M	%(4;??HEN1  - --!(3u::!5!>JIIdnz96BBB *T^j%@AAC%(XXZZNK 83u:: E UWefff.3j'9QTWX]T^T^9^an9n.o.o+ %4RXn5M5MTYbtuuuB"))"--- "AIEE ! - - -OO$F#$F$F$s))$F$FGGGOOG,,,,,,,,-)Idm^A->??=)*D&&
 OOH---OON1$5666OOH---OO$RSWS`$`aaa1222)-D& 5 '  ) ) ) Bc B Bd3ii B BCCC(((((((() OOF^A%66777*~a'8 8999J4nQ6GVVq66A::#$ . .&-. 
#PR`abRcdfdpsu  tA  eA  B  BA1vvzz'( 2 2G*1DKK  * * *  Cs C CtCyy C CDDD))))))))*
 {b  <<>> !-...)-D& 5
 
w  zH  IJ  zK  L  LA1vvzz%(1YY%6%6sB%?%?%G%GS%Q%Q%Y%YZ]_b%c%c"#**1Q4000	*Js4=01OOQ_`aQbcecoppq66A::#$ : :18./6qz,, * * * D D DS		 D DEEE))))))))*
 ( 5 5 %++
#^`effA1vvzz..q111/21vv,$% 5 5D.3DOeERVWXRYRaRabegjRkRkLlLlnoFpFp4prs.t.tDO-1!WDNN  +8BY9Z9Zgrgyg~ ##$455555      EEEcEEFFFh   	% 	% 	%DGLNNAN,.A*3:FH-7K$n555-***/;///OO:!::Q::;;;OOG$$$$$$$$$	%s   $Z6 DD.,Z6 .
F 8=E;5Z6 ;F  Z6 B4H; :Z6 ;
J=JZ6 J!Z6 .B6M% $Z6 %
N=/AN83Z6 8N==8Z6 7B$Z6 A#T  ?Z6  
U
=UZ6 UDZ6 Y- -
Z371Z.(Z6 .Z33Z6 6
]' B]""]'c           
         	 t          j        | j        dz             }g }nH# t          $ r;}t	          d|dt          |                     t	          d           Y d }~nd }~ww xY w	 t          |d                   D ]\  }}|dk    rd|d         |         z  d|d	         |         z  d|d
         |         z  d|d         |         z  d|d         |         |d         |         d}t          |d         |                   dk    rd}n$t          |d         |                   dk    rd}nd}	 |                                }	t          j	        |	|d         |d         f|d         |d
         z   |d         |d         z   f|t           j
                   d}
t          j        |	|
|d|
z
  d          }|                    |           J# t          $ r<}t	          d|dt          |                     t	          d           Y d }~d }~ww xY wnH# t          $ r;}t	          d|dt          |                     t	          d           Y d }~nd }~ww xY w	 t          j        |t           j                  }t          j        |d          }|                    | j        | j        z   dz              nH# t          $ r;}t	          d           t	          d|dt          |                     Y d }~nd }~ww xY wdS ) NzPage_1_result.jpgzUnexpected C err=r9   ERRORClevel   r2   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)rM   rN   r&   rW   r/   rX   	enumerateintrO   	rectangleFILLEDaddWeightedrV   cvtColorCOLOR_BGR2RGBr   	fromarrayrL   r%   )r)   r   imageASurlignerblockASurlignerr   i	level_idxbboxcoloroverlayalphar   s               r   rs   zCooperl.surlignerZones   s   	!j:M)MNNO OO 	 	 	6#66$s))66777(OOOOOOOO	 	 )*:7*C D D ( (9>> !1&!9!!<<!1%!8!;;!"%5g%>q%A!A"#&6x&@&C"C$%&6v&>q&A 0 8 ; D +F3A6772== .-f5a899R?? - +	("1"6"6"8"8gS	49/E'+Cy4='@$s)dS[nB\&]_dfifpr r r #*-/'5/[\_d[dfg*h*h'..t4444$ ( ( (ASAAT#YYAABBBh(3 "(:  	 	 	6#66$s))66777(OOOOOOOO		7!l?C<MNNO//599CHHT^D$77	ABBBB  	7 	7 	7(OOO555c5566666666	7 tsq   ! 
A&1A!!A&*CH 1BG	H 	
H1H
H 
HH 
I1IIAJ8 8
K=1K88K=c                 
   	 | j         rdS | j        D ](}|d         |d         |d         d| j        |d         <   )	 t          j        | j        d                              d          | _        n#  d| _        Y nxY wt          | j                  | _        	 | j        D ]_}t          | j
        t          t          | j        |         d	                             d
d                    d          z   d          | _
        `nH# t          $ r;}t          d|dt          |                     t          d           Y d }~nd }~ww xY wt          j                                        d          }dt#          |          z   dz   t#          | j                  z   dz   | j        z   dz   t#          | j
                  z   dz   t#          | j                  z   dz   t#          | j
                  z   dz   t#          | j                  z   dz   t#          | j                  z   dz   | j        z   dz   | j        z   dz   | j                            dd          z   dz   }	 | j                            |           nK# t          $ r>}t          d|dt          |                     t          d|z              Y d }~nd }~ww xY w| j        j        }t          dt#          |          z   dz              | j        dk    rd| _        | j        D ]`}t#          | j        |         d                   dd          }d t#          |          z   d!z   t#          |          z   dz   t#          | j        |         d	                   z   dz   t#          |                     t;          | j                                      z   dz   t#          | j                  z   dz   t#          | j                  z   dz   | j        z   dz   }	 | j                            |           # t          $ rN}t          d|dt          |                     t          d"|z              t          |           Y d }~Zd }~ww xY w| j                                          d S # t          $ r}tC          j"                    \  }	}
}|j#        j$        j%        }|j&        }t          d#|	           t          d$|           t          d%|           | '                    d&|d't          |                     | '                    d(           | '                    |           Y d }~d S d }~ww xY w))NFr@   r   r2   )poidsrp   lotz%d/%m/%yz%Y%m%dr   r   rA   rB   rC   r8   r9   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 rF   rG   rH   rI   rJ   r:   )(r^   rj   
lineMergedr   strptimerf   strftimera   rl   rm   poidsTotalCalculero   re   rW   r/   rX   nowr(   
idAbattoirr]   rh   ri   rb   r.   r#   execute	lastrowidrp   quantiemeVersDater   
enAnomalier"   closert   ru   rv   rw   rx   ry   r'   )r)   	linePoidskeyr   currentDatesqlblIdnumeroTuerier   r   r   r   r   r   s                 r   	mergeDatazCooperl.mergeData  s   J	!! u!_ x x	;DQ<W`abWcjstujv0w0w	!--(%-%6t7I:%V%V%_%_`h%i%i""(%'"""#&t#7#7D "? Q QC-243IERWX\XghkXlmtXuX}X}  B  DG  YH  YH  SI  SI  KL  MM  MM  4M  OP  .Q  .QD**Q  " " "8C88DII88999j!!!!!!!!" #,..11,??K v  wz  {F  wG  wG  G  HW  W  X[  \`  \k  Xl  Xl  l  mr  r  uy  uG  G  JP  P  SV&S( S( (*/025d6L2M2MNPUVX[&Y( Y((*568;D<P8Q8QRTZ[]`$^& ^&& )// 261CD GLL NR[Y [`` bfaoawawx{  ~C  bD  bDD FKKC(##C(((( ( ( (8C88DII88999k3&''''''''(
 ;(D *s4yy(3.///~##!"  "4?3#7#>??D @  CFC C %&(+L(9(9:<BC4?3/899:<BCEHI_I_`cdhdr`s`sItItEuEuvx~ BEOB% B%% (-- 034>/B/BC FKK NRM_` chh
K'',,,,    <<<S		<<===++,,,#JJJJJJJJ
 IOO 
	! 
	! 
	!DGLNNAN,.A*3:FH-7K$n555-***/;///OO:!::Q::;;;OOG$$$OOC         
	!s   Q= 0Q= 2A/ .Q= /	A:8Q= A'C? >Q= ?
E	1D?:Q= ?EDQ= I. -Q= .
J684J1,Q= 1J66D4Q= +PQ= 
QAQQ= QQ= =
UB1T>>Uc           
         	 t          j                    j        }	 |dz  dk    r	|dz  dk    s	|dz  dk    rd}nd}t          dd          D ]q}||         |k    rct	          |          t	          d	                    |                    z   t	          d	                    |||dz
           z
                      z   c S rd S # t          $ r}t          j                    \  }}}|j	        j
        j        }	|j        }
t          d
|           t          d|	           t          d|
           t          d|           |                     d|dt          |                     |                     d           Y d }~d S d }~ww xY w)N   r   d   i  )r      <   [   y               i  i1  iO  in  )r   r   ;   Z   x   r            i  i0  iN  im  r2      z{:02d}rF   rG   rH   zn: rI   rJ   r:   )r   r   yearranger(   formatrW   rt   ru   rv   rw   rx   ry   r/   r'   rX   )r)   najmr   r   r   r   r   r   r   s              r   r   zCooperl.quantiemeVersDateg  s   	%#AN1aAcE1HH3EE1R[[ ^ ^a5!88q66C(:(:$;$;;c(//RSTVWXYZWZT[R[B\B\>]>]]]]] ^ ^
  		% 		% 		%DGLNNAN,.A*3:FH-7K$n555-***/;///%OOOOO:!::Q::;;;OOG$$$$$$$$$		%s   B9B? <B? ?
F 	B,E;;F N)"__name__
__module____qualname__r   r    r   r!   r   rj   	linesLotsr   rf   r]   r   rn   r[   rK   r&   r%   rg   
dateTuerier   rh   rl   ri   r^   r   rp   r,   r'   r   rs   r   r   r   r   r   r   r      s        EGG!IEJIJMMJJ4HF>INNJOOMJIJ J J$  N% N% N%` E4 4 4nK! K! K!Z% % % % %r   r   )PILr   uuidr   jsonImportErrorrR   r   rM   rt   rY   	pdf2imager   TSLibOCRtimeosnumpyrT   TS_OCRr   r   collectionsr	   r   r   r   r   r   <module>r      s_  KKKK   LLLLL           



 



 				 ' ' ' ' ' '      				                      A  b% b% b% b% b%f b% b% b% b% b%s    	