@effortlessmotion/pdf-to-md
    Preparing search index...

    Interface PageStatsRow

    One row of the per-page QA breakdown ("### pN" blocks) — used to decide which pages are worth rendering and re-checking (README's "Design contract").

    interface PageStatsRow {
        chars: number;
        danglingLong: number;
        danglingShort: number;
        floats: number;
        headings: number;
        junkHeadings: number;
        largeImages?: boolean;
        lowConfidenceSample?: string[];
        lowConfidenceWords?: number;
        page: number;
        paragraphs: number;
        reviewBlocks: number;
    }
    Index
    chars: number
    danglingLong: number
    danglingShort: number
    floats: number
    headings: number
    junkHeadings: number
    largeImages?: boolean

    present only on the text path's rows; omitted (not false) on the OCR path, which has no per-page hybrid-image signal.

    lowConfidenceSample?: string[]

    the suspect tokens behind lowConfidenceWords, worst-confidence first and capped (report.ts's LOW_CONFIDENCE_SAMPLE_CAP) so a chart-heavy page can't bloat the JSON.

    lowConfidenceWords?: number

    count of words below report.ts's LOW_CONFIDENCE_THRESHOLD; omitted (not 0) when the page had no confidence data at all, so "measured 0" and "nothing to measure" stay distinct.

    page: number
    paragraphs: number
    reviewBlocks: number

    count of > [review: ...] lines — blocks the geometry could not order and labeled instead of guessing (README's "Design contract").