phyloforfun commited on
Commit
ca048bb
1 Parent(s): 48130d6

Major update. Support for 15 LLMs, World Flora Online taxonomy validation, geolocation, 2 OCR methods, significant UI changes, stability improvements, consistent JSON parsing

Browse files
Files changed (1) hide show
  1. app.py +18 -34
app.py CHANGED
@@ -255,6 +255,7 @@ def handle_image_upload_and_gallery_hf(uploaded_files):
255
  # Clear input image gallery and input list
256
  clear_image_uploads()
257
 
 
258
  for uploaded_file in uploaded_files:
259
  # Determine the file type
260
  if uploaded_file.name.lower().endswith('.pdf'):
@@ -266,26 +267,30 @@ def handle_image_upload_and_gallery_hf(uploaded_files):
266
  converted_files = os.listdir(st.session_state['dir_uploaded_images'])
267
  for file_name in converted_files:
268
  if file_name.split('.')[1].lower() in ['jpg','jpeg']:
 
269
  jpg_file_path = os.path.join(st.session_state['dir_uploaded_images'], file_name)
270
  st.session_state['input_list'].append(jpg_file_path)
271
 
272
- # Optionally, create a thumbnail for the gallery
273
- img = Image.open(jpg_file_path)
274
- img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
275
- try:
276
- file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], file_name, img)
277
- except:
278
- file_path_small = save_uploaded_file_local(st.session_state['dir_uploaded_images_small'],st.session_state['dir_uploaded_images_small'], file_name, img)
279
- st.session_state['input_list_small'].append(file_path_small)
 
280
 
281
  else:
 
282
  # Handle JPG/JPEG files (existing process)
283
  file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file)
284
  st.session_state['input_list'].append(file_path)
285
- img = Image.open(file_path)
286
- img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
287
- file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], uploaded_file, img)
288
- st.session_state['input_list_small'].append(file_path_small)
 
289
 
290
  # After processing all files
291
  st.session_state.config['leafmachine']['project']['dir_images_local'] = st.session_state['dir_uploaded_images']
@@ -334,27 +339,7 @@ def handle_image_upload_and_gallery():
334
  file_path = save_uploaded_file_local(st.session_state.config['leafmachine']['project']['dir_images_local'], st.session_state['dir_uploaded_images'], input_file)
335
  # Convert each page of the PDF to an image
336
  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'])
337
-
338
-
339
- # pdf_files_pattern = os.path.join(st.session_state['dir_uploaded_images'], '*.pdf')
340
- # for pdf_file in glob.glob(pdf_files_pattern):
341
- # os.remove(pdf_file)
342
-
343
- # # Update the input list for each page image
344
- # converted_files = os.listdir(st.session_state['dir_uploaded_images'])
345
- # for file_name in converted_files:
346
- # if file_name.lower().endswith('.jpg'):
347
- # jpg_file_path = os.path.join(st.session_state['dir_uploaded_images'], file_name)
348
- # st.session_state['input_list'].append(jpg_file_path)
349
-
350
- # # Optionally, create a thumbnail for the gallery
351
- # img = Image.open(jpg_file_path)
352
- # img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
353
- # file_path_small = save_uploaded_file_local(st.session_state['dir_uploaded_images'], st.session_state['dir_uploaded_images_small'], file_name, img)
354
- # st.session_state['input_list_small'].append(file_path_small)
355
-
356
- # st.session_state.config['leafmachine']['project']['dir_images_local'] = st.session_state['dir_uploaded_images']
357
-
358
  else:
359
  pass
360
  # st.warning("Inputs must be '.PDF' or '.jpg' or '.jpeg'")
@@ -419,7 +404,6 @@ def list_jpg_files(directory_path):
419
  break
420
 
421
  for simg in jpg_files:
422
-
423
  simg2 = Image.open(simg)
424
  simg2.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
425
  file_path_small = save_uploaded_local(st.session_state['dir_uploaded_images_small'], simg, simg2)
 
255
  # Clear input image gallery and input list
256
  clear_image_uploads()
257
 
258
+ ind_small = 0
259
  for uploaded_file in uploaded_files:
260
  # Determine the file type
261
  if uploaded_file.name.lower().endswith('.pdf'):
 
267
  converted_files = os.listdir(st.session_state['dir_uploaded_images'])
268
  for file_name in converted_files:
269
  if file_name.split('.')[1].lower() in ['jpg','jpeg']:
270
+ ind_small += 1
271
  jpg_file_path = os.path.join(st.session_state['dir_uploaded_images'], file_name)
272
  st.session_state['input_list'].append(jpg_file_path)
273
 
274
+ if ind_small < MAX_GALLERY_IMAGES +5:
275
+ # Optionally, create a thumbnail for the gallery
276
+ img = Image.open(jpg_file_path)
277
+ img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
278
+ try:
279
+ file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], file_name, img)
280
+ except:
281
+ file_path_small = save_uploaded_file_local(st.session_state['dir_uploaded_images_small'],st.session_state['dir_uploaded_images_small'], file_name, img)
282
+ st.session_state['input_list_small'].append(file_path_small)
283
 
284
  else:
285
+ ind_small += 1
286
  # Handle JPG/JPEG files (existing process)
287
  file_path = save_uploaded_file(st.session_state['dir_uploaded_images'], uploaded_file)
288
  st.session_state['input_list'].append(file_path)
289
+ if ind_small < MAX_GALLERY_IMAGES +5:
290
+ img = Image.open(file_path)
291
+ img.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
292
+ file_path_small = save_uploaded_file(st.session_state['dir_uploaded_images_small'], uploaded_file, img)
293
+ st.session_state['input_list_small'].append(file_path_small)
294
 
295
  # After processing all files
296
  st.session_state.config['leafmachine']['project']['dir_images_local'] = st.session_state['dir_uploaded_images']
 
339
  file_path = save_uploaded_file_local(st.session_state.config['leafmachine']['project']['dir_images_local'], st.session_state['dir_uploaded_images'], input_file)
340
  # Convert each page of the PDF to an image
341
  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'])
342
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  else:
344
  pass
345
  # st.warning("Inputs must be '.PDF' or '.jpg' or '.jpeg'")
 
404
  break
405
 
406
  for simg in jpg_files:
 
407
  simg2 = Image.open(simg)
408
  simg2.thumbnail((GALLERY_IMAGE_SIZE, GALLERY_IMAGE_SIZE), Image.Resampling.LANCZOS)
409
  file_path_small = save_uploaded_local(st.session_state['dir_uploaded_images_small'], simg, simg2)