{
  "schema_version": "0.2.0",
  "filename": "mixed.pdf",
  "size_bytes": 18508,
  "size_mb": 0.0177,
  "pages": 2,
  "encrypted": false,
  "password_required": false,
  "metadata_present": false,
  "embedded_file_count": 0,
  "outline_count": 0,
  "total_text_chars": 70,
  "estimated_text_tokens": 18,
  "usable_text_page_percentage": 50.0,
  "likely_scanned_page_percentage": 50.0,
  "document_type": "mixed",
  "preflight_score": 78,
  "risk_level": "medium",
  "summary": {
    "high": 2,
    "medium": 0,
    "low": 0,
    "info": 2
  },
  "page_metrics": [
    {
      "page": 1,
      "text_chars": 70,
      "image_count": 0,
      "image_coverage_ratio": 0.0,
      "rotation": 0,
      "width": 600.0,
      "height": 800.0,
      "mediabox": [
        0.0,
        0.0,
        600.0,
        800.0
      ],
      "cropbox": [
        0.0,
        0.0,
        600.0,
        800.0
      ],
      "drawing_count": 0,
      "table_count": 0,
      "annotation_count": 0,
      "widget_count": 0,
      "link_count": 0
    },
    {
      "page": 2,
      "text_chars": 0,
      "image_count": 1,
      "image_coverage_ratio": 1.0,
      "rotation": 0,
      "width": 600.0,
      "height": 800.0,
      "mediabox": [
        0.0,
        0.0,
        600.0,
        800.0
      ],
      "cropbox": [
        0.0,
        0.0,
        600.0,
        800.0
      ],
      "drawing_count": 0,
      "table_count": 0,
      "annotation_count": 0,
      "widget_count": 0,
      "link_count": 0
    }
  ],
  "issues": [
    {
      "type": "likely_scanned_page",
      "category": "text_layer",
      "detector_version": "1",
      "severity": "high",
      "confidence": 0.9,
      "pages": [
        2
      ],
      "message": "Raster images cover most of this page with little extractable text.",
      "why_it_matters": "A scan may require OCR or visual processing before text ingestion.",
      "evidence": {
        "observations": [
          {
            "pages": [
              2
            ],
            "text_chars": 0,
            "image_coverage_ratio": 1.0,
            "image_count": 1
          }
        ]
      },
      "suggested_actions": [
        "consider_ocr",
        "consider_visual_processing",
        "preserve_page_image"
      ]
    },
    {
      "type": "missing_text_layer",
      "category": "text_layer",
      "detector_version": "1",
      "severity": "high",
      "confidence": 0.85,
      "pages": [
        2
      ],
      "message": "Visible-content indicators accompany little or no extractable text.",
      "why_it_matters": "Text-only extraction may omit information represented visually.",
      "evidence": {
        "observations": [
          {
            "pages": [
              2
            ],
            "text_chars": 0,
            "image_coverage_ratio": 1.0,
            "drawing_count": 0
          }
        ]
      },
      "suggested_actions": [
        "consider_ocr",
        "consider_visual_processing"
      ]
    },
    {
      "type": "image_heavy_page",
      "category": "visual_content",
      "detector_version": "1",
      "severity": "info",
      "confidence": 0.85,
      "pages": [
        2
      ],
      "message": "Raster images occupy a substantial portion of the page.",
      "why_it_matters": "Charts, screenshots, or photographs may carry information absent from text.",
      "evidence": {
        "observations": [
          {
            "pages": [
              2
            ],
            "image_count": 1,
            "image_coverage_ratio": 1.0,
            "text_chars": 0
          }
        ]
      },
      "suggested_actions": [
        "consider_visual_processing",
        "preserve_page_image"
      ]
    },
    {
      "type": "low_scan_resolution",
      "category": "visual_content",
      "detector_version": "1",
      "severity": "info",
      "confidence": 0.9,
      "pages": [
        2
      ],
      "message": "A dominant image has low effective resolution at its displayed size.",
      "why_it_matters": "Small raster text may lose detail; resolution alone does not establish readability.",
      "evidence": {
        "observations": [
          {
            "pages": [
              2
            ],
            "bbox": [
              0.0,
              0.0,
              600.0,
              800.0
            ],
            "width_pixels": 60,
            "height_pixels": 80,
            "effective_dpi": 7.2,
            "threshold_dpi": 150
          }
        ]
      },
      "suggested_actions": [
        "manual_review",
        "preserve_page_image"
      ]
    }
  ],
  "warnings": []
}
