mode_setup.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. """
  2. 模式设置(新建/编辑)
  3. """
  4. import streamlit as st
  5. from PIL import Image
  6. from typing import Dict, Tuple
  7. import sys
  8. from pathlib import Path
  9. # 添加父目录到路径
  10. sys.path.insert(0, str(Path(__file__).parent.parent))
  11. try:
  12. from ..table_line_generator import TableLineGenerator
  13. except ImportError:
  14. from table_line_generator import TableLineGenerator
  15. from .display_controls import create_display_settings_section, create_undo_redo_section
  16. from .analysis_controls import create_analysis_section
  17. def setup_new_annotation_mode(
  18. ocr_data: list,
  19. image: Image.Image,
  20. display_config: Dict
  21. ) -> Tuple:
  22. """
  23. 设置新建标注模式
  24. Returns:
  25. (generator, structure, undo_stack, line_width, display_mode, zoom_level, show_line_numbers)
  26. """
  27. # 🔑 获取当前工具类型
  28. tool = st.session_state.get('current_tool', 'ppstructv3')
  29. # 初始化生成器
  30. if 'generator' not in st.session_state:
  31. st.session_state.generator = TableLineGenerator(image, ocr_data)
  32. # 分析控件
  33. structure = create_analysis_section(
  34. st.session_state.generator,
  35. tool=tool # 🔑 传入工具类型
  36. )
  37. # 显示控件
  38. line_width, display_mode, zoom_level, show_line_numbers = create_display_settings_section(
  39. display_config
  40. )
  41. # 撤销/重做
  42. undo_stack = []
  43. return (
  44. st.session_state.generator,
  45. structure,
  46. undo_stack,
  47. line_width,
  48. display_mode,
  49. zoom_level,
  50. show_line_numbers
  51. )
  52. def setup_edit_annotation_mode(
  53. structure: Dict,
  54. image: Image.Image,
  55. display_config: Dict
  56. ) -> Tuple:
  57. """
  58. 设置编辑标注模式
  59. Returns:
  60. (image, line_width, display_mode, zoom_level, show_line_numbers)
  61. """
  62. # 显示控件
  63. line_width, display_mode, zoom_level, show_line_numbers = create_display_settings_section(
  64. display_config
  65. )
  66. # 撤销/重做控件
  67. create_undo_redo_section()
  68. return (
  69. image,
  70. line_width,
  71. display_mode,
  72. zoom_level,
  73. show_line_numbers
  74. )