# Doc Tools

> Документы во всех направлениях: чтение (PDF/docx/xlsx/pptx/HTML/msg/CSV → Markdown), OCR сканов (маршрут markitdown / doc-extract / unlimited-ocr) и создание офисных файлов (pandoc → anthropic-skills → python-либы). Триггеры: «преобразуй PDF в текст», «распознай скан», «сделай Word/Excel/PDF», «извлеки таблицу из документа», «оформи отчёт в docx». Вынесено из CLAUDE.md §19/§22/§23.

- Skill: `vibeengineering-llc/doc-tools` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vibeengineering-llc/doc-tools`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vibeengineering-llc/doc-tools/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: VibeEngineering-LLC (https://skillmd.com/u/vibeengineering-llc)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vibeengineering-llc/doc-tools

---


# doc-tools — документы: чтение, OCR, создание

Три правила оператора, действующие во всех контурах. Раньше были §19, §22 и §23 глобального `CLAUDE.md`; перенесены сюда дословно, потому что нужны только при работе с документами, а не в каждой сессии.

## 1. markitdown — дефолт «документ → Markdown» (§19, 2026-06-19)

**Установлено 2026-06-19 по запросу оператора, общий для всех контуров:** MCP-сервер `markitdown` (user-scope в `C:\Users\<you>\.claude.json`, инструмент `convert_to_markdown(uri)` — `http:`/`https:`/`file:`/`data:`) + CLI `C:\Users\<you>\.local\bin\markitdown.exe`. Доступен любой сессии после её старта (`claude mcp list` → `markitdown ✓ Connected`).

**ИМПЕРАТИВ:** когда нужно превратить готовый документ (PDF, docx/pptx/xlsx/xls, изображение с текстом, HTML, Outlook `.msg`, CSV) в Markdown/текст для чтения, цитирования или подачи в контекст — дефолтом через `markitdown`, а не ad-hoc парсером на ходу.

**Карв-аут (markitdown НЕ заменяет специализированное):** OCR-скан rus+eng и legacy `.doc/.ppt/.rtf` → `doc-extract`; семпоиск по личным докам → `docs-rag`; спецификация из чертежей → `drawings-spec`; докум. с формулами/сложными таблицами → `unlimited-ocr` (раздел 3); СОЗДАНИЕ/правка форматированных документов → скиллы `docx`/`xlsx`/`pptx`/`pdf` (раздел 2). Аудио-транскрипция требует ffmpeg (установлен 2026-06-19, ffmpeg 8.1.1 `Gyan.FFmpeg` в User PATH). Новым сессиям всё доступно сразу; уже открытым — после перезапуска Claude Code.

## 2. Документы → Word/Excel/PDF — дефолтный инструментарий (§22, НАВСЕГДА, 2026-06-23)

**ИМПЕРАТИВ:** для генерации/конвертации офисных документов — **многоуровневая схема по сложности**, source-of-truth всегда в `.md` или `.py`-генераторе, бинарные `.docx`/`.xlsx`/`.pdf` — артефакты прогона, регенерируемые одной командой. Никаких бинарных финальных файлов «из ниоткуда» без воспроизводимого исходника рядом.

- **Ур.1 — pandoc** (`.md → .docx/.pdf/.html`, дефолт прозы/отчётов/юр-текстов): `pandoc -f markdown -t docx -o out.docx in.md`. CLI `C:\Users\<you>\AppData\Local\Pandoc\pandoc.exe` (в PATH); шаблон — `--reference-doc=`.
- **Ур.2 — Anthropic-скиллы** `anthropic-skills:{docx,xlsx,pptx,pdf}` — точный layout / merge-таблицы / run-стили / TOC / header-footer / формулы Excel / графики / conditional formatting.
- **Ур.3 — Python-либы:** python-docx, openpyxl/xlsxwriter, WeasyPrint/reportlab, `soffice --convert-to pdf`.

Обратное (документ → md) — НЕ этот инструментарий: `markitdown` (раздел 1), `doc-extract`, `docs-rag`, `drawings-spec`, `unlimited-ocr` (раздел 3). Дисциплина: SSOT `.md`/`.py`; регенерация одной командой; явный путь (§18) к исходнику И артефакту; bulk-шаблоны → Ollama данные → Python пишет; юр-тексты — Claude черновит, НЕ публикует (gate оператора + юрист РФ). Полные таблицы/pandoc-команды: `C:\Users\<you>\.claude\references\office-docs-toolkit.md`.

## 3. OCR-маршрут для всех контуров — carve-out на трудные сканы (§23, НАВСЕГДА, 2026-06-24)

**Зафиксировано оператором 2026-06-24:** «применяй этот проект [Unlimited-OCR] глобально для всех агентов» (позиционирование = карв-аут для трудных сканов, НЕ полный дефолт OCR; `trust_remote_code` = постоянная локальная авторизация). **Расширение 2026-07-03 дословно:** «всегда используй VLM baidu/Unlimited-OCR чтобы не потерять формулы. Запомни».

**ИМПЕРАТИВ (маршрут):** превращая документ в текст/Markdown — НЕ хвататься за VLM-OCR по умолчанию (жжёт GPU, может тихо переврать цифру). Цифровой без формул → `markitdown` (раздел 1). Цифровой ИЛИ скан **с формулами/математикой/сложными таблицами** → `unlimited-ocr` (VLM, ДАЖЕ если текст-слой есть — markitdown формулы теряет/корёжит). Простой скан / нет GPU / батч сотен стр. → `doc-extract` (Tesseract rus+eng). Трудный скан (таблицы/формулы/смесь алфавитов/layout) → `unlimited-ocr` (нужен NVIDIA GPU). Триаж скан/цифра до выбора движка: `classify.py <pdf>` (`C:\Users\<you>\.claude\skills\unlimited-ocr\scripts\classify.py`, без GPU).

**GPU-дисциплина при резидентной LLM (усилено 2026-08-15, перенято у внешнего RAG-проекта).** Правило «не забудь погасить Ollama» — память человека, а не проверка машины. Правильнее: **перед GPU-прогоном печатать фактически активные провайдеры и остаток VRAM**, а не полагаться на то, что всё завелось. Тихий откат на CPU выглядит просто как «медленно» и обнаруживается через часы. Признак отката у VLM-движков: GPU загружен на 30–40 % при одном ядре CPU в 100 % — значит инференс ушёл в однопоточный `transformers` под GIL. Второе правило оттуда же: разовые массовые заливки держать в **отдельном окружении** от повседневного сервиса, чтобы тот не лез в VRAM, и не запускать две индексации одной базы одновременно. Разбор источника: `skills\docs-rag\references\external-rag-opencode-2026-08-15.md`.

**⚠ Anti-hallucination (КРИТИЧНО для метрологии/дозиметрии/физики/финансов):** любой OCR может МОЛЧА перевернуть цифру/индекс изотопа/единицу. Структуру UL-OCR восстанавливает отлично, но **каждое число/изотоп — сверять с исходным изображением** перед подачей в расчётный контур (доказанный пример: UL-OCR выдал `^{225}Ra` вероятно вместо `226Ra`). GPU-нюанс: перед OCR при резидентной Ollama → `ollama stop qwen3-coder:30b` (OOM-риск на 24 ГБ). Полное дерево, trust_remote_code-граница, зоны, окружение: `C:\Users\<you>\.claude\references\ocr-routing.md` + `C:\Users\<you>\.claude\skills\unlimited-ocr\SKILL.md`.

## Куда смотреть дальше

| Задача | Инструмент |
|---|---|
| Документ → Markdown, обычный случай | `markitdown` (MCP или CLI) |
| Скан rus+eng, батч, без GPU | `doc-extract` |
| Формулы, сложные таблицы, смесь алфавитов | `unlimited-ocr` (нужен NVIDIA GPU) |
| Семантический поиск по личным документам | `docs-rag` |
| Спецификация оборудования из чертежей | `drawings-spec` |
| Создать docx/xlsx/pptx/pdf | pandoc → `anthropic-skills:*` → python-либы |
| Вёрстка markdown-документа для чтения | `md-doc` |

