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. CLIC:\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 |