/ Модель

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

Контекст
128 000 токенов
Параметры
3,1 млрд
Размер весов
8,1 ГБ
Лицензия
Своя лицензия
Архитектура
qwen2_5_vl · dense
Базовая модель
Nanonets-OCR2-3B
Библиотека
transformers
Опубликована
11 мар 2026

Chitrapathak-2

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

Мультиязычная VLM-модель Krutrim AI Labs для распознавания печатного текста на страницах книг, PDF и сканов на индийских языках и английском.

732скачиваний за 30 дней1лайквеса обновлены11 мар 2026

Бенчмарки

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Chitrapathak-2 — мультимодальная OCR-модель от Krutrim AI Labs для распознавания печатного текста в документах на индийских языках и английском. Это дообученная версия Nanonets-OCR2-3B с архитектурой Qwen2.5-VL: визуальный энкодер обрабатывает изображение, а декодер на 3,1 млрд параметров формирует текст. Модель доступна через Transformers и vLLM, поддерживает контекст до 128 000 токенов.

Модель предназначена для извлечения текста со страниц книг, PDF и сканов. Она рассчитана на хинди, санскрит, бенгальский, телугу, тамильский, маратхи, каннада, малаялам, одия, панджаби и английский; особенно сильные результаты заявлены для телугу. Модель сохраняет структуру многоколоночных страниц и плотных абзацев, но её назначение ограничено OCR: она возвращает транскрипцию и не предназначена для более широкого анализа документов. Качество может снижаться на рукописном, зашумлённом или низкокачественном изображении, редких письменностях, формах и сложных страницах указателей. Лицензия в метаданных указана как other; конкретные условия следует сверить с карточкой модели.

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

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

Ограничения

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

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

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

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

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

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

Открыть на Hugging Face

arXiv

Overview

Chitrapathak-2 (Chitra: Image; Pathak: Reader) is a VLM-based multilingual Optical Character Recognition (OCR) system designed specifically for the linguistic diversity and document complexity of the Indian ecosystem. Trained for high-fidelity OCR on Indic language book pages, Chitrapathak-2 demonstrates strong generalization across 10 major Indian languages and English. It is the second model in the Chitrapathak OCR series, continuing the effort to build robust OCR systems for Indic scripts and multilingual documents.

Model Summary

PropertyDetails
ArchitectureVision-Encoder + 3B Decoder LLM
LanguagesHindi, Sanskrit, Bengali, Telugu, Tamil, Marathi, Kannada, Malayalam, Odia, Punjabi and English
Use CasesOCR for printed text in multilingual books, pdf documents etc.
FrameworksTRL 0.22.1, Transformers 4.56.0, PyTorch 2.6.0+cu124
Training StrategySupervised Fine-Tuning (SFT), mixed precision (FP16 / bfloat16), multinode training, DeepSpeed ZeRO-2 optimization

Usage

Using transformers

from PIL import Image
from transformers import AutoTokenizer, AutoProcessor, AutoModelForImageTextToText

model_path = "krutrim-ai-labs/Chitrapathak-2"

model = AutoModelForImageTextToText.from_pretrained(
    model_path, 
    torch_dtype="auto", 
    device_map="auto", 
    attn_implementation="flash_attention_2"
)
model.eval()

tokenizer = AutoTokenizer.from_pretrained(model_path)
processor = AutoProcessor.from_pretrained(model_path)


def perform_ocr(image_path, model, processor, max_new_tokens=4096):
    image = Image.open(image_path)
    messages = [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": [
            {"type": "image", "image": f"file://{image_path}"},
            {"type": "text", "text": "Perform OCR on this image and transcribe all visible text exactly as it appears."},
        ]},
    ]
    text = processor.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
    inputs = processor(text=[text], images=[image], padding=True, return_tensors="pt")
    inputs = inputs.to(model.device)
    
    output_ids = model.generate(**inputs, max_new_tokens=max_new_tokens, do_sample=False)
    generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(inputs.input_ids, output_ids)]
    
    output_text = processor.batch_decode(generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True)
    return output_text[0]

image_path = "/path/to/your/document.jpg"
result = perform_ocr(image_path, model, processor, max_new_tokens=15000)
print(result)

Using vLLM

  1. Start the vLLM server.
vllm serve krutrim-ai-labs/Chitrapathak-2
  1. Predict with the model
from openai import OpenAI
import base64

client = OpenAI(api_key="123", base_url="http://localhost:8000/v1")

model = "krutrim-ai-labs/Chitrapathak-2"

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

def perform_ocr(img_base64):
    response = client.chat.completions.create(
        model=model,
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "image_url",
                        "image_url": {"url": f"data:image/png;base64,{img_base64}"},
                    },
                    {
                        "type": "text",
                        "text": "Perform OCR on this image and transcribe all visible text exactly as it appears.",
                    },
                ],
            }
        ],
        temperature=0.0,
        max_tokens=15000
    )
    return response.choices[0].message.content

test_img_path = "/path/to/your/document.jpg"
img_base64 = encode_image(test_img_path)
print(perform_ocr(img_base64))

Evaluation Results

Indic OCR Performance

ModelBn Word ↓Bn Char ↓Hi Word ↓Hi Char ↓Kn Word ↓Kn Char ↓Ml Word ↓Ml Char ↓Mr Word ↓Mr Char ↓Or Word ↓Or Char ↓Pa Word ↓Pa Char ↓Ta Word ↓Ta Char ↓Te Word ↓Te Char ↓
Maya99.4295.7799.794.91--------------
PALO96.391.1599.2691.98--------------
Pangea94.6680.3399.5391.5----------99.4484.1399.9589.91
Chitrarth-196.1684.6598.5689.8199.5885.2999.6294.7799.6686.5899.9993.2199.1690.1799.189.9499.8689.02
LLaMA-4 maverick31.5213.2125.7311.9136.911.1775.545.7520.948.0597.5186.7829.7712.6831.3610.7957.0718.72
Gemma-3 27B42.1524.4146.4729.584.2254.2492.0672.6450.431.0692.6770.7270.8842.6539.5216.5186.7654.14
GPT-4o55.5132.6854.6235.5494.3369.7994.6778.4763.4437.9394.6173.4668.8840.7174.3543.3995.9770.08
Nanonets-OCR2-3B28.5612.4232.2616.7899.3893.0797.2489.8140.9715.9299.8297.1198.7082.8495.2578.8399.4289.39
Chitrapathak-117.147.0325.5513.7426.248.7871.9748.1915.686.0950.7231.6217.77.8719.255.8138.7911
Chitrapathak-214.515.4719.878.3618.84.8164.4734.79.822.2744.7421.8315.247.0617.665.6831.816.69
Gemini-2.5 Flash11.34.0416.015.8817.184.3859.6430.68.061.7941.718.614.564.9815.263.0133.327.16
  • The above table shows the performance comparison of models on the IndicVisionBench-OCR benchmark.
  • The metrics used above are word-level ANLS and character-level ANLS.
  • The best value in each column is in bold and the second best is underlined.
  • Chitrapathak-2 delivers SOTA OCR accuracy in Telugu and is remarkably close to Gemini-2.5 in other Indic languages, with an average difference of only 2.21 (word) and 1.83 (char) across the nine Indic languages, and a maximum gap of just 4.83 (word) and 4.10 (char).

English OCR Performance

  • The above table shows the performance comparison of models on Synthdog and SROIE benchmarks.
  • The metrics for Synthdog are ANLS-word and ANLS-char. In these metrics, lower is better.
  • The metric for SROIE is %Match, indicating the percentage of fields that matched exactly with the ground truth. Here, higher is better.
  • As we see, Chitrapathak-2 retains much of the English OCR capabilities of its base model Nanonets-OCR2-3B.

We also evaluated the model on the Old books OCR dataset, which consists of scanned book pages in English.

ModelANLS-wordANLS-char
Nanonets4.332.96
Chitrapathak-24.491.89
Gemini-2.54.361.86

Token Efficiency and Latency Breakdown of Chitrapathak-2

Metricbnhiknmlmrorpatateen
Tokens / Word5.94.811.212.66.511.76.99.413.21.4
Tokens (200 words)1174.8951.42242.22514.01292.42334.21387.21873.62646.6280.0
Latency (200 words)4.9s4.0s9.2s10.3s5.3s9.5s5.7s7.7s10.8s1.3s

Note that the above latency values are calculated assuming the size of the input image to be ~1024x1024.

Observations

  • TTFT (Time-to-First-Token): ~125 ms
  • Inter-token latency: ~4 ms per token
  • Language impact: Latency varies with tokenization efficiency.
    • English and Hindi → Lower latency due to compact token-to-word ratios.
    • Telugu and Malayalam → Higher latency due to fragmented tokenization (larger number of tokens per word).

Example OCR Outputs


Highlights

  • Supports 9 major Indic languages + English
  • Optimized for printed book pages, PDF documents, and scanned text
  • Strong layout robustness — handles multi-column, multi-font, and dense paragraphs with ease
  • Second-best overall model on IndicVisionBench-OCR, ranking just behind Gemini-2.5, and the best-performing model for Telugu
  • Compatible with vLLM and Hugging Face inference pipelines
  • Multilingual generalization across diverse font styles, layouts, and page qualities

Limitations

  • The model is only capable of OCR and is not meant for a document intelligence use-case.
  • Given an image, the model only returns the OCR transcription in its default output format.
  • Performance may drop on handwritten, noisy, or low-resolution images.
  • Some degradation may be observed for rare Indic/English scripts or non-book domains (e.g. forms).
  • Performance degradation is observed on Index-page layouts and other complicated page layouts.

License

This model is distributed under the Krutrim Community License Agreement v1.0.
Ensure compliance before any commercial or redistributed usage.

Update: This model is released only for research purposes since the underlying Qwen-2.5-VL model has changed from Apache to a more restrictive license.

Citation

If you use Chitrapathak-2 in your research, please cite:

@misc{faraz2026indicocr,
      title={Designing Production-Scale OCR for India: Multilingual and Domain-Specific Systems}, 
      author={Ali Faraz and Raja Kolla and Ashish Kulkarni and Shubham Agarwal},
      year={2026},
      eprint={2602.16430},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      url={https://arxiv.org/abs/2602.16430}, 
}

Acknowledgements

Chitrapathak-2 builds upon the foundations of the following projects and open-source efforts:

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

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

GPU в ailist

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

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

Подбираем GPU…

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

0 моделей