Can you analyse GPAT last 5 year question paper?
Create a chapter-wise GPAT weightage table
GPAT previous year question paper chapter-wise weightage pharmaceutical subjects analysis 2021 2022 2023 2024 2025
pharmacy education assessment
site:natboard.edu.in GPAT information bulletin 2025 pdf syllabus 38 38 28 10
https://www.shiksha.com/medicine-health-sciences/pharmacy/gp…
| Section | Chapter / topic cluster | Expected questions | Approx. marks | Priority |
|---|---|---|---|---|
| Pharmaceutical Chemistry and Allied | Medicinal chemistry: SAR, drug synthesis, classification, IUPAC, metabolism | 8-10 | 32-40 | Very high |
| Pharmaceutical analysis: spectroscopy, chromatography, titrations, validation | 6-8 | 24-32 | Very high | |
| Organic chemistry: named reactions, stereochemistry, intermediates, mechanisms | 5-6 | 20-24 | High | |
| Biochemistry: metabolism, enzymes, vitamins, nucleic acids | 4-5 | 16-20 | High | |
| Physical chemistry: kinetics, thermodynamics, pH, buffers, colligative properties | 3-5 | 12-20 | High | |
| Inorganic chemistry: limit tests, impurities, antidotes, radiopharmaceuticals | 2-3 | 8-12 | Moderate | |
| Section total | 38 | 152 | ||
| Pharmaceutics and Allied | Pharmaceutical technology: tablets, capsules, coating, parenterals, sterile products | 9-11 | 36-44 | Very high |
| Physical pharmaceutics: rheology, micromeritics, surface chemistry, stability | 5-6 | 20-24 | High | |
| Dosage forms: suspensions, emulsions, semisolids, aerosols, ophthalmics | 5-6 | 20-24 | High | |
| Biopharmaceutics and pharmacokinetics: ADME, clearance, bioavailability, compartment models | 4-5 | 16-20 | Very high | |
| Novel drug delivery systems: liposomes, nanoparticles, transdermal, controlled release | 3-4 | 12-16 | High | |
| Industrial pharmacy, GMP, validation, packaging and QA | 3-4 | 12-16 | High | |
| Microbiology and sterilization | 2-3 | 8-12 | Moderate | |
| Section total | 38 | 152 | ||
| Pharmacology and Allied | General pharmacology: receptors, dose-response, adverse effects, pharmacokinetics | 3-4 | 12-16 | Very high |
| Autonomic nervous system drugs | 2-3 | 8-12 | High | |
| Cardiovascular, renal and blood drugs | 3-4 | 12-16 | Very high | |
| CNS drugs: sedatives, antiepileptics, antipsychotics, antidepressants, analgesics | 3-4 | 12-16 | Very high | |
| Endocrine and autacoid drugs | 2-3 | 8-12 | High | |
| Antimicrobials, anticancer drugs and chemotherapy | 4-5 | 16-20 | Very high | |
| Respiratory and gastrointestinal pharmacology | 2-3 | 8-12 | Moderate | |
| Toxicology, poisoning, antidotes and clinical pharmacology | 2-3 | 8-12 | High | |
| Section total | 28 | 112 | ||
| Pharmacognosy and Allied | Natural drugs: biological source, family, constituents, uses and adulteration | 3-4 | 12-16 | Very high |
| Phytochemistry: alkaloids, glycosides, flavonoids, terpenoids, tannins | 2-3 | 8-12 | High | |
| Biosynthesis and biogenetic pathways | 1-2 | 4-8 | Moderate | |
| Herbal drug standardization, extraction and evaluation | 1-2 | 4-8 | High | |
| Marine drugs, nutraceuticals and plant tissue culture | 1-2 | 4-8 | Moderate | |
| Section total | 10 | 40 | ||
| Other B.Pharm Subjects | Pharmaceutical jurisprudence: Drugs and Cosmetics Act, schedules, NDPS, Pharmacy Act | 2-3 | 8-12 | High |
| Pharmaceutical management and marketing | 1-2 | 4-8 | Moderate | |
| Hospital and clinical pharmacy: prescription, ADR, TDM, patient counselling | 2-3 | 8-12 | High | |
| Human anatomy and physiology / pathophysiology | 1-2 | 4-8 | Moderate | |
| Biostatistics, research methodology and computer applications | 1-2 | 4-8 | Moderate | |
| Environmental science / health education | 0-1 | 0-4 | Low | |
| Section total | 11 | 44 | ||
| Grand total | 125 | 500 |
This my last year official answer key can you highlight my mistake, my week area's and my strength.
~/
~/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e
mkdir -p "/tmp/workspace/gpat-answer-analysis/src" "/tmp/workspace/gpat-answer-analysis/output" && python -c "from pypdf import PdfReader; p='/tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf'; r=PdfReader(p); print('pages',len(r.pages)); print('metadata',r.metadata); [print('---PAGE',i+1,'---\n', (page.extract_text() or '')[:2500]) for i,page in enumerate(r.pages)]"
python -c "import fitz, os; p='/tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf'; d=fitz.open(p); out='/tmp/workspace/gpat-answer-analysis/src'; [d[i].get_pixmap(matrix=fitz.Matrix(1.5,1.5),alpha=False).save(f'{out}/page_{i+1:02d}.png') for i in range(len(d))]; print('rendered',len(d))"
python -c "from pypdf import PdfReader; from PIL import Image; import io,os; p='/tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf'; r=PdfReader(p); out='/tmp/workspace/gpat-answer-analysis/src'; print('pages',len(r.pages)); for n,page in enumerate(r.pages,1): imgs=list(page.images); print(n,len(imgs),[(im.name,len(im.data)) for im in imgs]); for j,im in enumerate(imgs): open(f'{out}/p{n:02d}_{j:02d}.{im.name.split(chr(46))[-1]}','wb').write(im.data)"
python -c "import importlib.util; print('easyocr',importlib.util.find_spec('easyocr')); print('paddleocr',importlib.util.find_spec('paddleocr')); print('cv2',importlib.util.find_spec('cv2')); from PIL import Image; import os; files=sorted(os.listdir('/tmp/workspace/gpat-answer-analysis/src')); [(lambda x: print(x,Image.open('/tmp/workspace/gpat-answer-analysis/src/'+x).size))(f) for f in files if f.endswith('.jpg')]"
python -c "import shutil,importlib.util; print('tesseract',shutil.which('tesseract')); print('pytesseract',importlib.util.find_spec('pytesseract')); print('rapidocr',importlib.util.find_spec('rapidocr_onnxruntime')); print('doctr',importlib.util.find_spec('doctr')); print('transformers',importlib.util.find_spec('transformers'))"
Analyze the uploaded PDF at /tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf. It is an 18-page scanned GPAT response/answer-key document. Extract, as accurately as possible, the candidate's responses versus official answer key, score, question-level mistakes/unattempted questions, and subject/chapter patterns. Use appropriate PDF/image processing and visual reading available to you. Return a concise structured report with counts and a complete or near-complete list of mistakes if possible, including question number, candidate answer, correct answer, and topic.
~/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e
python - <<'PY' from pypdf import PdfReader p='/tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf' r=PdfReader(p) print('pages',len(r.pages)) for i,page in enumerate(r.pages): t=page.extract_text() or '' print(i+1, len(t), repr(t[:500])) PY python - <<'PY' import fitz, os p='/tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf' out='/tmp/workspace/gpat_render'; os.makedirs(out,exist_ok=True) doc=fitz.open(p) for i, page in enumerate(doc): pix=page.get_pixmap(matrix=fitz.Matrix(1.5,1.5), alpha=False) pix.save(f'{out}/p{i+1:02}.png') print(out) PY
python - <<'PY' import pypdf, os p='/tmp/workspace/attachments/0c922fd7-2ceb-4395-8910-87f193369a5e/GPAT 26 .pdf'; out='/tmp/workspace/gpat_imgs'; os.makedirs(out,exist_ok=True) r=pypdf.PdfReader(p) for n,page in enumerate(r.pages,1): print(n, page.mediabox, len(page.images)) for j,img in enumerate(page.images): with open(f'{out}/p{n:02}_{j}.{img.name.split(".")[-1]}','wb') as f:f.write(img.data) PY python - <<'PY' try: import pdf2image; print('pdf2image yes') except Exception as e: print('no',e) try: import PIL; print('PIL yes') except Exception as e: print('no PIL',e) PY ls -lh /tmp/workspace/gpat_imgs | sed -n '1,25p'
python - <<'PY' from PIL import Image,ImageDraw import glob,os fs=glob.glob('/tmp/workspace/gpat_imgs/*') ims=[] for f in fs: im=Image.open(f).convert('RGB'); im.thumbnail((306,396)); ims.append((f,im.copy())) out=Image.new('RGB',(306*3,420*6),'white'); d=ImageDraw.Draw(out) for x,(f,im) in enumerate(ims): i=x%3;j=x//3;out.paste(im,(i*306,j*420+20));d.text((i*306+5,j*420+2),os.path.basename(f),fill='red') out.save('/tmp/workspace/gpat_contact.jpg') PY
python - <<'PY' import importlib.util for x in ['pytesseract','cv2','easyocr','keras_ocr']: print(x, importlib.util.find_spec(x)) PY which tesseract || true python - <<'PY' from PIL import Image im=Image.open('/tmp/workspace/gpat_imgs/p01_0.jpg');print(im.size,im.mode) PY
python -m http.server 8765 --directory "/tmp/workspace" >/tmp/workspace/http.log 2>&1 &
python - <<'PY' from PIL import Image import glob,os out='/tmp/workspace/gpat_crops';os.makedirs(out,exist_ok=True) for f in glob.glob('/tmp/workspace/gpat_imgs/*'): im=Image.open(f) # page likely 100 questions split 3 question panels? produce upper/lower w,h=im.size b=os.path.basename(f).split('.')[0] for j in range(3): im.crop((0,j*h//3,w,(j+1)*h//3)).save(f'{out}/{b}_{j+1}.jpg',quality=95) PY python - <<'PY' import pkg_resources mods=['paddleocr','transformers','torch','keras','onnxruntime','rapidocr','doctr','surya','ocrmac'] for x in mods: try: print(x, __import__(x)) except: print(x,'no') PY
which convert || true; which magick || true; which gs || true; which pdftoppm || true; which ocrad || true; which gocr || true; which python; python - <<'PY' from PIL import Image im=Image.open('/tmp/workspace/gpat_imgs/p01_0.jpg') print(im.getextrema()) PY
pip install -q rapidocr_onnxruntime && python - <<'PY' from rapidocr_onnxruntime import RapidOCR from PIL import Image engine=RapidOCR() result,elapse=engine('/tmp/workspace/gpat_imgs/p01_0.jpg') print('elapsed',elapse,'n',len(result) if result else result) for x in result or []:print(x[1],x[2]) PY
cat > /tmp/workspace/ocr_gpat.py <<'PY' from rapidocr_onnxruntime import RapidOCR import glob,os engine=RapidOCR() out=[] for f in sorted(glob.glob('/tmp/workspace/gpat_imgs/*.jpg')): r,e=engine(f) out.append('\n\n===== '+os.path.basename(f)+' =====\n') for x in r or []:out.append(x[1]) open('/tmp/workspace/gpat_ocr.txt','w').write('\n'.join(out)) PY python /tmp/workspace/ocr_gpat.py
"Q." in ~/gpat_ocr.txt
python - <<'PY' lines=open('/tmp/workspace/gpat_ocr.txt').read().splitlines() for i,x in enumerate(lines): if 'QuestionID:' in x: print('\n---',x,'---') print('\n'.join(lines[max(0,i-16):i+5])) PY
cat > /tmp/workspace/parse.py <<'PY' import re s=open('/tmp/workspace/gpat_ocr.txt').read() # segment occurrences IDs; parse first status etc following pat=re.compile(r'Question\s*ID\s*[::]\s*(\d+)(.*?)(?=Question\s*ID\s*[::]|\Z)',re.S|re.I) d={} for m in pat.finditer(s): id, tail=m.group(1),m.group(2)[:180] status=re.search(r'Status\s*:\s*([A-Za-z ]+)',tail,re.I) choice=re.search(r'Chosen Option\s*:\s*([^\n]+)',tail,re.I) mark=re.search(r'Marks\s*:\s*(-?\d+)',tail,re.I) if mark: rec=(status.group(1).strip() if status else '',choice.group(1).strip() if choice else '',int(mark.group(1)),m.start()) # prefer status records and later as correction d[id]=rec print('n',len(d),'score',sum(x[2] for x in d.values())) from collections import Counter print(Counter(x[2] for x in d.values()),Counter(x[0] for x in d.values())) for id,(st,ch,ma,pos) in d.items(): if ma<=0: before=s[max(0,pos-1200):pos] q=re.findall(r'Q\.\s*(\d+).*?(?=\nAns\n|\nQuestion)',before,re.S) print(id,'Q',q[-1] if q else '?',st,ch,ma, re.sub(r'\s+',' ',before[-350:])) PY python /tmp/workspace/parse.py
Create a subject-wise accuracy and weakness report