dispersi0no/CHAT-VLM-LLM

Educational research project: VLM/LLM models for document OCR and text recognition. Features dots.ocr, Qwen3-VL-2B for document field extraction and interactive chat with modern Streamlit UI

1

stars

70

commits

Python

primary language

Mar 10, 2026

updated

README

🤖 CHAT-VLM-LLM

Vision-Language Models & Document OCR Toolkit

Python PyTorch Docker License CI

Комплексный инструментарий для OCR документов и мультимодальных AI-приложений


🚀 Быстрый старт📦 Модели🐳 Docker📊 GPU


✨ Возможности

🎯 Основные

  • 🌐 Мультиязычный OCR — 32+ языка
  • 🤖 Визуальный агент — GUI автоматизация
  • 📄 Анализ документов — таблицы, структура
  • 🎬 Понимание видео — контекст 256K

⚡ Производительность

  • 🚀 Flash Attention 2 — быстрый инференс
  • 📦 Квантизация — FP16, INT8, INT4
  • 🐳 Docker — GPU контейнеры
  • 🟢 Blackwell — NVIDIA оптимизация

📦 Поддерживаемые модели

✅ Рабочие

МодельОписаниеСтатус
Qwen3-VL 2BOCR на 32 языках, визуальный агент, контекст 256K (включая Emergency Mode)🟢 Основная
dots.ocrSOTA парсер документов, 100+ языков🟢 Работает

⚠️ Экспериментальные (не работают)

МодельПроблемаСтатус
Phi-3 VisionMicrosoft, есть только в vLLM, не функционирует🔴 Не работает
DeepSeek OCRИнтеграция не завершена🔴 Не работает
GOT-OCR 2.0Требует доработки🔴 Не работает
Qwen2-VLНестабильная, не доработана🟡 Нестабильна

🏗️ Архитектура моделей

Все модели наследуют от BaseModel (ABC):

BaseModel (abstract)
├── _get_device()          # Auto-detect CUDA/MPS/CPU
├── _get_load_kwargs()     # dtype + device_map
├── extract_fields()       # JSON field extraction
├── run()                  # Unified inference entry point
├── unload()               # GPU memory cleanup
├── load() *abstract*
└── inference() *abstract*
    ┃
    ├── Qwen3VLModel       # Qwen3-VL 2B
    ├── DotsOCRModel       # dots.ocr
    ├── QwenVLModel        # Qwen2-VL
    └── GOTOCRModel        # GOT-OCR 2.0

🚀 Быстрый старт

Установка

# Клонирование
git clone https://github.com/dispersi0no/CHAT-VLM-LLM.git
cd CHAT-VLM-LLM

# Зависимости
pip install -r requirements.txt

Конфигурация

cp .env.example .env
# Отредактируйте .env под свои нужды

🐳 Docker

# 📦 Стандартная сборка
docker build -t chat-vlm-llm .

# 💨 Облегчённая версия
docker build -f Dockerfile.light -t chat-vlm-llm-light .

# ▶️ Запуск
docker-compose up -d

🧪 Разработка

Тестирование

pytest tests/ -v

Линтинг

black . && isort .

CI

При каждом push/PR автоматически запускаются:

  • ✅ black (форматирование)
  • ✅ isort (сортировка импортов)
  • ✅ pytest на Python 3.10, 3.11, 3.12

📊 Требования к GPU

GPUVRAMРекомендацияСтатус
RTX 509032GBQwen3-VL 2B @ FP16🟢 Идеально
RTX 508016GBQwen3-VL 2B @ FP16🟢 Отлично
RTX 409024GBQwen3-VL 2B @ FP16🟢 Отлично
RTX 408016GBQwen3-VL 2B @ INT8🟡 Хорошо
RTX 309024GBQwen3-VL 2B @ FP16🟡 Хорошо

📁 Структура проекта

📂 CHAT-VLM-LLM/
├── 📂 models/
│   ├── ⬜ __init__.py
│   ├── ⬜ base_model.py           # Abstract base — device, unload, extract_fields
│   ├── 🟢 qwen3_vl.py            # Qwen3-VL 2B (основная)
│   ├── 🟢 dots_ocr.py            # dots.ocr parser
│   ├── 🟡 qwen_vl.py             # Qwen2-VL (нестабильна)
│   ├── 🔴 got_ocr.py             # GOT-OCR 2.0 (не работает)
│   ├── ⬜ model_loader.py        # Фабрика загрузки моделей
│   └── 📂 experimental/          # Экспериментальные модели
├── 📂 utils/                      # Утилиты обработки
├── 📂 ui/                         # Streamlit UI компоненты
│   ├── 📂 pages/                  # Страницы (home, chat, ocr, docs)
│   ├── sidebar.py                 # Боковая панель
│   ├── components.py              # Переиспользуемые компоненты
│   ├── message_renderer.py        # Рендер сообщений чата
│   ├── bbox_display.py            # Отображение bounding boxes
│   └── styles.py                  # CSS стили
├── 📂 tests/                      # Pytest тесты
├── 📂 docs/                       # Документация
├── 📂 .github/workflows/          # CI/CD (black, isort, pytest)
├── 🐳 Dockerfile                  # Docker образ
├── 💨 Dockerfile.light            # Light версия
├── ⚙️ config.yaml                 # Конфигурация моделей
├── 🚀 app.py                      # Streamlit приложение
├── 🔌 api.py                      # FastAPI REST API
├── 📄 requirements.txt            # Зависимости
└── 📄 LICENSE                     # MIT

🤝 Участие в разработке

Приветствуем вклад в проект! Смотрите CONTRIBUTING.md.


📚 Ссылки


📄 Лицензия

Этот проект распространяется под лицензией MIT


CI

Contributors

Copilot

38 commits

OlegKarenkikh

21 commits

dispersi0no

10 commits

dispersi0no/CHAT-VLM-LLM

Educational research project: VLM/LLM models for document OCR and text recognition. Features dots.ocr, Qwen3-VL-2B for document field extraction and interactive chat with modern Streamlit UI

1

stars

70

commits

Python

primary language

Mar 10, 2026

updated

README

🤖 CHAT-VLM-LLM

Vision-Language Models & Document OCR Toolkit

Python PyTorch Docker License CI

Комплексный инструментарий для OCR документов и мультимодальных AI-приложений


🚀 Быстрый старт📦 Модели🐳 Docker📊 GPU


✨ Возможности

🎯 Основные

  • 🌐 Мультиязычный OCR — 32+ языка
  • 🤖 Визуальный агент — GUI автоматизация
  • 📄 Анализ документов — таблицы, структура
  • 🎬 Понимание видео — контекст 256K

⚡ Производительность

  • 🚀 Flash Attention 2 — быстрый инференс
  • 📦 Квантизация — FP16, INT8, INT4
  • 🐳 Docker — GPU контейнеры
  • 🟢 Blackwell — NVIDIA оптимизация

📦 Поддерживаемые модели

✅ Рабочие

МодельОписаниеСтатус
Qwen3-VL 2BOCR на 32 языках, визуальный агент, контекст 256K (включая Emergency Mode)🟢 Основная
dots.ocrSOTA парсер документов, 100+ языков🟢 Работает

⚠️ Экспериментальные (не работают)

МодельПроблемаСтатус
Phi-3 VisionMicrosoft, есть только в vLLM, не функционирует🔴 Не работает
DeepSeek OCRИнтеграция не завершена🔴 Не работает
GOT-OCR 2.0Требует доработки🔴 Не работает
Qwen2-VLНестабильная, не доработана🟡 Нестабильна

🏗️ Архитектура моделей

Все модели наследуют от BaseModel (ABC):

BaseModel (abstract)
├── _get_device()          # Auto-detect CUDA/MPS/CPU
├── _get_load_kwargs()     # dtype + device_map
├── extract_fields()       # JSON field extraction
├── run()                  # Unified inference entry point
├── unload()               # GPU memory cleanup
├── load() *abstract*
└── inference() *abstract*
    ┃
    ├── Qwen3VLModel       # Qwen3-VL 2B
    ├── DotsOCRModel       # dots.ocr
    ├── QwenVLModel        # Qwen2-VL
    └── GOTOCRModel        # GOT-OCR 2.0

🚀 Быстрый старт

Установка

# Клонирование
git clone https://github.com/dispersi0no/CHAT-VLM-LLM.git
cd CHAT-VLM-LLM

# Зависимости
pip install -r requirements.txt

Конфигурация

cp .env.example .env
# Отредактируйте .env под свои нужды

🐳 Docker

# 📦 Стандартная сборка
docker build -t chat-vlm-llm .

# 💨 Облегчённая версия
docker build -f Dockerfile.light -t chat-vlm-llm-light .

# ▶️ Запуск
docker-compose up -d

🧪 Разработка

Тестирование

pytest tests/ -v

Линтинг

black . && isort .

CI

При каждом push/PR автоматически запускаются:

  • ✅ black (форматирование)
  • ✅ isort (сортировка импортов)
  • ✅ pytest на Python 3.10, 3.11, 3.12

📊 Требования к GPU

GPUVRAMРекомендацияСтатус
RTX 509032GBQwen3-VL 2B @ FP16🟢 Идеально
RTX 508016GBQwen3-VL 2B @ FP16🟢 Отлично
RTX 409024GBQwen3-VL 2B @ FP16🟢 Отлично
RTX 408016GBQwen3-VL 2B @ INT8🟡 Хорошо
RTX 309024GBQwen3-VL 2B @ FP16🟡 Хорошо

📁 Структура проекта

📂 CHAT-VLM-LLM/
├── 📂 models/
│   ├── ⬜ __init__.py
│   ├── ⬜ base_model.py           # Abstract base — device, unload, extract_fields
│   ├── 🟢 qwen3_vl.py            # Qwen3-VL 2B (основная)
│   ├── 🟢 dots_ocr.py            # dots.ocr parser
│   ├── 🟡 qwen_vl.py             # Qwen2-VL (нестабильна)
│   ├── 🔴 got_ocr.py             # GOT-OCR 2.0 (не работает)
│   ├── ⬜ model_loader.py        # Фабрика загрузки моделей
│   └── 📂 experimental/          # Экспериментальные модели
├── 📂 utils/                      # Утилиты обработки
├── 📂 ui/                         # Streamlit UI компоненты
│   ├── 📂 pages/                  # Страницы (home, chat, ocr, docs)
│   ├── sidebar.py                 # Боковая панель
│   ├── components.py              # Переиспользуемые компоненты
│   ├── message_renderer.py        # Рендер сообщений чата
│   ├── bbox_display.py            # Отображение bounding boxes
│   └── styles.py                  # CSS стили
├── 📂 tests/                      # Pytest тесты
├── 📂 docs/                       # Документация
├── 📂 .github/workflows/          # CI/CD (black, isort, pytest)
├── 🐳 Dockerfile                  # Docker образ
├── 💨 Dockerfile.light            # Light версия
├── ⚙️ config.yaml                 # Конфигурация моделей
├── 🚀 app.py                      # Streamlit приложение
├── 🔌 api.py                      # FastAPI REST API
├── 📄 requirements.txt            # Зависимости
└── 📄 LICENSE                     # MIT

🤝 Участие в разработке

Приветствуем вклад в проект! Смотрите CONTRIBUTING.md.


📚 Ссылки


📄 Лицензия

Этот проект распространяется под лицензией MIT


CI

Contributors

Copilot

38 commits

OlegKarenkikh

21 commits

dispersi0no

10 commits

Languages

Python

96.6%

Jupyter Notebook

2.3%