MarkItDown — конвертация файлов в Markdown для LLM✦
MarkItDown — лёгкая Python-утилита от Microsoft (команда AutoGen) для конвертации файлов разных форматов — PDF, Word, Excel, PowerPoint, изображений, аудио, HTML, текстовых форматов (CSV/JSON/XML), ZIP, EPub и даже ссылок на YouTube — в Markdown. По опыту команды это один из самых удобных инструментов для подготовки документов и данных перед загрузкой в LLM.
Установка: pip install 'markitdown[all]'. Базовое использование из CLI —
markitdown file.pdf > out.md, или из Python:
from markitdown import MarkItDown
md = MarkItDown(enable_plugins=False)
print(md.convert("file.docx").text_content)
Зачем Markdown для LLM✦
Опыт команды: модели лучше работают именно с Markdown, поэтому информацию перед подачей в LLM стоит сконвертировать. Это совпадает с позицией авторов проекта: ведущие LLM (например, GPT-4o) «понимают» Markdown нативно, поскольку обучались на больших объёмах такого текста, а сами конструкции Markdown токен-эффективны. При этом сохраняется структура документа — заголовки, списки, таблицы, ссылки.
Два пути конвертации: локальный и облачный✦
У инструмента есть два пути обработки — локальный и облачный. С точки зрения приватности ключевой вопрос — что остаётся на вашей машине, а что уходит в чужое облако.
Что обрабатывается локально (по умолчанию)✦
По умолчанию MarkItDown работает полностью локально. Встроенные конвертеры для PDF (с текстовым слоем), Office-форматов (Word, Excel, PowerPoint), HTML, CSV/JSON/XML, EPub и ZIP выполняются офлайн, на локальных вычислительных ресурсах, без обращения в интернет. Сюда же относится базовое извлечение текста из изображений (EXIF/OCR). Затраты — только локальные вычисления.
Для строго локальной работы с файлами на диске документация рекомендует
вызывать узкий метод convert_local() вместо универсального convert():
последний умеет ходить в сеть и открывать произвольные URI.
Что уходит в облако✦
Внешние сервисы подключаются при явной настройке — и именно на это важно обращать внимание:
- Azure Document Intelligence (
docintel_endpoint, флаг-d -e) и Azure Content Understanding (cu_endpoint,--use-cu) — облачные, платные вызовы Azure API. Они дают более качественный OCR/раскладку, таблицы, формулы и мультимодальность (аудио/видео, извлечение полей). Данные шифруются в транзите по HTTPS, временно сохраняются в Azure Storage в регионе ресурса и передаются в Azure OpenAI для обработки; результаты хранятся до 24 часов, после чего удаляются. - Описание изображений через LLM и плагин
markitdown-ocrтребуют передатьllm_client/llm_model(OpenAI или совместимый сервис) — то есть содержимое изображений отправляется в сторонний LLM. - Расшифровка аудио — важный подводный камень. Хотя встроенная транскрипция
числится среди «офлайн»-возможностей и по README может так показаться, на
самом деле она вызывает
recognizer.recognize_google(audio)— то есть отправляет звук в облачный сервис распознавания речи Google. Это не локальная обработка. - YouTube-ссылки и любые URL — расшифровка и загрузка тянутся из сети.
Как остаться полностью офлайн (приватность данных)✦
Чтобы данные не покидали периметр:
- Ставьте только нужные офлайн-зависимости (например,
markitdown[pdf,docx,pptx]), а не весь набор[all]. - Не передавайте
llm_client,docintel_endpointиcu_endpoint, не используйте флаги--use-cuи-d, не включайте плагины, обращающиеся наружу (enable_plugins=False). - Конвертируйте только локальные файлы методом
convert_local(); не подавайте YouTube- и удалённые URL-источники. - Помните, что аудио встроенными средствами приватно обработать не получится — для локальной транскрипции понадобится отдельный движок распознавания речи вне MarkItDown.
При таком наборе только встроенных конвертеров инструмент работает без GPU и без интернета — это и обеспечивает приватность обрабатываемых документов.
Источники✦
- microsoft/markitdown — README
- MarkItDown: Microsoft's Tool for Converting Almost Anything to Markdown (DEV Community)
- markitdown — _transcribe_audio.py (recognize_google → Google Speech API)
- Document Intelligence supported Markdown elements — Microsoft Learn
- Data, privacy, and security for Content Understanding — Microsoft Learn