mirror of
https://github.com/lllin000/PaperForge.git
synced 2026-07-22 06:50:53 +00:00
fix(ocr): prevent empty wikilinks for unresolved clusters in renderer
This commit is contained in:
parent
b7ca334aca
commit
64915aa3f2
2 changed files with 63 additions and 2 deletions
|
|
@ -695,8 +695,8 @@ def render_fulltext_markdown(
|
|||
tables_by_page.setdefault(page, []).append(tbl_id)
|
||||
|
||||
unresolved_clusters_by_page: dict[int, list[str]] = {}
|
||||
for cluster in figure_inventory.get("unresolved_clusters", []):
|
||||
cluster_id = cluster.get("cluster_id", "")
|
||||
for idx, cluster in enumerate(figure_inventory.get("unresolved_clusters", [])):
|
||||
cluster_id = cluster.get("cluster_id") or f"unresolved_cluster_{idx + 1:03d}"
|
||||
page = cluster.get("page", 0) or 1
|
||||
unresolved_clusters_by_page.setdefault(page, []).append(cluster_id)
|
||||
|
||||
|
|
|
|||
|
|
@ -2089,3 +2089,64 @@ def test_unresolved_cluster_appears_in_fulltext() -> None:
|
|||
)
|
||||
|
||||
assert "![[render/figures/cluster_001.md]]" in md
|
||||
|
||||
|
||||
def test_unresolved_cluster_link_with_unresolved_cluster_id() -> None:
|
||||
"""Unresolved cluster with valid cluster_id produces correct wikilink."""
|
||||
from paperforge.worker.ocr_render import render_fulltext_markdown
|
||||
|
||||
md = render_fulltext_markdown(
|
||||
structured_blocks=[
|
||||
{
|
||||
"role": "body_paragraph",
|
||||
"text": "Body text on page 1.",
|
||||
"render_default": True,
|
||||
"page": 1,
|
||||
},
|
||||
],
|
||||
resolved_metadata={},
|
||||
figure_inventory={
|
||||
"unresolved_clusters": [
|
||||
{
|
||||
"cluster_id": "unresolved_cluster_001",
|
||||
"page": 1,
|
||||
"cluster_bbox": [363, 237, 1075, 1016],
|
||||
"media_block_ids": [1, 2],
|
||||
}
|
||||
]
|
||||
},
|
||||
table_inventory={},
|
||||
)
|
||||
|
||||
assert "![[render/figures/unresolved_cluster_001.md]]" in md
|
||||
assert "![[render/figures/.md]]" not in md
|
||||
|
||||
|
||||
def test_unresolved_cluster_link_with_missing_id_is_defensive() -> None:
|
||||
"""When cluster_id is omitted, no empty wikilink is emitted."""
|
||||
from paperforge.worker.ocr_render import render_fulltext_markdown
|
||||
|
||||
md = render_fulltext_markdown(
|
||||
structured_blocks=[
|
||||
{
|
||||
"role": "body_paragraph",
|
||||
"text": "Body text on page 1.",
|
||||
"render_default": True,
|
||||
"page": 1,
|
||||
},
|
||||
],
|
||||
resolved_metadata={},
|
||||
figure_inventory={
|
||||
"unresolved_clusters": [
|
||||
{
|
||||
"page": 1,
|
||||
"cluster_bbox": [363, 237, 1075, 1016],
|
||||
"media_block_ids": [1, 2],
|
||||
}
|
||||
]
|
||||
},
|
||||
table_inventory={},
|
||||
)
|
||||
|
||||
assert "![[render/figures/.md]]" not in md
|
||||
assert "![[render/figures/unresolved_cluster_001.md]]" in md
|
||||
|
|
|
|||
Loading…
Reference in a new issue