
    jL                     
   	 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	 d
 Z G d d          Z G d de          ZdS )    )Image)uuid4N)Output)convert_from_path)*)datetime)CounterFc                      dS )N  r       M/var/www/html/soft/v2017b/4_specific/TOOSMART_DIGICOCHE/2_tools/ocr/Holvia.pygetTimer      s    2r   c                   2    e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
S )bcolorsz[95mz[94mz[96mz[92mz[93mz[91mz[0mz[1mz[4mN)__name__
__module____qualname__HEADEROKBLUEOKCYANOKGREENWARNINGFAILENDCBOLD	UNDERLINEr   r   r   r   r      s;        FFFGGDDDIIIr   r   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g Zd Zd Zd Z	 d Zd Zd Z dS )Holviatoosmartr   i5Hf7MSHKkPN1hy   r   g        z#COCHE[ ]?FILIE[ ]?RE[ ]?LBC[ ]?[Vv]iv  z,/home/serge/www/toosmart_digicoche/data/tmp/Fc                 6   	 || _         || _        	 t          j        | j        | j        | j        | j                   | _        | j                                        | _        || _        || _	        || _
        || _        d S #  |                     d           Y d S xY w)N)hostuserpasswddbu*   Erreur de connexion à la base de données)sqlDbsqlHostMySQLdbconnectsqlUser	sqlPasswdconncursorpdfoutputFileName	ocrFolderdebug
printDebug)selfr0   r1   ocrDirectorydbNamer)   r3   s          r   __init__zHolvia.__init__D   s    	JDJ"DLNT\UYUchlhrsssDI)**,,DKDH"0D)DNDJJJ	JOOHIIIIIIs   A:A> >Bc                 Z    | j         dz   |z   | _         | j        rt          |           d S d S )Nz<br />)	_debugOCRr3   print)r5   pTxts     r   r4   zHolvia.printDebugT   s8    (2T9: 	$KKKKK	 	r   c           
         	 	 g }t          | j        | j                  }d}g }nT# t          $ rG}|                     d|dt          |                     |                     d           Y d }~nd }~ww xY w	 |D ]}	 dt          |          z   dz   }|                    | j        dz   t          |          z   dz   d           t          j
        | j        dz   t          |          z   dz             }|                                }	t          j        |t          j                  }
t          j        |
dd	t          j        t          j        z             d
         }t          j        t          j        d          }t          j        |t          j        |d
          }t          j        |t          j        t          j                  }t1          |          dk    r|d         n|d
         }|D ]}t          j        |	|gddd
           t          j        |	dd          }	t7          j        t;          j        |	          dd          }t          j        | j        dz   t          |          z   dz   |	           |                     |           |                     tC          j"        | j        dz   t          |          z   dz                        |d
z   }Y# t          $ r}tG          j$                    \  }}}|j%        j&        j'        }|j(        }tS          d|           tS          d|           tS          d|           |                     d|dt          |                     |                     d           Y d }~d }~ww xY wtU          j+        | j,        |d                   }||-                                | _.        nXtU          j+        d|d                   }|d| _.        n3tS          d           d| _/        |                     |d                    dS tU          j0        d|d                   }t1          |          dk    r.t          |d                   1                    d d!          | _2        |                     |d                    	 |                     d"           tU          j0        d#|d         tT          j3                  }t1          |          dk    r|D ]	}|| _4        
n[# t          $ rN}d$| _4        |                     d%|dt          |                     |                     d&           Y d }~nd }~ww xY w| j4        d$k    r,| 5                                rtS          d'           d| _/        dS d}	 |D ]}|                     |           tU          j0        d(|          }t1          |          dk    r| j6        7                    |           t1          |          | j8        z   | _8        |D ]l}|d         1                    d)d*          }|1                    d+d$          }ts          | j:        ts          tw          |          d,          z   d,          | _:        m	 tU          j0        d-|d         tT          j3                  }t1          |          dk    r3|D ]0}|d         1                    d*d$          | _<        |d         | _=        1nT# t          $ rG}|                     d%|dt          |                     |                     d&           Y d }~nd }~ww xY w	 t7          j>        ||         t6          j?        j@        .          }| A                    ||           n#  |                     d           Y nxY w|d
z   }	 tC          j"        | j        | jB        z   d/z             C                    d0          }|                    | j        | jB        z   d1z   d| jD        2           d S # t          $ r}tG          j$                    \  }}}|j%        j&        j'        }|j(        }tS          d|           tS          d|           tS          d|           |                     d|dt          |                     |                     d           Y d }~d S d }~ww xY w# t          $ r}tG          j$                    \  }}}|j%        j&        j'        }|j(        }tS          d|           tS          d|           tS          d|           |                     d|dt          |                     |                     d           Y d }~d S d }~ww xY w)3Nr   zUnexpected err=, type(err)=ERRORPage_.jpgJPEG         )(   rE   )
iterations   )rD   rD   rD   )   rJ   fraz --oem 0 --psm 4)langconfig_result.jpgException type: File name: Line number: Unexpected e=
, type(e)=z-COCHE[ ]?FIL[ \/]?([IE])[BR]E[ ]?LBC[ ]?[Vv]?zCOCHE FILIERE LBC VPFz{"blNonIntegrable":1}TFu-   Livré le ([O0-9]{1,2}\/[O0-9]{2}\/[O0-9]{4})O0u&   lecture le numéro du bon de livraisonuH   [A-ZÊ][a-z]n de livraison[\n]+[a-z\W_]+[0-9]{3}[a-zA-Z 0-9]+ ([0-9]{8})r   zUnexpected1 err=ERROR1z{"blEnDoublon":1}z6 ([0-9 ]{1,5}[ ]?[.,][ ]?[0-9]{1,2}).* ([0-9 ]{10,11}),. rJ   z3TOTAL MARCHANDISES\D+(([0-9])+)\D+(([0-9.,])+)\D+KG)output_typez-color-0.jpgRGBz-BL.pdf)save_allappend_images)Er   r0   ocrDpi	Exceptionr4   typestrsaver2   cv2imreadcopycvtColorCOLOR_BGR2GRAY	thresholdTHRESH_BINARY_INVTHRESH_OTSUgetStructuringElement
MORPH_RECTmorphologyEx
MORPH_OPENfindContoursRETR_EXTERNALCHAIN_APPROX_SIMPLElendrawContoursGaussianBlurpytesseractimage_to_stringnparrayimwriteappendr   opensysexc_infotb_framef_codeco_filename	tb_linenor;   researchcleCochegrouptypeLivraisonnonIntegrablefindallreplacedateLivraison	MULTILINE_numBlblExist
linesPoidsextendqttCocheCalculeroundpoidsTotalCalculefloatpoidsTotalDetecteqttCocheDetecteimage_to_datar   DICTsurlignerZonesr1   convertmergedImage)r5   imageAmelioreeSurligneepagesPdfiPageocrReturnArrayerrpage
image_nameimgresultgraythreshhorizontal_kernelremove_horizontalcntscdfeexception_typeexception_objectexception_tracebackfilenameline_numbermelementjSfilepoidpoidsTmptesseract_outputims                                  r   readzHolvia.readZ   s	   t	%	)*,' -TXt{CC!# ) ) ) Bc B Bd3ii B BCCC(((((((() 2  -- --,-!(3u::!5!>JIIdnw6UCfLfUUU *T^g%=E

%JV%STTC XXZZF <S-?@@D ]4C+.+@3?+RT TTUWF(+(A#.RY(Z(Z%(+(89<9JDE)G )G )G% +,=s?P,/,CE ED&)$ii1nn477$q'D! N N(!b/1MMMM -ffa@@F %4RXf5E5EEYklllBK 83u:: E UW]^^^"))"---+225:dnw>VY\]bYcYc>cfs>s3t3tuuu!AIEE  	- 	- 	-LOLNNIN$46I2;BNH"5"?K,n===-222/;777OO$B!$B$BQ$B$BCCCOOG,,,,,,,,	- 	$-):;;A}%&WWYY""INP^_`Pabb=)@D&&
 1222)-D&OON1$5666 5
 
K^\]M^__A1vvzz%(1YY%6%6sC%@%@" OON1-...	* HIIIJjlz{|l}  A  K  L  Lq66A::#$ . .&- * * *  Cs C CtCyy C CDDD))))))))*
 {b  <<>> !-...)-D& 5 A1' ( (&&&JXZ_``q66A::O**1---+.q66D4H+HD( ! n n#'7??3#<#<#+#3#3C#<#<16t7MPUV[\dVeVeghPiPi7ikl1m1m..
.
#Y[ijk[l#%<1 1A 1vvzz'( > >G5<QZ5G5GR5P5PD23:1:D00  . . .OO$G3$G$G499$G$GHHHOOH--------.-'2'@AXYZA[hshzh  (A  (A  (A$''(8;;;;-OOG,,,,,E)Z1D D~ UVV^^_dee)<<yHSWgkgwxxxxx 	) 	) 	)HKE 02E.7>J1;(.999mX...o{333 >a > >DGG > >???(((((((((	)  		% 		% 		%DGLNNAN,.A*3:FH-7K$n555-***/;///OO:!::Q::;;;OOG$$$$$$$$$		%s	   $ b. 
A5=A0+b. 0A55	b. ?IKb. 
NBN :b.  NBb. A7b. AS/ .b. /
U9AU=b. U8b. C*b. ,A,[b. 
\*#=\% b. %\**b. .A]0/b. 0^	b. A$_: :
b+Bb& b. &b++b. .
e8Beec           
         	 t          j        | j        dz   t          |          z   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	 t          j        |t           j                  }t!          j        |d          }|j        \  }}|dz  |dz  f}|                    |                              d          }|dk    r| j                            |           |                    | j        | j        z   dz   t          |          z   dz              n# t          $ r}t1          j                    \  }}}|j        j        j        }|j        }t          d|           t          d |           t          d!|           t          d"| j        | j        z   dz   t          |          z   dz              |                     d#|d$t          |                     |                     d%           Y d }~nd }~ww xY wd&S )'Nr@   rN   zUnexpectedC err=r>   ERRORClevel   rE   lefttopwidthheightr   conftext)xyr   r   rotation
confidencer   U   )*         2   )r      rD   )r   r   rD   r   r   g      ?zUnexpectedD err=ERRORDr[      z-color-rA   rO   rP   rQ   zImage : rR   rS   r?   T)rc   rd   r2   ra   r_   r;   r`   	enumerateintre   	rectangleFILLEDaddWeightedrz   rf   COLOR_BGR2RGBr   	fromarraysizeresizer   r   rb   r1   r|   r}   r~   r   r   r   r4   )r5   r   r   imageASurlignerblockASurlignerr   i	level_idxbboxcoloroverlayalphar   r   r   new_sizeresized_imager   r   r   r   r   r   s                          r   r   zHolvia.surlignerZones  sA   	!j')ACJJ)NQ^)^__O OO 	 	 	555c55666(OOOOOOOO	 &&6w&?@@ 	$ 	$LAyA~~ -f5a88-e4Q77!1'!:1!=="28"<Q"?? !"26":1"=,V4Q7  '/233r99*EE)&1!455;;)EE'E	$-2244GM'DItCy+A#'9tG}#<d3i$x.>X"Y[`bebln n nE&)oguoWX[`W`bc&d&dO#**40000  $ $ $===c==>>>(OOOOOOOO$3 <	%!l?C<MNNO//599CHME6
FaK0HJJx0088??Mqyy ''666t~0CCiOPSTYPZPZZ[aabbbb 
	% 
	% 
	%DGLNNAN,.A*3:FH-7K$n555-***/;///*dnt/BBYNsSXzzYZ``aaaOO:!::Q::;;;OOG$$$$$$$$
	% tsG   14 
A91A44A9BG
H!%1HH!'CK0 0
O:COOc                 
   	 | j         rdS d | j        D             | _        | j        D ]}|d                             dd          t          |                     t          |d         dd                                       d|d         d	d          |d         d
| j        |d         d	d          <   	 t          j        | j	        d          
                    d          | _	        n#  d| _	        Y n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                            |           nH# t.          $ r;}t1          d|dt3          |                     t1          d           Y d }~nd }~ww xY w| j        j        }t1          dt          |          z   dz              |                     d           | j        D ]&}d| _        	 | j        |         d         | _        n#  d| _        d| _        Y nxY wt          | j        |         d                   dd          }dt          |          z   dz   t          | j        |         d                   z   dz   t          |          z   dz   t          | j        |         d                    z   dz   t          | j                  z   dz   t          | j                  z   dz   | j	        z   dz   }| j                            |           (| j                                         d S # t.          $ r}t?          j                     \  }	}
}|j!        j"        j#        }|j$        }t1          d!|	           t1          d"|           t1          d#|           |                     d$|d%t3          |                     |                     d&           Y d }~d S d }~ww xY w# t.          $ r}t?          j                     \  }	}
}|j!        j"        j#        }|j$        }t1          d!|	           t1          d"|           t1          d#|           |                     d$|d%t3          |                     |                     d&           Y d }~d S d }~ww xY w)'NFc                 D    g | ]\  }}||                     d d          fS )rY   r   )r   ).0r   r   s      r   
<listcomp>z$Holvia.mergeData.<locals>.<listcomp>Y  s/    SSS41a199S"#5#56SSSr   r   rY   r   rE   rH   r   )poidsdateeleveurtuerielotz%d/%m/%Yz%Y%m%dz
%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&quotz');UnexpectedA err=r>   zERROR A2z{"blId":}zLine merged : r   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,attf104) VALUES (1, 11, NULL, 11, 1, 0, null, null, null, null, null, 'r   rO   rP   rQ   rR   rS   r?   )%r   r   r   ra   quantiemeVersDater   
lineMergedr   strptimer   strftimenow
idAbattoirr   r   r   r   r   r   r:   r4   r/   executer_   r;   r`   	lastrowid
enAnomaliedateLivraisonLigner.   closer|   r}   r~   r   r   r   )r5   	linePoidscurrentDatesqlr   blIdkeynumeroTuerier   r   r   r   r   r   s                 r   	mergeDatazHolvia.mergeDataS  s   ^	%! u TS4?SSSDO!_ K K	?H|?S?STWY[?\?\>A$BXBXY\]fgh]ijklmjm]nYoYoBpBp>q>qAC@I!RSS@Q=Fq\	6K 6K	!RSS 122(%-%6t7I:%V%V%_%_`h%i%i""(%'"""?) 'lnn55lCC#:<?)=+ =+#+-;#<<?<P<P#QQV#WZ^Zlm pvv y|*y, y,, /4	4 7:$:P6Q6Q	R UZ	Z ]`*], ],	,
 /44
 7:$:N6O6OP
 SXX
 [^([* [** -22 594FG JOO QUP[\ ]bb dhcqcycyz}  @G  dH  dHH JOO&OOC(((K'',,,,  & & &===c==>>>*%%%%%%%%&
 {, j3t99,s2333 0111? - -C&'DO,26/#2Fv2N//,24/*+ $'ts';E'B#C#CBCC#HL   BEB B  %&(+,U3)5 )557=>@CL@Q@QRTZ[]`,W5^7 ^77 :@@ CFdF]B^B^_ bhh knk) k)) ,2	2 594F	G JO	O  K'',,,, 	!!!!! 	) 	) 	)HKE 02E.7>J1;(.999mX...o{333 >a > >DGG > >???(((((((((	)  		% 		% 		%DGLNNAN,.A*3:FH-7K$n555-***/;///OO:!::Q::;;;OOG$$$$$$$$$		%s   R: B'R: 32C& %R: &	C1/R: 5DP /H1 0P 1
I6;1I1,P 1I66AP K'&P 'K97DP 
R7BR2,R: 2R77R: :
U+BU&&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          d
|dt          |                     t          d           Y d }~d S d }~ww xY w)Nr   r   d   i  )r      <   [   y               i  i1  iO  in  )r   r  ;   Z   x   r            i  i0  iN  im  rE      z{:02d}r   r>   z	ERROR A4 )	r   r   yearrangera   formatr_   r;   r`   )r5   najmr   r   s         r   r   zHolvia.quantiemeVersDate  s=   	#ANQ!C1SAQQ1b\\ b ba5A::q66C(:(:$;$;;c(//RSVXYZ]^Y^V_R_B`B`>a>aaaaa b b
  	 	 	555c55666+	s   B9B? <B? ?
D	1D  DN)!r   r   r   r,   r)   r-   r(   r   r   	linesLotsr   r   r   r   
poidsTotalr   r^   r2   r1   motsASurligner
dateTuerier   r   r   r   r   r   r8   r4   r   r   r  r   r   r   r   r   r   )   s        GG!IEJJIJMMJJ4HF>INNJOOMKJ J J   u% u% u%p E> > >@_% _% _%B    r   r   )PILr   uuidr   jsonImportErrorru   r   rc   r|   r   	pdf2imager   TSLibOCRtimeosnumpyrw   TS_OCRr*   r   collectionsr	   r3   r   r   r   r   r   r   <module>r)     s  KKKK   LLLLL           



 



 				 ' ' ' ' ' '      				                      A  	 	 	 	 	 	 	 	\ \ \ \ \V \ \ \ \ \s    	