← All methodologies

doc-researcher — declared by folio-assistant-core — source held

Applies when. A question must be answered from documents this folio has ingested, and one retrieval pass will not do it. Use it when the answer is spread across several documents, or across text and figures within one, or when the asker will follow up. It answers how to search a corpus you already hold, never what to hold — library-ingestion and the L1 completeness gate answer that, and this method assumes their output. Do NOT reach for it for a single lookup in a known document. The loop below costs iterations, and a method whose cheapest path is more expensive than reading the page is the wrong method.

Origin. Kuicai Dong, Shurui Huang, Fangda Ye, Wei Han, Zhi Zhang, Dexun Li, Wenjun Li, Qu Yang, Gang Wang, Yichao Wang, Chen Zhang and Yong Liu, “Doc-Researcher: A Unified System for Multimodal Document Parsing and Deep Research” (arXiv:2510.21603v1, Huawei Technologies, 24 October 2025). Open access. THE PRIMARY IS HELD AND PROMOTED, at library/arxiv-2510.21603v1, which is what evidence: below points at. It was staged and unpromotable for a day: the extractor reported 383 images, 335 of them on page 3, and its image-descriptions requirement could not be met. It holds fifty. See §”What this checkout holds” — the first reading of those 383 was wrong, and the correction is kept there rather than tidied away. It is a SYSTEM paper reporting one implementation against a benchmark its own authors built, so what is adopted below is the METHOD, and §”Where this rendering stops” says which parts were left behind.

Ingested sources:

Node file: doc-researcher.md


Doc-Researcher

Two modules, and the paper’s own claim is that the second cannot work without the first: “effective document research requires not just better retrieval, but fundamentally deep parsing that preserve multimodal integrity and support iterative research.”

1 — Parsing produces FOUR granularities, not one

The part worth taking, and the part this checkout is furthest from.

A document is parsed once into layout elements — text, table, figure, equation — each carrying its page and bounding box. Then it is assembled at four levels: chunk (layout-aware merges within section boundaries), page (all elements of a page, or its raw screenshot), full (everything), and summary (an LLM summary of the full text).

The four exist so that a later step can CHOOSE. That is the whole mechanism: a broad question is answered from summaries, a specific one from chunks, and the choice is made per query rather than fixed by the pipeline. A corpus parsed at one granularity has made that choice for every question in advance.

Visual elements are converted to text once, at parse time, rather than on every retrieval — tables and figures to both a coarse summary and a fine description, equations to LaTeX. The paper’s reason is cost, and it is worth restating as a design rule: a conversion that will be needed many times is done at write time.

2 — Research is four roles and a sufficiency threshold

rolewhat it does
Plannerfilters the corpus against document summaries, picks the granularity, and decomposes the question into sub-queries
Searcherretrieves for one sub-query at the chosen granularity
Refinerdeduplicates and filters what came back to what is actually relevant
Reportersynthesises the accumulated evidence, with citations to page and bounding box

The loop is Search → Refine → Evaluate, and it is the evaluation that makes it a method rather than a habit: a sufficiency measure σ over everything accumulated so far, against the original question, with the loop continuing until σ ≥ τ or t = T_max. Sub-queries are re-derived each iteration rather than fixed at the start.

Both stopping conditions are load-bearing. Threshold alone never terminates on a question the corpus cannot answer; iteration cap alone stops an answerable question early. A loop with only one of them is a different and worse method.

What the paper measured, and what it did not

Measured, on M4DocBench — 158 expert-annotated questions over 304 documents, built by the same authors: 50.6% accuracy, which they report as 3.4× the best baseline they tried. Planner filtering reduced the search space by 60–80% “while maintaining high recall”.

Not measured, and it matters for adoption here: the benchmark is the authors’ own, so the headline ratio compares their system against baselines on ground they chose. 50.6% is also the absolute number — on a benchmark built to be answerable, roughly half the questions are not answered correctly. Neither observation makes the METHOD wrong; both make “3.4×” the wrong thing to quote, and this node quotes the structure instead.

What this checkout already does, and where it differs

methodology-adoption §”Extract the PROCESS, not the paper’s tools” requires this comparison before any tool is proposed. Read from the pipeline, not assumed:

the method asks forthis checkout hasgap
layout-aware parse with page + bbox provenancepdf-structure.py → structure.json, images placed with page idsnone of substance
visual elements described once at parse timepdf-images.py + the image-verdict and narrative state machine, where an agent drafts and only a person confirmsstricter here, deliberately — see below
four granularities {chunk, page, full, summary}l1-blocks.ts produces blocks; sections exist; no summary level and no per-query granularity choicethe real gap
retrieve text-only / vision-only / hybridnot modelledopen
Planner / Searcher / Refiner / Reporter with a sufficiency thresholdnot modelled as a processthe second real gap

Where this checkout is STRICTER, and should stay so. The paper generates figure descriptions with a VLM and uses them. Here, a description an agent wrote is a draft and only a person may confirm it, because — in apply-image-verdicts.ts’s words — “an uncited narrative is indistinguishable from a transcription of the source, and the two have very different standing.” Adopting the method must not quietly adopt machine descriptions as fact. The four-granularity idea is separable from that and is what is worth taking.

What this checkout holds, and what it does not

The paper is at library/arxiv-2510.21603v1 and promoted, L1 complete: 24 chapters read from the embedded outline, and fifty images each carrying a description drafted from inspection. evidence: points at it.

It took a day and a correction to get there, and the correction is the part worth reading.

CORRECTED 2026-09-24 — the first reading of those 383 was wrong

This section said the 383 were “fragments of one composite architecture figure”, “many byte-identical in size”, and that writing 383 descriptions “would be the fabrication document-image.ts’s inspection basis exists to refuse.” All three claims were wrong, and they were wrong in the way that matters: they were inferred from counts and file sizes rather than from looking at the images.

Looking at them:

  • They are clip-art icons — a newspaper, a picture placeholder, and so on: the icons the paper’s Figure 1 uses to depict document types flowing through its pipeline. Distinct, meaningful, individually describable.
  • 383 placements are 50 DISTINCT images by content hash. Page 3’s 335 are 22 distinct, each placed about fifteen times.

So the defect is not fragmentation of a composite. It is that the extractor emits one entry per placement rather than per distinct image. And the conclusion that followed from the wrong reading does not hold: describing 50 images is ordinary work, not fabrication. This document is promotable once the duplicates are collapsed.

Bean j820 carries the measurement across all 29 ingested documents, including the same ratio in three other entries (9789241509510-eng 161→102, 9789241511766-eng 99→44, arxiv-2312.07755v1 84→28). It was a general extractor defect with a mechanical fix, and issue #1234 shipped it: pdf-images.py now emits one entry per distinct image, keyed on the PDF’s own xref, with every placement recorded in placements[].

Each of the fifty was then opened and described. Four are logo — the Word, PowerPoint, Excel and Wikipedia marks, stock glyphs rather than content the authors drew. Every narrative is a draft: only a person may confirm one, which is the rule this node argues for two sections above.

Why the wrong reading is left on the record rather than deleted. It is the exact failure this node warns about two sections above, committed by the node itself: a description asserted from measurement rather than from inspection. Two file reads falsified it. That is worth more as a worked example than as a clean paragraph.

Where this rendering stops

  • No implementation is adopted. MinerU, Qwen2.5-VL and UniMERNet are the paper’s tools, not obligations; methodology-adoption is explicit that the process is extracted and the tools chosen separately.
  • M4DocBench is not adopted. A benchmark of 158 questions over somebody else’s 304 documents measures their corpus, not this one.
  • The retrieval paradigms are recorded, not chosen. Text-only, vision-only and hybrid are a real trade-off, and nothing here has measured which suits a folio corpus. Choosing one from the paper’s numbers would be adopting a result obtained on other documents.
  • σ is not defined here. The paper gives sufficiency a symbol and a threshold and does not say how it is computed. That is the load-bearing quantity in the whole loop, and this node will not invent one.

folio-assistant — code under the Apache License 2.0, documentation under CC BY 3.0. Generated schema and API references are rebuilt from source on every push to main.

deployed b08c961 · 2026-10-23T23:11:09Z