Files
neo 76c4c5b4fe design-systems: add 74 brand DESIGN.md files (VoltAgent/awesome-design-md)
- 74 brands: airbnb, stripe, apple, figma, linear, vercel, etc.
- 147 files: DESIGN.md + README.md per brand (~2.1 MB)
- Each DESIGN.md contains structured brand analysis (colors, typography, components)
- Updated 00-overview.md with new design-systems directory
2026-06-21 20:40:35 +05:00

5.0 KiB
Raw Permalink Blame History

title, created, updated, type, tags, confidence
title created updated type tags confidence
dots.mocr — Multimodal OCR 2026-06-15 2026-06-15 concept
ocr
inference
local-llm
pdf
parsing
high

dots.mocr — Multimodal OCR

dots.mocr — мультимодальная OCR-модель от xiaohongshu (小红书, rednote-hilab), 3B параметров на базе Qwen3-VL-4B. Распознаёт текст на русском, английском, китайском и других языках. Парсит PDF и изображения в структурированные данные (JSON + Markdown + визуализация).

Сетап

Директория: /home/nik/workspace/dots.mocr/

Окружение: Python 3.12 (через uv), .venv/

Зависимости: PyTorch 2.7+ cu128, vLLM 0.23, transformers 4.57, PyMuPDF, flash-attn

GPU: RTX 3080 Ti (12GB) — выделена под dots.mocr
CUDA_VISIBLE_DEVICES=1 (через враппер run_vllm_gpu1.py)
Порт: 8000
max_model_len: 16384 (ограничение VRAM)

Запуск

1. Сервер vLLM

cd ~/workspace/dots.mocr
source .venv/bin/activate
python run_vllm_gpu1.py

Грузится ~50 сек, после этого отвечает на порту 8000.

2. Парсинг PDF/изображения

# Базовый запуск
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. Склейка всех страниц и очистка

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