Generate a expected paper for university examination 2026
cd /home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101 && python3 -c " import pdfplumber, os files = [ '2023_DEC_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_AUG_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_SEP_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', 'paper .pdf' ] for f in files: print(f'\\n========== {f} ==========') try: with pdfplumber.open(f) as pdf: for i, page in enumerate(pdf.pages): text = page.extract_text() if text: print(f'--- Page {i+1} ---') print(text) except Exception as e: print(f'ERROR: {e}') "
cd /home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101 && python3 -c " import fitz # PyMuPDF files = [ '2023_DEC_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_AUG_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_SEP_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', 'paper .pdf' ] for f in files: print(f'\\n========== {f} ==========') try: doc = fitz.open(f) for i, page in enumerate(doc): text = page.get_text() if text.strip(): print(f'--- Page {i+1} ---') print(text) else: print(f'--- Page {i+1}: (image/no text layer) ---') doc.close() except Exception as e: print(f'ERROR: {e}') "
cd /home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101 && python3 -c " from pypdf import PdfReader files = [ '2023_DEC_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_AUG_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_SEP_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', 'paper .pdf' ] for f in files: print(f'\\n========== {f} ==========') try: reader = PdfReader(f) print(f'Pages: {len(reader.pages)}') for i, page in enumerate(reader.pages): text = page.extract_text() print(f'--- Page {i+1} ---') print(repr(text[:200]) if text else 'EMPTY') except Exception as e: print(f'ERROR: {e}') "
which tesseract && tesseract --version 2>&1 | head -3; python3 -c "import pytesseract; print('pytesseract ok')" 2>&1; python3 -c "from pdf2image import convert_from_path; print('pdf2image ok')" 2>&1
python3 << 'EOF' from pdf2image import convert_from_path import pytesseract, os base = '/home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101' files = [ '2023_DEC_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_AUG_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_SEP_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', 'paper .pdf' ] all_texts = {} for f in files: path = os.path.join(base, f) print(f'\nProcessing: {f}') try: images = convert_from_path(path, dpi=200) text_parts = [] for i, img in enumerate(images): t = pytesseract.image_to_string(img) text_parts.append(f'--- Page {i+1} ---\n{t}') all_texts[f] = '\n'.join(text_parts) print(all_texts[f][:3000]) except Exception as e: print(f'ERROR: {e}') # Save to file for later use with open('/home/daytona/workspace/ocr_output.txt', 'w') as out: for k, v in all_texts.items(): out.write(f'\n\n========== {k} ==========\n{v}') print('\n\nSaved to ocr_output.txt') EOF
python3 << 'EOF' from pdf2image import convert_from_path import pytesseract, os base = '/home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101' f = '2023_DEC_M101_MBBS_1ST_PROF_ANATOMY-I.pdf' path = os.path.join(base, f) images = convert_from_path(path, dpi=150) for i, img in enumerate(images): t = pytesseract.image_to_string(img) print(f'--- Page {i+1} ---') print(t) EOF
python3 << 'EOF' from pdf2image import convert_from_path import pytesseract, os base = '/home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101' for f in ['2024_AUG_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2024_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf']: path = os.path.join(base, f) print(f'\n========== {f} ==========') images = convert_from_path(path, dpi=150) for i, img in enumerate(images): t = pytesseract.image_to_string(img) print(f'--- Page {i+1} ---') print(t) EOF
python3 << 'EOF' from pdf2image import convert_from_path import pytesseract, os base = '/home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101' for f in ['2025_SEP_M101_MBBS_1ST_PROF_ANATOMY-I.pdf', '2025_NOV_M101_MBBS_1ST_PROF_ANATOMY-I.pdf']: path = os.path.join(base, f) print(f'\n========== {f} ==========') images = convert_from_path(path, dpi=150) for i, img in enumerate(images): t = pytesseract.image_to_string(img) print(f'--- Page {i+1} ---') print(t) EOF
python3 << 'EOF' from pdf2image import convert_from_path import pytesseract, os base = '/home/daytona/workspace/attachments/e0511eca-13a1-49d1-a09f-844b1ec16101' path = os.path.join(base, 'paper .pdf') print('Processing paper.pdf (28 pages) - first 6 pages only for pattern...') images = convert_from_path(path, dpi=120, first_page=1, last_page=6) for i, img in enumerate(images): t = pytesseract.image_to_string(img) print(f'--- Page {i+1} ---') print(t[:2000]) EOF
python3 << 'PYEOF' # Pattern analysis summary from all 5 papers # Then generate a professional PDF from reportlab.lib.pagesizes import A4 from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.lib.units import cm, mm from reportlab.lib import colors from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY import os os.makedirs('/home/daytona/workspace/exam_paper', exist_ok=True) output_path = '/home/daytona/workspace/exam_paper/2026_Expected_M101_MBBS_1ST_PROF_ANATOMY-I.pdf' doc = SimpleDocTemplate( output_path, pagesize=A4, rightMargin=2*cm, leftMargin=2*cm, topMargin=2*cm, bottomMargin=2*cm ) styles = getSampleStyleSheet() # Custom styles title_style = ParagraphStyle('Title', parent=styles['Normal'], fontSize=14, fontName='Helvetica-Bold', alignment=TA_CENTER, spaceAfter=4) subtitle_style = ParagraphStyle('Subtitle', parent=styles['Normal'], fontSize=12, fontName='Helvetica-Bold', alignment=TA_CENTER, spaceAfter=2) center_style = ParagraphStyle('Center', parent=styles['Normal'], fontSize=11, fontName='Helvetica', alignment=TA_CENTER, spaceAfter=2) bold_style = ParagraphStyle('Bold', parent=styles['Normal'], fontSize=11, fontName='Helvetica-Bold', spaceAfter=4) normal_style = ParagraphStyle('NormalText', parent=styles['Normal'], fontSize=10.5, fontName='Helvetica', spaceAfter=3, leading=15) q_style = ParagraphStyle('Question', parent=styles['Normal'], fontSize=10.5, fontName='Helvetica-Bold', spaceAfter=2, leading=15) sub_style = ParagraphStyle('Sub', parent=styles['Normal'], fontSize=10.5, fontName='Helvetica', spaceAfter=2, leftIndent=20, leading=15) option_style = ParagraphStyle('Option', parent=styles['Normal'], fontSize=10, fontName='Helvetica', leftIndent=30, spaceAfter=1, leading=13) italic_style = ParagraphStyle('Italic', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique', leftIndent=10, spaceAfter=4, leading=14) section_style = ParagraphStyle('Section', parent=styles['Normal'], fontSize=11.5, fontName='Helvetica-Bold', spaceAfter=4, spaceBefore=6, borderPad=3, backColor=colors.HexColor('#f0f0f0')) note_style = ParagraphStyle('Note', parent=styles['Normal'], fontSize=10, fontName='Helvetica-Oblique', alignment=TA_CENTER, spaceAfter=2) story = [] # --- HEADER --- story.append(Paragraph("Sri Aurobindo University, Indore", title_style)) story.append(Paragraph("M.B.B.S. Phase - I Examination", subtitle_style)) story.append(Paragraph("Year 2026 (Expected Paper)", subtitle_style)) story.append(Spacer(1, 4)) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.black)) story.append(Spacer(1, 4)) story.append(Paragraph("Subject: Anatomy – I Code: M101", bold_style)) story.append(Spacer(1, 2)) # Info table info_data = [ ["Time: 3:00 Hours", "Maximum Marks: 100"], ] info_table = Table(info_data, colWidths=[9*cm, 9*cm]) info_table.setStyle(TableStyle([ ('FONTNAME', (0,0), (-1,-1), 'Helvetica-Bold'), ('FONTSIZE', (0,0), (-1,-1), 11), ('ALIGN', (0,0), (0,0), 'LEFT'), ('ALIGN', (1,0), (1,0), 'RIGHT'), ])) story.append(info_table) story.append(Spacer(1, 4)) # Instructions story.append(Paragraph("Instructions:", bold_style)) story.append(Paragraph("• All questions are compulsory.", normal_style)) story.append(Paragraph("• Draw neat, labelled diagrams wherever necessary.", normal_style)) story.append(Paragraph("• Write legibly and to the point.", normal_style)) story.append(HRFlowable(width="100%", thickness=1, color=colors.black)) story.append(Spacer(1, 6)) # ===== Q1: MCQ ===== story.append(Paragraph("Q.1 Multiple Choice Questions: (10 × 1 = 10)", section_style)) story.append(Spacer(1, 4)) story.append(Paragraph("[Note: Based on recent pattern shift, Q.1 contains 10 MCQs in Nov 2025 format]", note_style)) story.append(Spacer(1, 4)) mcqs = [ ("1.", "Which of the following muscles is responsible for unlocking the knee joint?", ["a. Quadriceps femoris", "b. Popliteus", "c. Gastrocnemius", "d. Plantaris"]), ("2.", "Damage to the common peroneal nerve at the neck of the fibula would result in:", ["a. Inability to plantar flex", "b. Foot drop", "c. Loss of knee reflex", "d. Loss of sensation on medial leg"]), ("3.", "Which of the following is a derivative of the notochord?", ["a. Anterior pituitary", "b. Nucleus pulposus", "c. Vertebral body", "d. Spinal cord"]), ("4.", "The nerve commonly injured in fracture of surgical neck of humerus is:", ["a. Radial nerve", "b. Musculocutaneous nerve", "c. Axillary nerve", "d. Ulnar nerve"]), ("5.", "Turner syndrome is caused by which chromosomal abnormality?", ["a. Trisomy 21", "b. Monosomy 45, X", "c. 47, XXY", "d. Trisomy 18"]), ("6.", "Which of the following muscles divides the axillary artery into three parts?", ["a. Subclavius", "b. Serratus anterior", "c. Pectoralis minor", "d. Scalenus anterior"]), ("7.", "The winging of scapula occurs due to paralysis of:", ["a. Trapezius", "b. Serratus anterior", "c. Rhomboids", "d. Levator scapulae"]), ("8.", "Median nerve enters the palm by passing through the:", ["a. Guyon's canal", "b. Carpal tunnel", "c. Cubital tunnel", "d. Radial groove"]), ("9.", "Which epithelium lines the urinary bladder?", ["a. Simple columnar", "b. Stratified squamous", "c. Transitional (Urothelium)", "d. Pseudostratified"]), ("10.", "The primary oocyte is arrested in which phase of meiosis?", ["a. Prophase I", "b. Metaphase II", "c. Anaphase I", "d. Telophase II"]), ] for num, q_text, options in mcqs: story.append(Paragraph(f"{num} {q_text}", q_style)) for opt in options: story.append(Paragraph(opt, option_style)) story.append(Spacer(1, 4)) story.append(HRFlowable(width="100%", thickness=0.5, color=colors.grey)) story.append(Spacer(1, 6)) # ===== Q2: STRUCTURED LONG ESSAY (2 x 15 = 30) ===== story.append(Paragraph("Q.2 Structured Long Essay Questions (Including one Problem-Based Question) (2 × 15 = 30)", section_style)) story.append(Spacer(1, 4)) story.append(Paragraph("a.", bold_style)) story.append(Paragraph( "A 28-year-old male presents to the emergency department after a motor vehicle accident. On examination, there is loss of the deltoid contour of the left shoulder, arm is held in slight abduction and external rotation, and the patient cannot abduct the arm. X-ray shows forward and downward displacement of the humeral head.", italic_style)) story.append(Paragraph("Answer the following questions based on your anatomical knowledge: (2+5+4+4 = 15 marks)", sub_style)) story.append(Paragraph("i. Name the clinical condition and the most commonly associated nerve injury.", sub_style)) story.append(Paragraph("ii. Describe the ligaments and factors stabilizing the shoulder joint.", sub_style)) story.append(Paragraph("iii. Describe the rotator cuff muscles — attachments, nerve supply and actions.", sub_style)) story.append(Paragraph("iv. Tabulate the movements at the shoulder joint and muscles producing them.", sub_style)) story.append(Spacer(1, 6)) story.append(Paragraph("b.", bold_style)) story.append(Paragraph("Describe the Knee Joint under the following headings: (2+4+5+4 = 15 marks)", sub_style)) story.append(Paragraph("i. Type and articular surfaces.", sub_style)) story.append(Paragraph("ii. Ligaments of the knee joint.", sub_style)) story.append(Paragraph("iii. Movements of the knee joint and muscles producing them.", sub_style)) story.append(Paragraph("iv. Locking and unlocking mechanism of the knee.", sub_style)) story.append(Spacer(1, 6)) story.append(HRFlowable(width="100%", thickness=0.5, color=colors.grey)) story.append(Spacer(1, 6)) # ===== Q3: REASONING BASED (3 x 5 = 15) ===== story.append(Paragraph("Q.3 Reasoning Based Questions (3 × 5 = 15)", section_style)) story.append(Spacer(1, 4)) story.append(Paragraph("a.", bold_style)) story.append(Paragraph( "A 60-year-old hypertensive man suddenly develops weakness of the right upper and lower limb, deviation of angle of mouth to left, and difficulty in speaking. Babinski's sign is positive on the right side.", italic_style)) story.append(Paragraph("i. What is the probable diagnosis?", sub_style)) story.append(Paragraph("ii. Describe the internal capsule — parts, blood supply, and fiber composition.", sub_style)) story.append(Paragraph("iii. Explain the anatomical basis of the clinical features. (1+2+2 = 5 marks)", sub_style)) story.append(Spacer(1, 6)) story.append(Paragraph("b.", bold_style)) story.append(Paragraph( "Describe the femoral triangle and explain why a surgeon performing femoral hernia repair must exercise extreme care while cutting the lacunar ligament.", sub_style)) story.append(Paragraph("(Boundaries, floor, contents + applied = 5 marks)", sub_style)) story.append(Spacer(1, 6)) story.append(Paragraph("c.", bold_style)) story.append(Paragraph( "Describe the process of fertilization. Explain in detail how polyspermy is prevented naturally. (3+2 = 5 marks)", sub_style)) story.append(Spacer(1, 6)) story.append(HRFlowable(width="100%", thickness=0.5, color=colors.grey)) story.append(Spacer(1, 6)) # ===== Q4: SHORT ESSAY (7 x 5 = 35) ===== story.append(Paragraph("Q.4 Short Essay Questions (Including one AETCOM 1.5 Question) (7 × 5 = 35)", section_style)) story.append(Spacer(1, 4)) short_notes = [ ("a.", "Lymphatic drainage of the breast. Add a note on the route of spread of carcinoma."), ("b.", "Describe the brachial plexus — roots, trunks, divisions, cords, and terminal branches. Draw a neat labelled diagram."), ("c.", "Klinefelter syndrome: Karyotype, clinical features, and mechanism."), ("d.", "Great saphenous vein: Course, tributaries, clinical significance, and perforating veins."), ("e.", "Describe the microscopic anatomy of hyaline cartilage with a neat labelled diagram."), ("f.", "Functional areas of the superolateral surface of the cerebrum (Motor, sensory, and association areas)."), ("g.", "[AETCOM] Ethical and respectful handling of human cadavers in the dissection hall — significance and guidelines."), ] for letter, text in short_notes: story.append(Paragraph(f"{letter} {text}", normal_style)) story.append(Spacer(1, 4)) story.append(HRFlowable(width="100%", thickness=0.5, color=colors.grey)) story.append(Spacer(1, 6)) # ===== Q5: BRIEF ANSWERS (5 x 2 = 10) ===== story.append(Paragraph("Q.5 Brief Answer / Diagram Based / Compare and Contrast (5 × 2 = 10)", section_style)) story.append(Spacer(1, 4)) briefs = [ ("a.", "Draw a neat labelled diagram of a typical synovial joint."), ("b.", "Compare and contrast the microscopic structure of arteries and veins (tabulate)."), ("c.", "Enumerate the derivatives of neural crest cells."), ("d.", "Draw a neat labelled diagram of the floor of the fourth ventricle."), ("e.", "Mention the movements of the thumb and muscles producing them."), ] for letter, text in briefs: story.append(Paragraph(f"{letter} {text}", normal_style)) story.append(Spacer(1, 4)) story.append(HRFlowable(width="100%", thickness=1.5, color=colors.black)) story.append(Spacer(1, 8)) story.append(Paragraph("— o — *** — o —", center_style)) story.append(Spacer(1, 10)) # ===== PATTERN ANALYSIS NOTE ===== story.append(HRFlowable(width="100%", thickness=1, color=colors.HexColor('#666666'))) story.append(Spacer(1, 6)) story.append(Paragraph("PATTERN ANALYSIS NOTES (For Student Reference Only)", ParagraphStyle('AnalysisTitle', parent=styles['Normal'], fontSize=11, fontName='Helvetica-Bold', alignment=TA_CENTER, textColor=colors.HexColor('#333333'), spaceAfter=6))) analysis_text = [ "<b>Paper Structure Evolution (2023–2025):</b>", "• <b>2023 Dec:</b> Q1=20 MCQs (20M), Q2=3×10 Long (30M), Q3=8×5 Short Notes (40M), Q4=5×2 Brief (10M). Total=100M", "• <b>2024 Aug:</b> Same structure — 20 MCQs + 3 Long + 8 Short Notes + 5 Brief", "• <b>2024 Nov:</b> Same structure — 20 MCQs + 3 Long + 8 Short Notes + 5 Brief", "• <b>2025 Sep:</b> RESTRUCTURED → 10 MCQs (10M), Q2=2×15 Long Essay (30M), Q3=3×5 Reasoning (15M), Q4=7×5 Short Essay (35M), Q5=5×2 Brief (10M). Total=100M", "• <b>2025 Nov:</b> Confirms new structure — 10 MCQs, 2×15, 3×5, 7×5, 5×2", "", "<b>Recurring High-Yield Topics (appeared in 3+ papers):</b>", "• Shoulder joint / dislocation — appeared in Dec2023, Nov2024, Sep2025, Nov2025", "• Knee joint / locking-unlocking — Dec2023, Nov2025, Sep2025", "• Popliteal fossa — Dec2023, Aug2024, Nov2024", "• Femoral triangle — Aug2024, Sep2025", "• Lymphatic drainage of breast — Aug2024, Nov2024, Sep2025, Nov2025", "• Great saphenous vein — Sep2025, Nov2024", "• Internal capsule / hemiplegia — Dec2023, Sep2025", "• Brachial plexus — Aug2024", "• Fertilization — Dec2023, Aug2024, Sep2025", "• Klinefelter / Turner syndrome — Multiple papers", "• Neural crest cells — Nov2024, Nov2025", "• Popliteus / knee unlocking — Aug2024, Nov2024, Sep2025, Nov2025", "• Winging of scapula / serratus anterior — Dec2023, Nov2024", "• Hyaline cartilage diagram — Aug2024, Nov2024", "• Floor of 4th ventricle — Aug2024, Sep2025", "• Functional areas of cerebrum — Nov2025, Sep2025 (Broca, Internal capsule)", "• AETCOM module — Sep2025, Nov2025 (cadaver, Kalamazoo, ethics)", "• Movements of thumb — Dec2023, Nov2024, Sep2025", "", "<b>Marks Distribution (2026 Format based on 2025 pattern):</b>", "Q1 MCQs: 10 marks | Q2 Long Essays: 30 marks | Q3 Reasoning: 15 marks | Q4 Short Essays: 35 marks | Q5 Brief: 10 marks", ] for line in analysis_text: if line == "": story.append(Spacer(1, 4)) else: story.append(Paragraph(line, ParagraphStyle('AnalysisText', parent=styles['Normal'], fontSize=9.5, fontName='Helvetica', leftIndent=5, spaceAfter=2, leading=14))) doc.build(story) print(f"PDF generated: {output_path}") PYEOF
2026 Expected M101 MBBS 1ST PROF ANATOMY I
PDF Document · PDF
| Session | Q1 MCQ | Q2 Long | Q3 | Q4 | Q5 | Total |
|---|---|---|---|---|---|---|
| 2023 Dec – 2024 Nov | 20 MCQs (20M) | 3×10 (30M) | 8×5 Short Notes (40M) | 5×2 Brief (10M) | - | 100 |
| 2025 Sep & Nov | 10 MCQs (10M) | 2×15 Long Essay (30M) | 3×5 Reasoning (15M) | 7×5 Short Essay (35M) | 5×2 Brief (10M) | 100 |