Ankushbl6 commited on
Commit
fb97a96
Β·
verified Β·
1 Parent(s): ca9da45

Update src/streamlit_app.py

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +21 -6
src/streamlit_app.py CHANGED
@@ -319,7 +319,6 @@ with col2:
319
  st.markdown(f"**Current:** <span style='color:{field_color}'>●</span> {display_field_name}", unsafe_allow_html=True)
320
 
321
  # ========== ZOOM CONTROLS (NOW ON RHS) ==========
322
- st.markdown("---")
323
  st.markdown("#### πŸ” Zoom")
324
 
325
  current_zoom = st.session_state.zoom_values[selected_name]
@@ -371,13 +370,21 @@ with col2:
371
  st.caption(f"Original: {pil_image.width}Γ—{pil_image.height}")
372
 
373
  # ========== OCR & VALUE SECTION ==========
374
- st.markdown("---")
375
  st.markdown("#### ✏️ OCR & Value")
376
 
377
  current_rect_orig = st.session_state.field_rects_orig[selected_name].get(storage_field_name)
378
  current_val = st.session_state.field_values[selected_name].get(storage_field_name, "")
 
 
 
379
 
380
- new_val = st.text_area("Value (auto-filled by OCR)", value=current_val, height=80, label_visibility="collapsed", placeholder="Value (auto-filled by OCR)")
 
 
 
 
 
 
381
 
382
  col_btn1, col_btn2, col_btn3 = st.columns(3)
383
 
@@ -398,6 +405,7 @@ with col2:
398
  text = pytesseract.image_to_string(crop, config="--psm 6").strip()
399
  if text:
400
  st.session_state.field_values[selected_name][storage_field_name] = text
 
401
  st.success(f"OCR: {text}")
402
  else:
403
  st.warning("Empty result")
@@ -428,7 +436,6 @@ with col2:
428
  st.write(f" {lif}: {v}")
429
 
430
  # ========== EXPORT SECTION ==========
431
- st.markdown("---")
432
  st.markdown("#### πŸ“€ JSONL Export")
433
 
434
  # Export ALL labeled remittances
@@ -540,6 +547,8 @@ with col1:
540
  new_rect_orig = display_to_orig(new_rect_display, scale)
541
  new_rect_orig["stroke"] = field_color
542
  st.session_state.field_rects_orig[selected_name][storage_field_name] = new_rect_orig
 
 
543
 
544
  # Auto-run OCR
545
  x1 = max(0, int(new_rect_orig["left"]))
@@ -553,8 +562,14 @@ with col1:
553
  text = pytesseract.image_to_string(crop, config="--psm 6").strip()
554
  if text:
555
  st.session_state.field_values[selected_name][storage_field_name] = text
 
 
556
  st.toast(f"βœ… OCR: {text[:50]}{'...' if len(text) > 50 else ''}")
557
  else:
558
- st.toast(f"βœ… Rectangle saved (no text detected)")
559
  except Exception:
560
- st.toast(f"βœ… Rectangle saved")
 
 
 
 
 
319
  st.markdown(f"**Current:** <span style='color:{field_color}'>●</span> {display_field_name}", unsafe_allow_html=True)
320
 
321
  # ========== ZOOM CONTROLS (NOW ON RHS) ==========
 
322
  st.markdown("#### πŸ” Zoom")
323
 
324
  current_zoom = st.session_state.zoom_values[selected_name]
 
370
  st.caption(f"Original: {pil_image.width}Γ—{pil_image.height}")
371
 
372
  # ========== OCR & VALUE SECTION ==========
 
373
  st.markdown("#### ✏️ OCR & Value")
374
 
375
  current_rect_orig = st.session_state.field_rects_orig[selected_name].get(storage_field_name)
376
  current_val = st.session_state.field_values[selected_name].get(storage_field_name, "")
377
+ value_state_key = f"value_{selected_name}_{storage_field_name}"
378
+ if value_state_key not in st.session_state:
379
+ st.session_state[value_state_key] = current_val
380
 
381
+ new_val = st.text_area(
382
+ "Value (auto-filled by OCR)",
383
+ key=value_state_key,
384
+ height=80,
385
+ label_visibility="collapsed",
386
+ placeholder="Value (auto-filled by OCR)",
387
+ )
388
 
389
  col_btn1, col_btn2, col_btn3 = st.columns(3)
390
 
 
405
  text = pytesseract.image_to_string(crop, config="--psm 6").strip()
406
  if text:
407
  st.session_state.field_values[selected_name][storage_field_name] = text
408
+ st.session_state[value_state_key] = text
409
  st.success(f"OCR: {text}")
410
  else:
411
  st.warning("Empty result")
 
436
  st.write(f" {lif}: {v}")
437
 
438
  # ========== EXPORT SECTION ==========
 
439
  st.markdown("#### πŸ“€ JSONL Export")
440
 
441
  # Export ALL labeled remittances
 
547
  new_rect_orig = display_to_orig(new_rect_display, scale)
548
  new_rect_orig["stroke"] = field_color
549
  st.session_state.field_rects_orig[selected_name][storage_field_name] = new_rect_orig
550
+ # bump rect version so canvas resets to only newest rect for this field
551
+ st.session_state.rect_version[selected_name] += 1
552
 
553
  # Auto-run OCR
554
  x1 = max(0, int(new_rect_orig["left"]))
 
562
  text = pytesseract.image_to_string(crop, config="--psm 6").strip()
563
  if text:
564
  st.session_state.field_values[selected_name][storage_field_name] = text
565
+ value_state_key = f"value_{selected_name}_{storage_field_name}"
566
+ st.session_state[value_state_key] = text
567
  st.toast(f"βœ… OCR: {text[:50]}{'...' if len(text) > 50 else ''}")
568
  else:
569
+ st.toast("βœ… Rectangle saved (no text detected)")
570
  except Exception:
571
+ st.toast("βœ… Rectangle saved")
572
+ else:
573
+ st.toast("βœ… Rectangle saved")
574
+ # force rerun so text area and canvas refresh with latest data
575
+ st.experimental_rerun()