1
- # import secret
2
1
import os
3
2
import sys
4
3
import urllib .request
7
6
from IPython import embed
8
7
# OCR API 요청
9
8
def image_NAVER_AI (img_64 ):
10
- with open ('test.txt' , 'w' , encoding = 'utf-8-sig' ) as f :
11
- f .write (img_64 )
12
9
comma_idx = img_64 .find (',' )
13
10
img_64 = img_64 [comma_idx + 1 :]
14
11
TEMPLATE = {
@@ -25,20 +22,21 @@ def image_NAVER_AI(img_64):
25
22
"version" : "V1"
26
23
}
27
24
transmit = json .dumps (TEMPLATE )
28
- client_secret = 'anZ3ZkRQU05CR2VHa1VjSVdmRGFoeFdzUUJyS0h1WnU ='
25
+ client_secret = 'aUtKVFpZS3NQVFhDU3RZSUJPVEttZnZubHNzWFJjcks ='
29
26
data = transmit
30
- url = "https://4ezihkm520.apigw.ntruss.com/custom/v1/916/682ff265d8365600d74e4adcca80dc6a59c41e236784633af6c3c37438030d33 /infer"
27
+ url = "https://4ezihkm520.apigw.ntruss.com/custom/v1/927/f6002cbceb8c0327d974714b8f7a4ba28e25f0b7cbe216a719c35ced1fe9647f /infer"
31
28
request = urllib .request .Request (url )
32
29
request .add_header ("X-OCR-SECRET" ,client_secret )
33
30
request .add_header ("Content-Type" , "application/json" )
34
- # embed( )
31
+ # requests.get(request )
35
32
response = urllib .request .urlopen (request , data = data .encode ("utf-8" ))
36
33
rescode = response .getcode ()
37
34
if (rescode == 200 ):
38
35
response_body = response .read ()
39
36
fix = response_body .decode ('utf-8' )
40
37
fix = json .loads (fix )
41
38
# print(fix)
39
+
42
40
# 결과 값 후 처리
43
41
total = 0
44
42
total_words = ['Total' , 'total' , 'TOTAL' , 'AMOUNT' , 'Amount' , 'AMT' , 'Payment' , 'payment' ]
@@ -56,69 +54,112 @@ def image_NAVER_AI(img_64):
56
54
real .append (k ['inferText' ])
57
55
if '$' in k ['inferText' ] or '.' in k ['inferText' ] or '・' in k ['inferText' ] or k ['inferText' ][- 1 ] == 'T' or k ['inferText' ][- 1 ] == '0' :
58
56
empty .append (k ['inferText' ])
57
+
59
58
# 후 처리 한 결과 값과 그렇지 않은 결과 값의 차이 비교
60
59
# print(real)
61
60
if len (real ) - len (empty ) > 6 :
62
61
print ('안 들어온 값이 많습니다. 계속 진행하시겠습니까?' )
62
+
63
63
# Key 값 후 처리
64
64
receipt = {}
65
- receipt [empty [0 ]] = empty [1 ]
65
+ receipt [empty [0 ]] = { 'value' : empty [1 ]}
66
66
for i in range (2 , len (empty )):
67
67
if list (empty [i ].split ()[0 ])[0 ] in nums :
68
68
s = empty [i ].split ()[0 ][1 :]
69
69
if list (empty [i ].split ()[- 1 ])[- 1 ] in nums or list (empty [i ].split ()[- 1 ])[- 1 ] == 'T' :
70
- receipt [s + ' ' .join (empty [i ].split ()[1 :- 1 ])] = empty [i ].split ()[- 1 ]
70
+ receipt [s + ' ' .join (empty [i ].split ()[1 :- 1 ])] = { 'value' : empty [i ].split ()[- 1 ]}
71
71
else :
72
72
if list (empty [i ].split ()[- 1 ])[- 1 ] in nums or list (empty [i ].split ()[- 1 ])[- 1 ] == 'T' :
73
- receipt [' ' .join (empty [i ].split ()[0 :- 1 ])] = empty [i ].split ()[- 1 ]
74
- print (receipt )
73
+ receipt [' ' .join (empty [i ].split ()[0 :- 1 ])] = {'value' : empty [i ].split ()[- 1 ]}
74
+
75
+
75
76
else :
76
77
print ("Error Code:" + rescode )
78
+
79
+
80
+ # print(receipt)
81
+
82
+
77
83
# 파파고 번역 시작
84
+
78
85
maerong = []
79
- receipt_trans = {}
80
- client_id = "NYfX1D8nruuEQC6_20Dk " # 개발자센터에서 발급받은 Client ID 값
81
- client_secret = "fN0cDTYHh8 " # 개발자센터에서 발급받은 Client Secret 값
86
+
87
+ client_id = "AUXR0gR5NNTjtmnyWdDD " # 개발자센터에서 발급받은 Client ID 값
88
+ client_secret = "u6hHsOvN5g " # 개발자센터에서 발급받은 Client Secret 값
82
89
for key , val in receipt .items ():
83
90
if key == '' :
84
- key = 'None'
85
- if val == '' :
86
- val = 'None'
87
- if key == '3:33TOTAL' :
88
- key = 'TOTAL'
91
+ continue
89
92
encText = urllib .parse .quote (key )
90
- encText2 = urllib .parse .quote (val )
91
93
data = "source=en&target=ko&text=" + encText
92
- data2 = "source=en&target=ko&text=" + encText2
93
94
url = "https://openapi.naver.com/v1/papago/n2mt"
94
95
request = urllib .request .Request (url )
95
96
request .add_header ("X-Naver-Client-Id" ,client_id )
96
97
request .add_header ("X-Naver-Client-Secret" ,client_secret )
97
98
response = urllib .request .urlopen (request , data = data .encode ("utf-8" ))
98
- response2 = urllib .request .urlopen (request , data = data2 .encode ("utf-8" ))
99
99
rescode = response .getcode ()
100
- rescode2 = response2 .getcode ()
101
100
if (rescode == 200 ):
102
101
response_body = response .read ()
103
102
fix2 = response_body .decode ('utf-8' )
104
103
fix2 = json .loads (fix2 )
105
104
translated = fix2 ["message" ]["result" ]["translatedText" ]
105
+
106
106
# 예외 처리
107
107
if translated == '바꾸다' :
108
108
translated = '거스름 돈'
109
+
109
110
if translated == 'AMT' :
110
111
translated = '총'
112
+
111
113
if translated == '1/015:57p전체:' :
112
114
translated = '총'
113
115
if translated == '지불' :
114
116
translated = '총'
115
- if (rescode2 == 200 ):
116
- response_body2 = response2 .read ()
117
- fix3 = response_body2 .decode ('utf-8' )
118
- fix3 = json .loads (fix3 )
119
- translated1 = fix3 ["message" ]["result" ]["translatedText" ]
120
- receipt_trans [translated ] = translated1
121
- else :
122
- print ("Error Code:" + rescode )
123
- return (receipt , receipt_trans )
124
- # print(receipt_trans)
117
+ if translated == '합계:' :
118
+ translated = '총'
119
+ if translated == '전체:' :
120
+ translated = '총'
121
+
122
+ if key == '3:33TOTAL' :
123
+ translated = '총'
124
+
125
+ receipt [key ]['ko' ] = translated
126
+
127
+
128
+ # print(receipt)
129
+
130
+ result = {
131
+
132
+ }
133
+
134
+ useless = ['Cash' , 'Change' , 'SF * Healthy Surcharge' , 'Subtotal' , 'Net TTL' , '30VAT TTL' , 'Credit/Debit' , 'Tax' , 'Sub-Total' , '%GST' , 'VISA' , 'SUBTOTAL' , 'TAX:' , 'SUBTOTAL:' , 'Subtotal:' , 'Tax:' ]
135
+ result ['items' ] = []
136
+ for k , v in receipt .items ():
137
+ if k == 'place' :
138
+ result ['place' ]= receipt [k ]['value' ]
139
+
140
+ elif k == '' :
141
+ continue
142
+
143
+ elif v ['ko' ] == '총' :
144
+ result ['total_price' ] = receipt [k ]['value' ]
145
+
146
+ elif k == '3:33TOTAL' :
147
+ result ['total_price' ] = receipt [k ]['value' ]
148
+
149
+ elif k not in useless :
150
+ bb = {}
151
+ bb ['ko' ] = v ['ko' ]
152
+ if '$' in v ['value' ]:
153
+ v ['value' ] = v ['value' ].replace ("$" , "" )
154
+ v ['value' ] = float (v ['value' ])
155
+ bb ['value' ] = v ['value' ]
156
+ else :
157
+ bb ['value' ] = float (v ['value' ])
158
+ result ['items' ].append (bb )
159
+
160
+
161
+
162
+ if '$' in result ['total_price' ]:
163
+ result ['total_price' ] = float (result ['total_price' ].replace ("$" , "" ))
164
+
165
+ return result
0 commit comments