| 322 | |
| 323 | @dataclass |
| 324 | class Paper2FigureState(MainState): |
| 325 | request: Paper2FigureRequest = field(default_factory=Paper2FigureRequest) |
| 326 | fig_desc: str = '' |
| 327 | aspect_ratio: str = '16:9' |
| 328 | paper_file: str = '' |
| 329 | # 原始带内容的图像路径 |
| 330 | fig_draft_path: str = '' |
| 331 | # MinerU 解析得到的内容元素(文本 / 图片 / 表格等) |
| 332 | fig_mask: List[Dict[str, Any]] = field(default_factory=list) |
| 333 | # 二次编辑后的空框模板图(仅外层矩形和箭头) |
| 334 | fig_layout_path: str = '' |
| 335 | # SAM + SVG + EMF 形成的布局元素(仅背景框架层) |
| 336 | layout_items: List[Dict[str, Any]] = field(default_factory=list) |
| 337 | result_path: str = '' |
| 338 | ppt_path: str = '' |
| 339 | mask_detail_level: int = 2 |
| 340 | paper_idea: str = '' |
| 341 | input_type: str = 'PDF' |
| 342 | |
| 343 | # 技术路线图使用属性 ============================== |
| 344 | figure_tec_svg_content: str = "" |
| 345 | figure_tec_svg_bw_content: str = "" |
| 346 | figure_tec_svg_color_content: str = "" |
| 347 | svg_img_path: str = "" |
| 348 | mineru_port: int = int(os.environ.get("MINERU_PORT", 8010)) |
| 349 | svg_file_path: str = "" # svg 带文字图的 地址 |
| 350 | svg_bg_file_path: str = "" |
| 351 | svg_bw_file_path: str = "" |
| 352 | svg_bw_img_path: str = "" |
| 353 | svg_color_file_path: str = "" |
| 354 | svg_color_img_path: str = "" |
| 355 | # 带文字版本的svg图片 |
| 356 | svg_full_img_path: str = "" |
| 357 | # 背景svg code: |
| 358 | svg_bg_code : str = "" |
| 359 | |
| 360 | # 实验统计图使用属性 ============================== |
| 361 | # ===== 输入 ===== |
| 362 | pre_tool_results: Dict[str, Any] = field(default_factory=dict) # 前置工具结果注入 |
| 363 | |
| 364 | # ===== 中间结果 ===== |
| 365 | paper_idea: str = '' # 论文核心思想 |
| 366 | extracted_tables: List[Dict[str, Any]] = field(default_factory=list) # 从 MinerU 提取的表格列表 |
| 367 | # 每个表格格式: {"table_id": str, "headers": List[str], "rows": List[List[str]], "caption": str} |
| 368 | |
| 369 | chart_configs: Dict[str, Dict[str, Any]] = field(default_factory=dict) # 图表配置字典 |
| 370 | # 每个配置格式: {table_id: {"table_id": str, "chart_type": str, "x_column": str, "y_columns": List[str], ...}} |
| 371 | |
| 372 | generated_codes: Dict[str, Dict[str, Any]] = field(default_factory=dict) # 生成的代码字典 |
| 373 | # 每个代码格式: {table_id: {"table_id": str, "code": str}} |
| 374 | |
| 375 | # ===== 输出 ===== |
| 376 | generated_charts: Dict[str, str] = field(default_factory=dict) # 生成的图表路径字典 |
| 377 | stylize_results: Dict[str, list] = field(default_factory=dict) # 风格化后的图表路径字典 |
| 378 | |
| 379 | svg_bg_code: str = "" |
| 380 | |
| 381 | # paper2ppt 专用 ============================== |