docling-project / docling-project/docling-parse
Threaded parser and renderer lack the document metadata accessors (ToC, annotations, XMP)
- Dominant language
- C++
- Stars
- 333
- Forks
- 80
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 10
Description
### Summary
`docling_parser` exposes three document-level metadata accessors that neither `docling_threaded_parser` nor `docling_threaded_renderer` provides:
| Method | `docling_parser` | threaded parser | threaded renderer |
| --- | --- | --- | --- |
| `number_of_pages(key)` | ✅ `app/pybind_parse.cpp:824` | ✅ `:1032` | ✅ `:1245` |
| `get_annotations(key)` | ✅ `:838` | ❌ | ❌ |
| `get_table_of_contents(key)` | ✅ `:852` | ❌ | ❌ |
| `get_meta_xml(key)` | ✅ `:866` | ❌ | ❌ |
The threaded classes expose only load / unload / page counts / task consumption. Once a document is handed to the threaded parser there is no way to read its outline, annotations or XMP metadata.
Contributor guide
Research direction
Start in app/pybind_parse.cpp by comparing the existing get_annotations, get_table_of_contents, and get_meta_xml bindings with the threaded parser and renderer sections. Add matching document-level accessors to both threaded classes, and consider the work done when all three metadata methods are available alongside their existing load, unload, page-count, and task-consumption APIs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- api
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100