@@ -353,6 +353,10 @@ def authenticate():
353
353
# Once images are uploaded
354
354
if len (tally_sheet_images ) > 0 :
355
355
356
+ # First load session state
357
+ if 'first_load' not in st .session_state :
358
+ st .session_state ['first_load' ] = True
359
+
356
360
# Removing the data upload file button to force users to clear form
357
361
upload_holder .empty ()
358
362
@@ -366,7 +370,9 @@ def authenticate():
366
370
if 'page_nums' in st .session_state :
367
371
del st .session_state ['page_nums' ]
368
372
if 'pages_confirmed' in st .session_state :
369
- del st .session_state ['pages_confirmed' ]
373
+ del st .session_state ['pages_confirmed' ]
374
+ if 'first_load' in st .session_state :
375
+ del st .session_state ['first_load' ]
370
376
st .rerun ()
371
377
372
378
# Sidebar for header data
@@ -435,14 +441,17 @@ def authenticate():
435
441
436
442
# Spinner for data upload. If it's going to be on screen for long, make it bespoke
437
443
with st .spinner ("Running image recognition..." ):
438
- table_dfs , page_nums_to_display = [], []
439
- for i , sheet in enumerate (tally_sheet_images ):
440
- img = Image (src = sheet )
441
- table_df = get_tabular_content_wrapper (doctr_ocr , img )
442
- table_dfs .extend (table_df )
443
- page_nums_to_display .extend ([str (i + 1 )] * len (table_df ))
444
- table_dfs = clean_up (table_dfs )
445
- table_dfs = evaluate_cells (table_dfs )
444
+ if st .session_state ['first_load' ]:
445
+ table_dfs , page_nums_to_display = [], []
446
+ for i , sheet in enumerate (tally_sheet_images ):
447
+ img = Image (src = sheet )
448
+ table_df = get_tabular_content_wrapper (doctr_ocr , img )
449
+ table_dfs .extend (table_df )
450
+ page_nums_to_display .extend ([str (i + 1 )] * len (table_df ))
451
+ table_dfs = clean_up (table_dfs )
452
+ table_dfs = evaluate_cells (table_dfs )
453
+ else :
454
+ table_dfs = st .session_state ['table_dfs' ].copy ()
446
455
447
456
448
457
# Form session state initialization
@@ -470,7 +479,6 @@ def authenticate():
470
479
# Uploading the tables, adding columns for each name
471
480
for i , (df , page_num ) in enumerate (zip (st .session_state .table_dfs , st .session_state .page_nums )):
472
481
if page_num != page_selected :
473
- table_dfs [i ] = pd .DataFrame (df )
474
482
continue
475
483
int_page_num = int (page_num .replace (PAGE_REVIEWED_INDICATOR , "" ).strip ())
476
484
st .write (f"Table { i + 1 } " )
0 commit comments