Initial commit: 79+ design patterns, LLM prompts, and assets

This commit is contained in:
Neo committed 2026-06-20 17:06:07 +05:00
commit 2b42a76d6d
112 files changed
+13652

No files matched your search

+108
View File
@@ -0,0 +1,108 @@
---
title: dots.mocr — Multimodal OCR
created: 2026-06-15
updated: 2026-06-15
type: concept
tags: [ocr, inference, local-llm, pdf, parsing]
confidence: high
---
# dots.mocr — Multimodal OCR
**dots.mocr** — мультимодальная OCR-модель от [[xiaohongshu]] (小红书, rednote-hilab), 3B параметров на базе Qwen3-VL-4B. Распознаёт текст на русском, английском, китайском и других языках. Парсит PDF и изображения в структурированные данные (JSON + Markdown + визуализация).
- Репозиторий: https://github.com/rednote-hilab/dots.mocr
- Модель: https://huggingface.co/rednote-hilab/dots.mocr
- arXiv: https://arxiv.org/abs/2603.13032
## Сетап
**Директория:** `/home/nik/workspace/dots.mocr/`
**Окружение:** Python 3.12 (через `uv`), `.venv/`
**Зависимости:** PyTorch 2.7+ cu128, vLLM 0.23, transformers 4.57, PyMuPDF, flash-attn
```yaml
GPU: RTX 3080 Ti (12GB) — выделена под dots.mocr
CUDA_VISIBLE_DEVICES=1 (через враппер run_vllm_gpu1.py)
Порт: 8000
max_model_len: 16384 (ограничение VRAM)
```
## Запуск
### 1. Сервер vLLM
```bash
cd ~/workspace/dots.mocr
source .venv/bin/activate
python run_vllm_gpu1.py
```
Грузится ~50 сек, после этого отвечает на порту 8000.
### 2. Парсинг PDF/изображения
```bash
# Базовый запуск
python3 dots_mocr/parser.py file.pdf --port 8000 --model_name model \
--num_thread 8 --max_completion_tokens 12000
# Только текст (чистый md, без layout-разметки и base64-картинок) — быстрее
python3 dots_mocr/parser.py file.pdf --port 8000 --model_name model \
--num_thread 8 --max_completion_tokens 12000 --prompt prompt_ocr
# Или через скрипт-помощник
./parse.sh file.pdf --output ./results --prompt prompt_ocr
```
### 3. Получение результатов
```
results/ИмяФайла/
├── ИмяФайла_page_0.md # Markdown страницы
├── ИмяФайла_page_0.jpg # Визуализация с bbox
├── ИмяФайла_page_0.json # Layout JSON (если не prompt_ocr)
└── ИмяФайла_page_1.md
```
### 4. Склейка всех страниц и очистка
```bash
cd results/Папка
cat *_page_*.md > Итог.md
# Удалить base64-изображения (актуально для prompt_layout_all_en)
sed -e 's/!\[.*\](data:image[^)]*)//g' -e '/^[[:space:]]*$/d' Итог.md > Итог_clean.md
```
## Режимы (промпты)
| Промпт | Описание | Скорость |
|---|---|---|
| `prompt_layout_all_en` | Layout + текст + таблицы HTML + формулы LaTeX | ~20-30 с/стр |
| `prompt_ocr` | **Только текст** (без layout-разметки) | **~2-5 с/стр** ✅ |
| `prompt_layout_only_en` | Только детекция блоков (без текста) | быстро |
| `prompt_grounding_ocr` | OCR в заданном bbox | среднее |
| `prompt_web_parsing` | Парсинг веб-страниц | среднее |
| `prompt_scene_spotting` | Поиск текста на сцене | среднее |
| `prompt_image_to_svg` | Конвертация графики в SVG | среднее |
| `prompt_general` | Free-form QA (с --custom_prompt) | среднее |
## Особенности
- **prompt_ocr** работает в **10 раз быстрее** full layout и выдаёт чистый Markdown без base64-вставок для картинок. Рекомендуется для анализа текстовых документов.
- Для сложных PDF с таблицами, формулами и многостраничной вёрсткой — `prompt_layout_all_en` даёт полную картину (HTML таблицы, LaTeX формулы).
- Большие "Picture" элементы (декоративные блоки, фоны) могут содержать текст — `prompt_ocr` вытаскивает и его.
- `max_model_len=16384` — ограничение из-за 12GB VRAM. Для одного PDF-листа хватает.
## Проблемы
- vLLM v0.23 использует V1 engine с multiprocessing spawn, который сбрасывает `CUDA_VISIBLE_DEVICES`. Решение: враппер `run_vllm_gpu1.py` с `os.environ` + `if __name__ == "__main__"`.
- При `--gpu-memory-utilization > 0.9` может не хватить памяти для KV-кэша — падает на инициализации.
- **Порт 8000** — не конфликтует с llama-server (порт 8080).
## Связанное
- [[russian-ocr]] — Tesseract + RapidOCR на CPU (альтернатива без GPU)
- [[local-llm]] — общая инфраструктура локальных LLM