
    jE                     
   	 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       J/var/www/html/soft/v2017b/4_specific/TOOSMART_DIGICOCHE/2_tools/ocr/SBA.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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 )SBAtoosmartr   i5Hf7MSHKkPN1hy   r   g        u$   2 [CÇ]O[CÇ]HE FILIE[RP.]+E LBC VPFi  z,/home/serge/www/toosmart_digicoche/data/tmp/Fc                    	 || _         || _        	 t          j        | j        | j        | j        | j                   | _        | j                                        | _        || _        || _	        || _
        |                     d           |                     dt          |          z              |                     dt          |          z              d S #  |                     d           Y d S xY w)N)hostuserpasswddbu#   Connexion à la base de données OKzpdfs = zoutputFileName = u*   Erreur de connexion à la base de données)sqlDbsqlHostMySQLdbconnectsqlUser	sqlPasswdconncursorpdfoutputFileName	ocrFolder
printDebugstr)selfr0   r1   ocrDirectorydbNamer)   s         r   __init__zSBA.__init__G   s    	JDJ"DLNT\UYUchlhrsssDI)**,,DKDH"0D)DN OOABBBOOIC0111OO/#n2E2EEFFFFF	JOOHIIIIIIs   CC C0c                 Z    | j         dz   |z   | _         t          rt          |           d S d S )Nz<br />)	_debugOCRdebugprint)r5   pTxts     r   r3   zSBA.printDebugZ   s6    (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}	 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        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
           	 t5          j        t9          j        |	          dd          }t          j        | j        dz   t          |          z   dz   |	           |                    |           |                    tA          j!        | j        dz   t          |          z   dz                        |d
z   }# t          $ rH}|                     d|dt          |                     |                     d           Y d }~>d }~ww xY w	 tE          j#        d|d                   }|~tI          j%        |&                                d          '                    d          | _(        tI          j%        |&                                d          '                    d          | _)        |                     d           tE          j#        | j*        |d                   }|                     |d                    |                     d           ||&                                | _+        ntY          d           d| _-        dS nT# t          $ rG}|                     d|dt          |                     |                     d           Y d }~nd }~ww xY w	 tE          j.        d|d         tD          j/                  }|D ]}|d
         | _0        n[# t          $ rN}d | _0        |                     d!|dt          |                     |                     d"           Y d }~nd }~ww xY w| j0        d k    r,| 1                                rtY          d#           d| _-        dS d}	 |D ]@}|                     d$t          |d
z             z   d%z              |                     |           | j+        d k    rtE          j.        d&|          }t1          |          dk    r| j2        3                    |           t1          |          | j4        z   | _4        |D ]T}tk          | j6        tk          to          |d         8                    d'd(                    d)          z   d)          | _6        U	 tE          j.        d*|tD          j/                  }t1          |          dk    rP|D ]M}|d         8                    d(d           | _9        tk          tu          |d                   dz            | _;        NnT# t          $ rG}|                     d+|dt          |                     |                     d"           Y d }~nd }~ww xY w	 t5          j<        ||         t4          j=        j>        ,          }| ?                    ||           n#  |                     d           Y nxY w|d
z   }B	 tA          j!        | j        | j@        z   d-z             }|                    | j        | j@        z   d.z   d| jA        /           d S #  |                     d           Y d S xY w)0Nr   zUnexpected Aerr=, type(err)=ERRORPage_.jpgJPEG         )(   rF      )
iterations)rE   rE   rE   )rF   rG   fraz --oem 0 --psm 4)langconfig_result.jpgzUnexpected Berr=z?\b(0[1-9]|[12]\d|3[01])[-/](0[1-9]|1[0-2])[-/](19\d\d|20\d\d)\bz%d/%m/%Yz%Y%m%dz%YzDEBUG RBN<textarea>zFIN RBN</textarea>z{"blNonIntegrable":1}TFz7Bon de livraison\n+([\w\W])+APE[\D]+[\d ]+Z? ([0-9]{8})r   zUnexpected1 err=ERROR1z{"blEnDoublon":1}zPage  z4[^.0-9]([0-9]{1,3}[.,][0-9]*) Kg P[B38]([S0-9?]{10}),.   z2TOTAL MARCHANDISES\D+(([0-9])+)\D+(([0-9.,])+)\D+KzUnexpected2 err=)output_typez-color-0.jpgz-BL.pdf)save_allappend_images)Br   r0   ocrDpi	Exceptionr3   typer4   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pytesseractimage_to_stringnparrayimwriteappendr   openresearchr   strptimegroupstrftimedateLivraisonanneeLivraisoncleCochetypeLivraisonr<   nonIntegrablefindall	MULTILINE_numBlblExist
linesPoidsextendqttCocheCalculeroundpoidsTotalCalculefloatreplacepoidsTotalDetecteintqttCocheDetecteimage_to_datar   DICTsurlignerZonesr1   mergedImage)r5   imageAmelioreeSurligneepagesPdfiPageocrReturnArrayerrpage
image_nameimgresultgraythreshhorizontal_kernelremove_horizontalcntscvertical_kernelremove_verticaldfmelementjSfilepoidtesseract_outputims                             r   readzSBA.read`   s9	   		%&(# )4;??HENN 	% 	% 	%OO?3??499??@@@OOG$$$$$$$$	% 	. <	) <	)D;) %s5zz1F:
		$.72SZZ?&H&QQQ
 j'!9CJJ!F!OPP |C);<<tQ'*'<s'NP PPQS$'$=cng$V$V!$'$4V58^5F@A%C %C %C! '(93;L(+(?A A"%d))q..tAwwd1g J JA$VaS"oqIIII #&";CNG"T"T"%"2636>3B>?#A #A #A '9J(+(?A A"%d))q..tAwwd1g J JA$VaS"oqIIII
 !0&1A1A8JL L LDNW4s5zzAMQSYZZZ%%b)))'..uz$.7:RUXY^U_U_:_bo:o/p/pqqq	 ) ) ) Cs C CtCyy C CDDD(((((((()	%	\^lmn^oppA}%-%6qwwyy*%M%M%V%VW_%`%`"&.&7		:&N&N&W&WX\&]&]# OO1222	$-):;;AOON1-...OO0111}%&WWYY""
 -...%)"u #  	% 	% 	%OO?3??499??@@@OOG$$$$$$$$	%	&
UWefgWhjljvwwA ) )%aj)  	& 	& 	&DKOO?3??499??@@@OOH%%%%%%%%	&
 ;"||~~ )***%)"u -# )	 )	EOOGC!HH,S0111OOE"""!R''JVX]^^q66A::O**1---+.q66D4H+HD( ! | |16t7MPUV[\`ab\c\k\klops\t\tVuVuvwPxPx7xyz1{1{..*JTV[!|- -q66A::#$ J J181C1CC1L1L./4S__q5H/I/I,, * * * Cs C CtCyy C CDDD))))))))*)#.#<=TUV=WITI[I`$b $b $b ##$4a8888)(((((AAA
	%DNT-@@>QRRBGGDN4#66y@4_c_oGppppp	%OOG$$$$$$s    # 
A4=A//A4>K+M++
N=5=N88N=D2S6 6
U =UU8V 
WAWWB^##
_4-=_//_48A`::aAb1 1cc           
      N   	 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k    r| j                            |           |                    | j        | j        z   dz   t          |          z   dz              nH# t          $ r;}t          d           t          d |dt          |                     Y d }~nd }~ww xY wd!S )"NrA   rN   zUnexpectedC err=r?   ERRORClevel   rF   lefttopwidthheightr   conftext)xyr   r   rotation
confidencer   U   )*         2   )r      rE   )r   r   rE   r   r   g      ?zUnexpectedD err=ERRORDRGB   z-color-rB   erreurzUnexpectedE err=T)r[   r\   r2   r4   rX   r<   rY   	enumerater   r]   	rectangleFILLEDaddWeightedrq   r^   COLOR_BGR2RGBr   	fromarraysizeresizer   rZ   r1   )r5   r   r   imageASurlignerblockASurlignerr   i	level_idxbboxcoloroverlayalphar   r   r   new_sizeresized_images                    r   r   zSBA.surlignerZones  s   	!j')A#e**)L])Z[[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 <	7!l?C<MNNO//599CHME6
FaK0HJJx00Mqyy ''666t~0CCiOPSTYPZPZZ[aabbbb 	7 	7 	7(OOO555c5566666666	7 tsF   14 
A91A44A9BG
H!%1HH!'B5K 
L"'1LL"c                 J   	 | j         rdS | j        D ]w}|d         t          |                     t	          |d         dd                   | j                            |d                             dd          d| j        |d         <   xt          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;}t/          d|dt1          |                     t/          d           Y d }~nd }~ww xY w| j        j        }t/          dt          |          z   dz              | 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#        }t/          d|	           t/          d|           t/          d|           | $                    d|d t1          |                     | $                    d!           Y d }~d S d }~ww xY w)"NFr   rF   r   ?7)poidsdatelotz
%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\'z');zUnexpectedF err=r?   zERROR A2z{"blId":}r   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   Exception type: File name: Line number: Unexpected e=
, type(e)=r@   )%r|   r   r4   quantiemeVersDater   ry   r   
lineMergedr   nowrw   
idAbattoirr{   r   r   r   r   rx   r   r:   r/   executerX   r<   rY   	lastrowid
enAnomaliedateLivraisonLigner.   closesysexc_infotb_framef_codeco_filename	tb_linenor3   )r5   	linePoidscurrentDatesqlr   blIdkeynumeroTuerieeexception_typeexception_objectexception_tracebackfilenameline_numbers                 r   	mergeDatazSBA.mergeDataJ  s   ?	%! u "_ V V	;DQ<:=d>T>TUXYbcdYefghifiYjUkUklpl  ?A  ?A  ;B  ;B7@|7K7KCPS7T7T1V 1V	!--
 #,..11,??K247!5# 5##%3469$/6J6JKMRSVZVhi lrr ux&u( u(( +0	0 36d6L2M2M	N QV	V Y\&Y( Y(	(
 +00
 36d6J2K2KL
 OTT
 WZ$W& W&& )// 261CD GLL NR[Y Z__ ae`n`v`vwz  }B  aC  aCC EJJC"##C(((( " " "9S99T#YY99:::j!!!!!!!!"
 ;(D *s4yy(3.///  ) )"#(.2oc.B6.JD++(.0D+&'DOOO  #4?3#7#>??D z  }@  AE  }F  }F  F  IN  N  QT  UY  Ud  eh  Ui  jo  Up  Qq  Qq  q  sy  y  |  @L  |M  |M  M  OU  U  X[  \`  \k  lo  \p  qx  \y  Xz  Xz  z  |B  B  EH  IM  I`  Ea  Ea  a  dj  j  mp  qu  q@  mA  mA  A  DJ  J  MQ  M_  _  bg  g##C(((( IOO 		% 		% 		%DGLNNAN,.A*3:FH-7K$n555-***/;///OO:!::Q::;;;OOG$$$$$$$$$		%sb   M1 F
M1 F1 0M1 1
G6;1G1,M1 1G66AM1 9IM1 I$"DM1 1
P";BPP"c           
      `   	 t          |          }	 |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 r|dz
  }	 |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|
           |                     d|dt          |                     |                     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  rF      z{:02d}r   r   r   r   r   r@   z<br /> )r   ranger4   formatrX   r   r   r   r   r   r   r<   r3   rY   )r5   nry   jmr   r   r   r   r   r   r   s              r   r   zSBA.quantiemeVersDate  s   $	 00NN!#q((^c-AQ-F-F>\_K_cdKdKdQQ1b\\ o oa5A::~..X__Q5G5G1H1HH3x_`cefgjkfkcl_lOmOmKnKnnnnn  ,a/NN!#q((^c-AQ-F-F>\_K_cdKdKdQQ1b\\ o oa5A::~..X__Q5G5G1H1HH3x_`cefgjkfkcl_lOmOmKnKnnnnn o o  	 	 	DGLNNAN,.A*3:FH-7K$n555-***/;///OO:!::Q::;;;OOG$$$.!!!)	s&   B0E 3B'E E 
H-(B:H((H-N)"r   r   r   r,   r)   r-   r(   r   r   	linesLotsr   rx   ry   r{   r   
poidsTotalrz   rW   r2   r1   motsASurligner
dateTuerier   r   r   r   r|   r   r8   r3   r   r   r   r   r   r   r   r   r   +   s        GG!IEJJIJMNMJJ5HF>INNJOOMKJ J J&  n% n% n%b E6 6 6p@% @% @%F& & & & &r   r   )PILr   uuidr   jsonImportErrorrl   r   r[   r   rs   	pdf2imager   TSLibOCRtimeosnumpyrn   TS_OCRr*   r   collectionsr	   r;   r   r   r   r   r   r   <module>r!     s  KKKK   LLLLL           



 



 				 ' ' ' ' ' '      				                      A  	 	 	 	 	 	 	 	H H H H H& H H H H Hs    	