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

    Interface AnalysisPage

    One page's flat words plus its structural blocks.

    interface AnalysisPage {
        blocks: AnalysisBlock[];
        page: number;
        path: "text" | "ocr";
        words: AnalysisWord[];
    }
    Index
    blocks: AnalysisBlock[]
    page: number
    path: "text" | "ocr"

    producer retained for this page; Analysis.report.path is 'mixed' when the document has more than one page producer.

    words: AnalysisWord[]

    Flat, page-relative source items; AnalysisBlock.wordIndexes indexes into it. OCR boxes are normalized [0,1]. Text-run boxes are page fractions and may extend outside that range when the PDF run extends past the viewport. Both use a bottom-left origin with y up.