unknown commited on
Commit
4126ef5
·
1 Parent(s): e831c40

Fix local refinement mode for HF Space

Browse files
app.py CHANGED
@@ -1109,7 +1109,7 @@ footer {
1109
 
1110
  /* Custom placeholder */
1111
  #pdf_upload .wrap::after {
1112
- content: "☁️\A Drag & drop your PDF file here\A or click to browse";
1113
  white-space: pre-line;
1114
  color: #334155 !important;
1115
  -webkit-text-fill-color: #334155 !important;
 
1109
 
1110
  /* Custom placeholder */
1111
  #pdf_upload .wrap::after {
1112
+ content: "☁️\\A Drag & drop your PDF file here\\A or click to browse";
1113
  white-space: pre-line;
1114
  color: #334155 !important;
1115
  -webkit-text-fill-color: #334155 !important;
src/paper2lab/inference/pipeline.py CHANGED
@@ -27,7 +27,7 @@ from paper2lab.inference.visual_explainer import explain_figures_and_tables
27
  from paper2lab.inference.auto_select import build_auto_best_card
28
 
29
 
30
- RefinementMode = Literal["none", "nemotron"]
31
 
32
 
33
  class PaperPipeline:
@@ -50,7 +50,13 @@ class PaperPipeline:
50
  pdf_path: str | Path,
51
  refinement_mode: RefinementMode | None = None,
52
  ) -> Dict[str, Any]:
53
- active_refinement_mode = refinement_mode or self.refinement_mode
 
 
 
 
 
 
54
 
55
  extracted = extract_pdf(pdf_path, engine=self.pdf_engine)
56
  paper_card = build_paper_card(extracted)
@@ -78,8 +84,8 @@ class PaperPipeline:
78
  return_comparison=True,
79
  )
80
  auto_selection = build_auto_best_card(
81
- local_card=paper_card,
82
- refinement=refinement,
83
  )
84
 
85
  final_paper_card = auto_selection["final_paper_card"]
@@ -112,7 +118,7 @@ class PaperPipeline:
112
 
113
  result: Dict[str, Any] = {
114
  "status": "ok",
115
- "refinement_mode": active_refinement_mode,
116
  "paper_card": paper_card,
117
  "paper_card_refined": refinement.get("after_refinement", paper_card),
118
  "paper_card_final": final_paper_card,
 
27
  from paper2lab.inference.auto_select import build_auto_best_card
28
 
29
 
30
+ RefinementMode = Literal["none", "local", "nemotron"]
31
 
32
 
33
  class PaperPipeline:
 
50
  pdf_path: str | Path,
51
  refinement_mode: RefinementMode | None = None,
52
  ) -> Dict[str, Any]:
53
+ selected_refinement_mode = (
54
+ refinement_mode or self.refinement_mode or "local"
55
+ ).lower().strip()
56
+
57
+ active_refinement_mode = (
58
+ "none" if selected_refinement_mode == "local" else selected_refinement_mode
59
+ )
60
 
61
  extracted = extract_pdf(pdf_path, engine=self.pdf_engine)
62
  paper_card = build_paper_card(extracted)
 
84
  return_comparison=True,
85
  )
86
  auto_selection = build_auto_best_card(
87
+ local_card=paper_card,
88
+ refinement=refinement,
89
  )
90
 
91
  final_paper_card = auto_selection["final_paper_card"]
 
118
 
119
  result: Dict[str, Any] = {
120
  "status": "ok",
121
+ "refinement_mode": selected_refinement_mode,
122
  "paper_card": paper_card,
123
  "paper_card_refined": refinement.get("after_refinement", paper_card),
124
  "paper_card_final": final_paper_card,
src/paper2lab/inference/refinement.py CHANGED
@@ -5,7 +5,7 @@ from typing import Any, Dict, Literal
5
  from paper2lab.inference.nemotron_refiner import refine_with_nemotron
6
 
7
 
8
- RefinementMode = Literal["none", "nemotron"]
9
 
10
 
11
  def refine_optional(
@@ -14,14 +14,16 @@ def refine_optional(
14
  return_comparison: bool = True,
15
  ) -> Dict[str, Any]:
16
  """
17
- Default: keep local hardcoded/rule-based extraction.
18
- Optional: refine the candidate with Nemotron.
19
  """
20
 
21
- if mode == "none":
 
 
22
  return {
23
  "status": "skipped",
24
- "mode": "none",
25
  "before_refinement": paper_card,
26
  "after_refinement": paper_card,
27
  "diff_summary": {
@@ -67,4 +69,15 @@ def refine_optional(
67
  },
68
  }
69
 
70
- raise ValueError(f"Unsupported refinement mode: {mode}")
 
 
 
 
 
 
 
 
 
 
 
 
5
  from paper2lab.inference.nemotron_refiner import refine_with_nemotron
6
 
7
 
8
+ RefinementMode = Literal["none", "local", "nemotron"]
9
 
10
 
11
  def refine_optional(
 
14
  return_comparison: bool = True,
15
  ) -> Dict[str, Any]:
16
  """
17
+ none/local: keep local rule-based extraction.
18
+ nemotron: refine the candidate with Nemotron.
19
  """
20
 
21
+ mode = (mode or "none").lower().strip()
22
+
23
+ if mode in {"none", "local"}:
24
  return {
25
  "status": "skipped",
26
+ "mode": mode,
27
  "before_refinement": paper_card,
28
  "after_refinement": paper_card,
29
  "diff_summary": {
 
69
  },
70
  }
71
 
72
+ return {
73
+ "status": "error",
74
+ "mode": mode,
75
+ "error": f"Unsupported refinement mode: {mode}",
76
+ "before_refinement": paper_card,
77
+ "after_refinement": paper_card,
78
+ "diff_summary": {
79
+ "changed_fields": [],
80
+ "added_fields": [],
81
+ "removed_fields": [],
82
+ },
83
+ }