diff --git a/document-parser/domain/value_objects.py b/document-parser/domain/value_objects.py index 0885852..e36b91e 100644 --- a/document-parser/domain/value_objects.py +++ b/document-parser/domain/value_objects.py @@ -19,6 +19,11 @@ class PageElement: bbox: list[float] content: str level: int = 0 + # Docling `self_ref` ("#/texts/12", "#/tables/3", …). Empty for items + # that don't have one (rare — defensive default). Lets callers correlate + # a rendered bbox with the corresponding node in the graph without + # resorting to fuzzy bbox matching. + self_ref: str = "" @dataclass(frozen=True) diff --git a/document-parser/infra/local_converter.py b/document-parser/infra/local_converter.py index 6be939e..af39ffa 100644 --- a/document-parser/infra/local_converter.py +++ b/document-parser/infra/local_converter.py @@ -194,7 +194,13 @@ def _process_content_item( content = item.export_to_markdown() pages[page_no].elements.append( - PageElement(type=element_type, bbox=bbox, content=content, level=level) + PageElement( + type=element_type, + bbox=bbox, + content=content, + level=level, + self_ref=getattr(item, "self_ref", "") or "", + ) ) except (AttributeError, KeyError, TypeError, ValueError): logger.warning( diff --git a/frontend/src/features/analysis/ui/GraphView.vue b/frontend/src/features/analysis/ui/GraphView.vue index 4552170..331b32c 100644 --- a/frontend/src/features/analysis/ui/GraphView.vue +++ b/frontend/src/features/analysis/ui/GraphView.vue @@ -19,7 +19,7 @@ + + +