
    jbJ                         	 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
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lZd	Z	 d
 Z G d de          ZdS )    )Image)uuid4N)Output)convert_from_path)*)datetime)CounterFc                      dS )N  r       N/var/www/html/soft/v2017b/4_specific/TOOSMART_DIGICOCHE/2_tools/ocr/Loudeac.pygetTimer      s    2r   c                   V    e 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dZd ZdS )Loudeactoosmarti5Hf7MSHKkPN1hyi^  zCOCHE L[R]?[B]?C VPF   c                    	 || _         || _        t          j        | j        | j        | j        | j                   | _        | j                                        | _        |                     d           n/# t          $ r"}|                     d|            Y d }~nd }~ww xY w|| _
        || _        || _        g | _        g | _        i | _        g | _        g | _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        d| _        |                     d| j
                    |                     d	| j                    d S )
N)hostuserpasswddbu#   Connexion à la base de données OKu-   Erreur de connexion à la base de données : r   Fr   g        zInitialisation Loudeac OK pour zoutputFileName = )sqlDbsqlHostMySQLdbconnectsqlUser	sqlPasswdconncursor
printDebug	ExceptionpdfoutputFileName	ocrFolder
linesPoids	linesLots
lineMergedmotsASurlignerdatadateLivraison
dateTueriedateAbattageMultipletypeLivraison_numBl	_debugOCR
enAnomalienonIntegrablepoidsTotalCalculepoidsTotalDetecteqttCocheCalculeqttCocheDetecte)selfr$   r%   ocrDirectorydbNamer   errs          r   __init__zLoudeac.__init__'   s   	SDJ"DL\\~:	  DI )**,,DKOOABBBB 	S 	S 	SOOQCQQRRRRRRRR	S ,% 	$)!"!&!"  D$(DDEEEAD,?AABBBBBs   A2A5 5
B!?BB!c                 ^   	 t          | d          rR| j        rK	 | j                                         n0# t          $ r#}t          rt          d|            Y d}~nd}~ww xY wt          | d          rR| j        rK	 | j                                         n0# t          $ r#}t          rt          d|            Y d}~nd}~ww xY wt          | d          rt          j        	                    | j
                  rt          j        | j
                  D ]}|                    d          r|                    d          s|                    d	          rl	 t          j        t          j                            | j
        |                     z# t          $ r&}t          rt          d
| d|            Y d}~d}~ww xY wg d}|D ]#}t          | |          rt!          | |d           $t          rt          d           dS dS # t          $ r}t          d|            Y d}~dS d}~ww xY w)uJ   
        Destructeur : Pour libérer les ressources correctement.
        r!   z([DEL] Impossible de fermer le curseur : Nr    z*[DEL] Impossible de fermer la connexion : r&   Page_z.jpgz.jpegz[DEL] Erreur suppression z : )r'   r(   r)   r*   u(   [DEL] Objet Loudeac détruit proprement.z#[DEL] Erreur dans le destructeur : )hasattrr!   closer#   debugprintr    ospathisdirr&   listdir
startswithendswithremovejoinsetattr)r8   r;   fattrs_to_clearattrs        r   __del__zLoudeac.__del__O   s   &	?tX&& P4; PPK%%''''  P P P PNNNOOOP tV$$ R RRIOO%%%%  R R R RP3PPQQQR
 t[)) ObgmmDN.K.K ODN33 O OA||G,, O!**V2D2D O

SZH[H[ OOIbgll4>1&E&EFFFF( O O O$ O %&M!&M&M&M&M N N NO
  N ' . .4&& .D$--- B@AAAAAB B  	? 	? 	?===>>>>>>>>>	?s   H 4 H 
A!AH A!!H <B H 
C B>9H >CBH 7FH 
F=F83H 8F==AH 
H,H''H,c                 Z    | j         dz   |z   | _         t          rt          |           d S d S )Nz<br />)r1   rA   rB   )r8   pTxts     r   r"   zLoudeac.printDebug|   s6    (2T9 	$KKKKK	 	r   c           	         	 t          | j        | j        dd          }d}g }	 |D ]f}dt          |          z   dz   }|                    | j        |z   d           t          j        | j        |z             }|                                }| 	                    |d          }t          j
        | j        dz   t          |          z   dz   |           t          j        | j        dz   t          |          z   dz             }|                     d	t                      z             t          j        t#          j        |          d
d          }	|                    |	           |                     dt                      z             |dz   }h~t)          j                     t-          j        d|d                   }
t1          |
          dk    rWt          |
d                   | _        | j                            |
d                    |                     d| j        z              t-          j        d|d                   }
t1          |
          dk    rWt          |
d                   | _        | j                            |
d                    |                     d| j        z              t-          j        d|d                   }
t1          |
          dk    rd| _        n[# t:          $ rN}d| _        |                     d|dt?          |                     |                     d           Y d }~nd }~ww xY w	 t-          j        d|d                   }
t1          |
          dk    r3|
D ]0}|d                              dd          | _!        |d         | _"        1nT# t:          $ rG}|                     d|dt?          |                     |                     d           Y d }~nd }~ww xY w	 t-          j#        | j$        |d                   }
|
Q|
%                                | _&        | j                            d           |                     d| j&        z              nt-          j#        d|d                   }
|
Q|
%                                | _&        | j                            d           |                     d| j&        z              ntO          d           d| _(        dS |                     d |d         z              nT# t:          $ rG}|                     d|dt?          |                     |                     d           Y d }~nd }~ww xY w	 t-          j        d!|d         t,          j)                  }
t1          |
          dk    r|
D ]	}|| _        
n[# t:          $ rN}d| _        |                     d|dt?          |                     |                     d           Y d }~nd }~ww xY w	 | j        dk    rF| *                                r2tO          d"           |                     | j                   d| _(        dS |D ]}t-          j+        d#d$|          }| j&        dk    rt-          j        d%|          }
t1          |
          dk    rt1          |
          | _,        |
D ]B}| j                            |d                    | j                            |d                    C|                     d&t          t1          |
                    z              |                     d't          |
          z              | j-        .                    |
           nT# t:          $ rG}|                     d(|dt?          |                     |                     d)           Y d }~nd }~ww xY wt          j/        t#          j        |          t          j0        j1        *          }	 | 2                    |           n8#  tO          d+|dt?          |                     tO          d,           Y nxY w~t)          j                     d S )-N   )i  N)thread_countsizer>   za.jpgJPEG   z_result.jpgz%s - Lecture OCRfra )langconfigu   %s - Lecture OCR Terminéez)[0-9]{5} ([0-9]{1,2}/[0-9]{1,2}/[0-9]{2})r   zDate de livraison : u5   DAT[EÉ] ABATTAG\D+([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{2})zDate de la tuerie : u]   DAT[EÉ] ABATTAG\D+([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{2})[,. ]*([0-9]{1,2}\/[0-9]{1,2}\/[0-9]{2})Tr   zUnexpected1 err=, type(err)=ERROR1z*TOTAL[\W]+GENERAL\D+([\d]+)\D+([\d\,\. ]+).zCOCHE LBC VPFzType de livraison : zPOCHP LDC VPFz{"blNonIntegrable":1}Fz1 : u#   BON LIVRAISON[ ]?N°[\D]+([0-9]{5})z{"blEnDoublon":1}z	, ([0-9])z,\1z([0-9]{4,5})[ -.]([0-9.,]{5})u   Nombre de coches detectées : u   Détail des poids : zUnexpected err=ERROR)output_typezUnexpected surlignage err=ERROR2)3r   r$   ocrDpistrsaver&   cv2imreadcopyincrease_brightnessimwriter   openr"   r   pytesseractimage_to_stringnparrayappendgccollectrefindalllenr,   r*   r-   r.   r#   r0   typereplacer5   r7   searchcleCochegroupr/   rB   r3   
IGNORECASEblExistsubr6   r'   extendimage_to_datar   DICTsurlignerZones)r8   pagesPdfiPageocrReturnArraypage
image_nameimgimageAmelioreeimageAmelioreeSurligneedfmr;   elementSfilepoidtesseract_outputs                   r   readzLoudeac.read   s~   ;	.(4;QUabbbHEN1  " "$s5zz1G;
		$.:5v>>> j*!<==!$!%!9!9.!L!LDNW4s5zzAMQSabbb*/*T^g5MPSTYPZPZ5Z]j5j*k*k'  2WYY >??? 0.1I1IPU^abbb%%b))) <wyy HIII 	JLLL 
GXYIZ[[A1vvzz%(1YY"#**1Q4000 69K KLLL 
SUcdeUfggA1vvzz"%ad))#**1Q4000 6 HIII 
{  ~L  MN  ~O  P  PA1vvzz,0)  	. 	. 	."$DKOO$G3$G$G499$G$GHHHOOH--------	.		&
H.YZJ[\\A1vvzz  6 6G-4QZ-?-?R-H-HD*+21:D(( 	& 	& 	&OO?3??499??@@@OOH%%%%%%%%	&
	.	$-):;;A}%&WWYY"#**?;;; 69K KLLLLI.q0ABB=)*D&'..???OO$:T=O$OPPPP1222)-D& 5 OOF^A%667777 	. 	. 	.OO$G3$G$G499$G$GHHHOOH--------	.		&
A>RSCTUWUbccA1vvzz  * *G")DKK 	& 	& 	&DKOO?3??499??@@@OOH%%%%%%%%	&!	%{b  <<>> !-...OODK000)-D& 5 ( 2 2|VU;; %++
#CUKKA1vvzz/21vv,$% @ @D /66tAw??? /66tAw???? (H3sSTvv;;(VWWW(>Q(GHHH ..q111'2(  	% 	% 	%OO>#>>$s))>>???OOG$$$$$$$$	%
 '4RX>U5V5Vcncucz{{{	 01111	?3??499??@@@(OOOOO

s   KK" "
L:,AL55L:>A!N   
O1*=O,,O15C7T .T 
U=UU"AV( (
X 2AW;;X A]0 D]0 0
_:=^<<_<` 3ac                 b
   | 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                              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          }| j        rd}n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   t'          |          z   dz   }	 | j                            |           nW# t          $ rJ}t          d|dt!          |                     t          d           t          |           Y d }~nd }~ww xY w| j        j        }t          dt'          |          z   dz   | j        z   dz              i | j        D ]w}	 t          | j        |         d                            dz   t          | j        |         d                   <   N#  dt          | j        |         d                   <   Y uxY wt=          fd !          }| j        D ]}t'          | j        |         d                   }	d}
t          |	          |k    rd"}
d#t'          |          z   d$z   t'          |	          z   dz   t'          | j        |         d                   z   dz   t'          | j                  z   dz   t'          |
          z   dz   | j        z   d%z   }	 | j                            |           # t          $ r<}t          d&|dt!          |                     t          d'           Y d }~d }~ww xY w| j                                          d S )(NFrS   r   r   )poidsdatelotz%d/%m/%yz%Y%m%dr   ,r^      zUnexpectedA err=r\   zERROR A1z
%Y%m%d%H%M      zINSERT INTO tier_att(id_base, id_type, id_tier,attdatcre, id_work, actif, newobj, att1, att2, att3,att6,att7,att8,att9,attf100,att17,att90,att15) VALUES (1, 10, NULL,'z', 16, 1, 0, z, 'z', 'z',''z\'z',z);zERROR A2z{"blId":z
, "path":"z"}r   c                     |          S )Nr   )ktuerieLongueurs    r   <lambda>z#Loudeac.mergeData.<locals>.<lambda>d  s    >Z[K\ r   )keyanomaliezINSERT INTO prod_att(id_base, id_type, id_prod, id_work, actif, newobj, fid_prod, type, name, revision, `desc`, att1, att2, att3, att4, attf100, att8,attf104) VALUES (1, 11, NULL, 11, 1, 0, null, null, null, null, null, 'z','', 'z');zUnexpectedB err=ERRORB)!r3   r'   r)   r   strptimer,   strftimer-   rt   r6   roundr4   floatrv   r#   rB   ru   nowr2   rc   
idAbattoirr/   r5   r7   r0   r1   r!   execute	lastrowidr$   maxr    r@   )r8   	linePoidsr   r;   currentDatestatutBLsqlblIdlongueurNumTueriePlusUtilisenumeroTuerieanomalieLigner   s              @r   	mergeDatazLoudeac.mergeData#  s6    	5 	e 	eI7@|bW`abWc,d,dDOIaL))	$!)!243Ez!R!R![![\d!e!eD	$!#D	!&/LLUUV^__DOO	! DOOO"4?33	 M M).t/EeTXTcdgThipTqTyTyz}  @C  UD  UD  OE  OE  GH  II  II  0I  KL  *M  *M&&M  	 	 	555c55666*	 lnn--l;;? 	HHH x  y|  }H  yI  yI  I  JY  Y  Z]  ^b  ^m  Zn  Zn  n  ot  t  w{  wI  I  LR  R  UX"U$ U$ $&+,,/0F,G,GHHMNNQRVRhNiNijjoppstx  uI  qJ  qJJ KPP QT  UY  Ui  Qj  Qjj kqq tx  tFF INN PT  P[[ \aa cg  cq  cy  cy  z}  D  cE  cEE GKK LO  PX  LY  LYY Z^^	K$$$$ 	 	 	555c55666*#JJJJJJJJ	 {$ 	j3t99$|3dh>EFFF ? 	E 	ECECQRUVZVefiVjkpVqRrRrCsvwCws4?3#7#>??@@ECDs4?3#7#>??@@@'*>A\A\A\A\']']']$ ? 	  	 Cts3E:;;LM<  $@@@ * t  wzw w !"$'$5$568>?AD$W-B/ B//178:=do:N:NOQVWY\Z Z "'' *.);< ?DD  ##C((((      9S99T#YY99:::h  		sn   2A) )	A482B+ +	B6A'D; ;
F 1E;;F .K	 	
LA LL%A
N00%O2S
T1TTc           
      p   	 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	 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UnexpectedC err=r\   ERRORClevel   rS   lefttopwidthheightr   conftext)xyr   r   rotation
confidencer   U   )*         2   )r         )r   r   r   r   r   g      ?zUnexpectedD err=ERRORDRGBz-BL.pdferreurzUnexpectedE err=T)re   rf   r&   r#   rB   ru   	enumerateintrg   	rectangleFILLEDaddWeightedro   cvtColorCOLOR_BGR2RGBr   	fromarrayrd   r%   )r8   r   imageASurlignerblockASurlignerr;   i	level_idxbboxcoloroverlayalphar   s               r   r   zLoudeac.surlignerZones|  s;   	!j:M)MNNO 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"?? !!1&!9!!<+F3A6  '/233r99*EE)&1!455;;)EE'E$-2244GM'DItCy+ADIPTU\P]D]_cdg_hkopxky_yCz  }B  DG  DN  O  O  OE&)oguoWX[`W`bc&d&dO#**40000  $ $ $===c==>>>(OOOOOOOO$1 <	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 tsF   ! 
A&1A!!A&0BG
H1H		HAI. .
J381J..J3rW   c                    t          j        |t           j                  }t          j        |          \  }}}d|z
  }d|||k    <   |||k    xx         |z  cc<   t          j        |||f          }t          j        |t           j                  }t          j        |dt          j        |j	        |j
                  dd          }|S )Nr   g333333?r   r   )re   r   COLOR_BGR2HSVsplitmergeCOLOR_HSV2BGRr   rm   zerosshapedtype)	r8   r   valuehsvhsvlim	final_hsvs	            r   rh   zLoudeac.increase_brightness  s    l3 122)C..1aEk!c'
	!s(uIq!Qi((	l9c&788oc3CI(F(F1MM
r   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        }
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  rS      z{:02d}zException type: zFile name: zLine number: zn: zUnexpected e=z
, type(e)=r_   )r   r   yearrangerc   formatr#   sysexc_infotb_framef_codeco_filename	tb_linenorB   r"   ru   )r8   najmr   eexception_typeexception_objectexception_tracebackfilenameline_numbers              r   quantiemeVersDatezLoudeac.quantiemeVersDate  s   	%#AN1aAcE1HH3EE1R[[ ^ ^a5!88q66C(:(:$;$;;c(//RSTVWXYZWZT[R[B\B\>]>]]]]] ^ ^
  		% 		% 		%DGLLNNAN,.A*3:FH-7K$n555-***/;///%OOOOO:!::Q::;;;OOG$$$$$$$$$		%s   B9B? <B? ?
F	B2FFN)rW   )__name__
__module____qualname__r   r   rb   rx   r   r<   rO   r"   r   r   r   rh   r  r   r   r   r   r       s        G!IF&HJ%C %C %CP*? *? *?Z  ] ] ]BV V Vp E/ / /d   % % % % %r   r   )PILr   uuidr   jsonImportErrorrk   r   re   rr   	pdf2imager   TSLibOCRtimerC   numpyrm   TS_OCRr   r   collectionsr	   rp   rA   r   r   r   r   r   <module>r     sd  KKKK   LLLLL           



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