Commit History
-
[NOTICKET] feat(knowledge-parsing): Mistral OCR block normalizer (section default)
Mistral OCR (include_blocks=True) block stream -> per-section Chunk[], the counterpart of normalize.py for the Mistral backend. - Reuses normalize._heading and render.py so section boundaries and prose rendering match the MinerU path; artifact shape is identical (seam unchanged, extraction never learns which parser ran). - Strips markdown markup Mistral adds (not present in the source PDF) so the extraction span-check still matches quotes literally; whitespace kept verbatim. - granularity="section" (default) populates heading_path/heading/section_no, which extraction needs for outline + source_wording; "page" is recall-only. - Validated on the BUMA fixture through extraction's own adapter + span filter: section recall 0.878, page 0.951 (both above MinerU section 0.829). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>81b4f4e