/ Модель

Характеристики

Контекст
131 072 токена
Лицензия
Apache 2.0
Архитектура
qwen2_5_vl · dense
Базовая модель
Qwen2.5-VL-3B-Instruct
Библиотека
transformers
Опубликована
9 апр 2026

medical-prescription-ocr-india

Изображение и текст → текст4 профессии

Мультимодальная модель извлекает структурированные сведения из изображений индийских медицинских рецептов на английском и хинди.

238скачиваний за 30 дней1лайквеса обновлены12 апр 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Изображение → текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Kushagra Wadhwa дообучил Qwen2.5-VL-3B-Instruct для извлечения структурированных данных из рукописных и печатных индийских медицинских рецептов. Модель принимает изображение рецепта и формирует JSON с данными врача и пациента, лекарствами, дозировками, частотой и длительностью приёма, диагнозом и примечаниями.

Это мультимодальный трансформер Qwen2.5-VL с 3 млрд параметров, дообученный методом QLoRA; в обучении использовался набор из 1 969 примеров, а для валидации — 246. Модель рассчитана на рецепты на английском и хинди, включая смешанный текст. Репозиторий распространяется по лицензии Apache 2.0.

Модель предназначена для оцифровки рецептов и переноса данных в аптечные и медицинские системы. Качество зависит от разборчивости почерка, языкового состава и количества лекарств; названия препаратов могут распознаваться неверно, особенно в сложных рукописных записях. Результаты следует проверять специалисту; модель не предназначена для постановки диагноза, клинических решений или работы с рецептами из других регионов.

Сценарии применения

  • оцифровка рукописных индийских рецептов
  • извлечение лекарств и дозировок из рецептов
  • перенос данных рецепта в электронную медицинскую карту
  • автоматизация ввода рецептов в аптеке
  • структурирование данных для медицинского аудита

Ограничения

Точность снижается при неразборчивом почерке и смешанном тексте на хинди и английском; названия лекарств могут транскрибироваться неверно. Перед использованием данных рецепта необходима проверка медицинским специалистом; модель не предназначена для диагностики или клинических решений.

Для каких профессий подходит4

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Medical Prescription OCR — Qwen2.5-VL-3B Fine-tuned

Model Details

Model Description

A vision-language model fine-tuned to extract structured information from handwritten and printed Indian medical prescriptions. Given a prescription image, it returns a JSON object containing doctor details, patient details, medications (with dosage, frequency, duration), diagnosis, and notes.

  • Developed by: Kushagra Wadhwa
  • Model type: Vision-Language Model (VLM) — Image-Text to JSON
  • Language(s): English, Hindi (mixed-language Indian prescriptions)
  • License: Apache 2.0
  • Finetuned from model: Qwen/Qwen2.5-VL-3B-Instruct

Model Sources


Uses

Direct Use

Extract structured data from medical prescription images in healthcare applications, EMR (Electronic Medical Record) systems, or patient monitoring dashboards. Input a prescription image, receive a structured JSON output.

Downstream Use

  • Automated pharmacy data entry
  • AI-powered patient monitoring systems
  • Hospital EMR digitisation pipelines
  • Medical audit and compliance tooling

Out-of-Scope Use

  • Diagnosing patients or making clinical decisions — this model reads and structures text, it does not provide medical advice
  • Prescriptions from non-Indian contexts (the training data is India-specific; handwriting styles and drug naming conventions may differ)
  • Real-time critical care decisions

Bias, Risks, and Limitations

  • Trained primarily on Indian prescription formats; performance may degrade on prescriptions from other regions
  • Handwriting quality significantly affects accuracy — illegible prescriptions will produce empty or incomplete fields
  • Drug names may be partially or incorrectly transcribed for unusual handwriting; always verify medication details before clinical use
  • Hindi/mixed-language prescriptions may have lower accuracy than purely English ones
  • Not a substitute for a qualified pharmacist or clinician review

Recommendations

Always have a qualified healthcare professional verify the model's output before acting on it. Do not use this model as the sole source of truth for medication dispensing or clinical workflows.


How to Get Started with the Model

from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
from PIL import Image
import torch

model_id = "KushagraWadhwa/medical-prescription-ocr-india"

model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype=torch.bfloat16,
)
processor = AutoProcessor.from_pretrained(model_id)

SYSTEM_PROMPT = """You are a medical prescription OCR assistant.
Extract all information from the prescription image and return it as JSON.
Return ONLY valid JSON, no explanation text.
Use this exact schema:
{"doctor_name": "", "clinic_name": "", "patient_name": "", "patient_age": "",
 "date": "", "medications": [{"drug_name": "", "dosage": "", "frequency": "",
 "duration": "", "instructions": ""}], "diagnosis": "", "notes": ""}
If a field is not visible, use empty string."""

image = Image.open("prescription.jpg").convert("RGB")

messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": [
        {"type": "image", "image": image},
        {"type": "text",  "text": "Extract all prescription information from this image and return as JSON."}
    ]}
]

text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = processor(text=[text], images=[image], return_tensors="pt").to("cuda")

with torch.no_grad():
    outputs = model.generate(**inputs, max_new_tokens=512, do_sample=False)

generated = outputs[0][inputs["input_ids"].shape[1]:]
print(processor.decode(generated, skip_special_tokens=True))

Example output:

{
  "doctor_name": "Dr. R. K. Sharma",
  "clinic_name": "Sharma Clinic",
  "patient_name": "Suresh Patel",
  "patient_age": "52",
  "date": "12/03/24",
  "medications": [
    {
      "drug_name": "Tab. Metformin 500mg",
      "dosage": "500mg",
      "frequency": "1-0-1",
      "duration": "30 days",
      "instructions": "After food"
    },
    {
      "drug_name": "Tab. Amlodipine 5mg",
      "dosage": "5mg",
      "frequency": "OD",
      "duration": "30 days",
      "instructions": "Morning"
    }
  ],
  "diagnosis": "T2DM, HTN",
  "notes": "Review after 1 month. RBS fasting."
}

Training Details

Training Data

  • Dataset: naazimsnh02/medocr-vision-dataset
  • Split: 1,969 training samples / 246 validation samples
  • Content: Scanned and photographed Indian medical prescriptions (handwritten and printed), labelled with structured JSON ground truth

Preprocessing

  • Images converted to RGB
  • Labels parsed from <s_ocr> tag format into structured JSON with fields: doctor_name, clinic_name, patient_name, patient_age, date, medications, diagnosis, notes
  • Medications parsed into per-drug entries: drug_name, dosage, frequency, duration, instructions
  • Sequences truncated to max length 512 tokens

Training Hyperparameters

ParameterValue
Training regimebf16 mixed precision
Epochs3
Per-device train batch size1
Gradient accumulation steps8 (effective batch size: 8)
Learning rate2e-4
LR schedulerCosine
Warmup ratio0.05
Max sequence length512
OptimizerAdamW
LoRA rank (r)16
LoRA alpha32
LoRA dropout0.05
LoRA target modulesq_proj, v_proj, k_proj, o_proj, gate_proj, up_proj, down_proj
Quantization4-bit NF4 (bitsandbytes) with double quantization

Speeds, Sizes, Times

  • Hardware: NVIDIA Tesla T4 × 2
  • Cloud Provider: Kaggle (Google Cloud)
  • Training time: ~3 hours (3 epochs, 1,969 samples)

Evaluation

Testing Data

246 samples from the validation split of naazimsnh02/medocr-vision-dataset.

Factors

Performance varies by:

  • Handwriting legibility (printed > clear handwritten > cursive/illegible)
  • Language mix (English-only > mixed Hindi-English)
  • Number of medications on the prescription

Metrics

  • Primary: Evaluation loss (used for best checkpoint selection)
  • Qualitative: JSON field accuracy on held-out prescription samples

Results

The model accurately extracts structured fields from both handwritten and printed Indian prescriptions. Fields like doctor_name, clinic_name, and date are extracted reliably. Medication list accuracy depends on handwriting legibility. Hindi/mixed-language content is supported but may have lower accuracy than English-only prescriptions.


Environmental Impact

Carbon emissions can be estimated using the Machine Learning Impact calculator presented in Lacoste et al. (2019).

  • Hardware Type: NVIDIA Tesla T4 × 2
  • Hours used: ~3
  • Cloud Provider: Google (Kaggle)
  • Compute Region: US (Kaggle default)

Technical Specifications

Model Architecture and Objective

  • Base: Qwen2.5-VL-3B-Instruct — 3B parameter multimodal vision-language transformer
  • Fine-tuning method: QLoRA (Quantized Low-Rank Adaptation) via PEFT
  • Quantization: 4-bit NF4 base weights; LoRA adapters trained in bfloat16
  • Objective: Causal language modelling on image+text → structured JSON sequences

Software

  • transformers
  • peft
  • trl (SFTTrainer / SFTConfig)
  • bitsandbytes
  • accelerate
  • datasets
  • torch (cu124)

Model Card Authors

Kushagra Wadhwa

Model Card Contact

https://github.com/KushagraaWadhwa

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
Qwen2_5_VLForConditionalGeneration
Ревизия весов
7d894f8

0 моделей