Spaces:
Running
Running
unknown commited on
Commit ·
4126ef5
1
Parent(s): e831c40
Fix local refinement mode for HF Space
Browse files- app.py +1 -1
- src/paper2lab/inference/pipeline.py +11 -5
- src/paper2lab/inference/refinement.py +19 -6
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 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 82 |
-
|
| 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":
|
| 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 |
-
|
| 18 |
-
|
| 19 |
"""
|
| 20 |
|
| 21 |
-
|
|
|
|
|
|
|
| 22 |
return {
|
| 23 |
"status": "skipped",
|
| 24 |
-
"mode":
|
| 25 |
"before_refinement": paper_card,
|
| 26 |
"after_refinement": paper_card,
|
| 27 |
"diff_summary": {
|
|
@@ -67,4 +69,15 @@ def refine_optional(
|
|
| 67 |
},
|
| 68 |
}
|
| 69 |
|
| 70 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
+
}
|