Spaces:
Running
Running
Commit
·
6b88c8f
1
Parent(s):
12ea480
fix safety check
Browse files- app.py +6 -4
- vouchervision/OCR_google_cloud_vision.py +39 -39
- vouchervision/utils_hf.py +60 -31
app.py
CHANGED
@@ -272,7 +272,7 @@ def handle_image_upload_and_gallery_hf(uploaded_files):
|
|
272 |
# Determine the file type
|
273 |
if uploaded_file.name.lower().endswith('.pdf'):
|
274 |
# Handle PDF files
|
275 |
-
file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file)
|
276 |
# Convert each page of the PDF to an image
|
277 |
n_pages = convert_pdf_to_jpg(file_path, st.session_state['dir_uploaded_images'], dpi=200)#st.session_state.config['leafmachine']['project']['dir_images_local'])
|
278 |
# Update the input list for each page image
|
@@ -287,16 +287,18 @@ def handle_image_upload_and_gallery_hf(uploaded_files):
|
|
287 |
# Optionally, create a thumbnail for the gallery
|
288 |
img = Image.open(jpg_file_path)
|
289 |
img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
|
290 |
-
|
291 |
file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], file_name, img)
|
292 |
-
|
293 |
file_path_small = save_uploaded_file_local(st.session_state['dir_uploaded_images_small'],st.session_state['dir_uploaded_images_small'], file_name, img)
|
294 |
st.session_state['input_list_small'].append(file_path_small)
|
295 |
|
296 |
else:
|
297 |
ind_small += 1
|
298 |
# Handle JPG/JPEG files (existing process)
|
299 |
-
file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file)
|
|
|
|
|
300 |
st.session_state['input_list'].append(file_path)
|
301 |
if ind_small < MAX_GALLERY_IMAGES +5:
|
302 |
img = Image.open(file_path)
|
|
|
272 |
# Determine the file type
|
273 |
if uploaded_file.name.lower().endswith('.pdf'):
|
274 |
# Handle PDF files
|
275 |
+
file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file, img=None)
|
276 |
# Convert each page of the PDF to an image
|
277 |
n_pages = convert_pdf_to_jpg(file_path, st.session_state['dir_uploaded_images'], dpi=200)#st.session_state.config['leafmachine']['project']['dir_images_local'])
|
278 |
# Update the input list for each page image
|
|
|
287 |
# Optionally, create a thumbnail for the gallery
|
288 |
img = Image.open(jpg_file_path)
|
289 |
img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
|
290 |
+
if st.session_state['is_hf']:
|
291 |
file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], file_name, img)
|
292 |
+
else:
|
293 |
file_path_small = save_uploaded_file_local(st.session_state['dir_uploaded_images_small'],st.session_state['dir_uploaded_images_small'], file_name, img)
|
294 |
st.session_state['input_list_small'].append(file_path_small)
|
295 |
|
296 |
else:
|
297 |
ind_small += 1
|
298 |
# Handle JPG/JPEG files (existing process)
|
299 |
+
# file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file) ######### Yale TODO
|
300 |
+
file_path = os.path.join(st.session_state['dir_uploaded_images'], uploaded_file.name)
|
301 |
+
|
302 |
st.session_state['input_list'].append(file_path)
|
303 |
if ind_small < MAX_GALLERY_IMAGES +5:
|
304 |
img = Image.open(file_path)
|
vouchervision/OCR_google_cloud_vision.py
CHANGED
@@ -809,42 +809,42 @@ class SafetyCheck():
|
|
809 |
return credentials
|
810 |
|
811 |
def check_for_inappropriate_content(self, file_stream):
|
812 |
-
try:
|
813 |
-
|
814 |
-
|
815 |
-
|
816 |
-
|
817 |
-
|
818 |
-
|
819 |
-
|
820 |
-
|
821 |
-
|
822 |
-
|
823 |
-
|
824 |
-
|
825 |
-
|
826 |
-
|
827 |
-
|
828 |
-
|
829 |
-
|
830 |
-
|
831 |
-
|
832 |
-
|
833 |
-
|
834 |
-
|
835 |
-
|
836 |
-
|
837 |
-
|
838 |
-
|
839 |
-
|
840 |
-
|
841 |
-
|
842 |
-
|
843 |
-
|
844 |
-
|
845 |
-
|
846 |
-
|
847 |
-
|
848 |
-
|
849 |
-
except:
|
850 |
-
return False # The image is considered safe. TEMPOROARY FIX TODO
|
|
|
809 |
return credentials
|
810 |
|
811 |
def check_for_inappropriate_content(self, file_stream):
|
812 |
+
# try:
|
813 |
+
LEVEL = 2
|
814 |
+
# content = file_stream.read()
|
815 |
+
file_stream.seek(0) # Reset file stream position to the beginning
|
816 |
+
content = file_stream.read()
|
817 |
+
image = vision.Image(content=content)
|
818 |
+
response = self.client.safe_search_detection(image=image)
|
819 |
+
safe = response.safe_search_annotation
|
820 |
+
|
821 |
+
likelihood_name = (
|
822 |
+
"UNKNOWN",
|
823 |
+
"VERY_UNLIKELY",
|
824 |
+
"UNLIKELY",
|
825 |
+
"POSSIBLE",
|
826 |
+
"LIKELY",
|
827 |
+
"VERY_LIKELY",
|
828 |
+
)
|
829 |
+
print("Safe search:")
|
830 |
+
|
831 |
+
print(f" adult*: {likelihood_name[safe.adult]}")
|
832 |
+
print(f" medical*: {likelihood_name[safe.medical]}")
|
833 |
+
print(f" spoofed: {likelihood_name[safe.spoof]}")
|
834 |
+
print(f" violence*: {likelihood_name[safe.violence]}")
|
835 |
+
print(f" racy: {likelihood_name[safe.racy]}")
|
836 |
+
|
837 |
+
# Check the levels of adult, violence, racy, etc. content.
|
838 |
+
if (safe.adult > LEVEL or
|
839 |
+
safe.medical > LEVEL or
|
840 |
+
# safe.spoof > LEVEL or
|
841 |
+
safe.violence > LEVEL #or
|
842 |
+
# safe.racy > LEVEL
|
843 |
+
):
|
844 |
+
print("Found violation")
|
845 |
+
return True # The image violates safe search guidelines.
|
846 |
+
|
847 |
+
print("Found NO violation")
|
848 |
+
return False # The image is considered safe.
|
849 |
+
# except:
|
850 |
+
# return False # The image is considered safe. TEMPOROARY FIX TODO
|
vouchervision/utils_hf.py
CHANGED
@@ -69,49 +69,78 @@ def save_uploaded_file_local(directory_in, directory_out, img_file_name, image=N
|
|
69 |
pass
|
70 |
|
71 |
|
72 |
-
def save_uploaded_file(directory, img_file, image=None):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
73 |
if not os.path.exists(directory):
|
74 |
os.makedirs(directory)
|
75 |
|
76 |
-
full_path = os.path.join(directory,
|
77 |
|
78 |
-
#
|
79 |
-
if
|
80 |
with open(full_path, 'wb') as out_file:
|
81 |
-
|
82 |
-
|
83 |
-
# If it's a path, you'd need to open and then save it.
|
84 |
-
if hasattr(img_file, 'read'):
|
85 |
-
# This is a file-like object
|
86 |
-
copyfileobj(img_file, out_file)
|
87 |
else:
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
return full_path
|
92 |
else:
|
93 |
if image is None:
|
94 |
try:
|
95 |
-
with Image.open(
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
except:
|
101 |
-
with Image.open(os.path.join(directory,img_file)) as image:
|
102 |
-
full_path = os.path.join(directory, img_file)
|
103 |
-
image.save(full_path, "JPEG")
|
104 |
-
# Return the full path of the saved image
|
105 |
-
return full_path
|
106 |
else:
|
107 |
try:
|
108 |
-
full_path = os.path.join(directory, img_file.name)
|
109 |
-
image.save(full_path, "JPEG")
|
110 |
-
return full_path
|
111 |
-
except:
|
112 |
-
full_path = os.path.join(directory, img_file)
|
113 |
image.save(full_path, "JPEG")
|
114 |
-
|
|
|
|
|
115 |
|
116 |
def save_uploaded_local(directory, img_file, image=None):
|
117 |
name = img_file.split(os.path.sep)[-1]
|
|
|
69 |
pass
|
70 |
|
71 |
|
72 |
+
# def save_uploaded_file(directory, img_file, image=None):
|
73 |
+
# if not os.path.exists(directory):
|
74 |
+
# os.makedirs(directory)
|
75 |
+
|
76 |
+
# full_path = os.path.join(directory, img_file.name)
|
77 |
+
|
78 |
+
# # Assuming the uploaded file is an image
|
79 |
+
# if img_file.name.lower().endswith('.pdf'):
|
80 |
+
# with open(full_path, 'wb') as out_file:
|
81 |
+
# # If img_file is a file-like object (e.g., Django's UploadedFile),
|
82 |
+
# # you can use copyfileobj or read chunks.
|
83 |
+
# # If it's a path, you'd need to open and then save it.
|
84 |
+
# if hasattr(img_file, 'read'):
|
85 |
+
# # This is a file-like object
|
86 |
+
# copyfileobj(img_file, out_file)
|
87 |
+
# else:
|
88 |
+
# # If img_file is a path string
|
89 |
+
# with open(img_file, 'rb') as fd:
|
90 |
+
# copyfileobj(fd, out_file)
|
91 |
+
# return full_path
|
92 |
+
# else:
|
93 |
+
# if image is None:
|
94 |
+
# try:
|
95 |
+
# with Image.open(img_file) as image:
|
96 |
+
# full_path = os.path.join(directory, img_file.name)
|
97 |
+
# image.save(full_path, "JPEG")
|
98 |
+
# # Return the full path of the saved image
|
99 |
+
# return full_path
|
100 |
+
# except:
|
101 |
+
# with Image.open(os.path.join(directory,img_file)) as image:
|
102 |
+
# full_path = os.path.join(directory, img_file)
|
103 |
+
# image.save(full_path, "JPEG")
|
104 |
+
# # Return the full path of the saved image
|
105 |
+
# return full_path
|
106 |
+
# else:
|
107 |
+
# try:
|
108 |
+
# full_path = os.path.join(directory, img_file.name)
|
109 |
+
# image.save(full_path, "JPEG")
|
110 |
+
# return full_path
|
111 |
+
# except:
|
112 |
+
# full_path = os.path.join(directory, img_file)
|
113 |
+
# image.save(full_path, "JPEG")
|
114 |
+
# return full_path
|
115 |
+
def save_uploaded_file(directory, uploaded_file, image=None):
|
116 |
if not os.path.exists(directory):
|
117 |
os.makedirs(directory)
|
118 |
|
119 |
+
full_path = os.path.join(directory, uploaded_file.name)
|
120 |
|
121 |
+
# Handle PDF files
|
122 |
+
if uploaded_file.name.lower().endswith('.pdf'):
|
123 |
with open(full_path, 'wb') as out_file:
|
124 |
+
if hasattr(uploaded_file, 'read'):
|
125 |
+
copyfileobj(uploaded_file, out_file)
|
|
|
|
|
|
|
|
|
126 |
else:
|
127 |
+
with open(uploaded_file, 'rb') as fd:
|
128 |
+
copyfileobj(fd, out_file)
|
129 |
+
return full_path
|
|
|
130 |
else:
|
131 |
if image is None:
|
132 |
try:
|
133 |
+
with Image.open(uploaded_file) as img:
|
134 |
+
img.save(full_path, "JPEG")
|
135 |
+
except Exception:
|
136 |
+
with Image.open(os.path.join(directory, uploaded_file.name)) as img:
|
137 |
+
img.save(full_path, "JPEG")
|
|
|
|
|
|
|
|
|
|
|
|
|
138 |
else:
|
139 |
try:
|
|
|
|
|
|
|
|
|
|
|
140 |
image.save(full_path, "JPEG")
|
141 |
+
except Exception:
|
142 |
+
image.save(os.path.join(directory, uploaded_file.name), "JPEG")
|
143 |
+
return full_path
|
144 |
|
145 |
def save_uploaded_local(directory, img_file, image=None):
|
146 |
name = img_file.split(os.path.sep)[-1]
|