pdfmux — извлечение текста из PDF с самопроверкой

pdfmux

Извлечение PDF с самопроверкой: нечитаемые страницы получают пометку и не пропадают молча, плюс MCP-сервер для Claude

  • 86 ★ репозитория
  • Последний коммит
  • MIT
MCP-сервер

Расширенный доступ

Почему такой уровень

  • Сервер читает ваши PDF и пишет результат на диск
  • При подключении облачной модели для резервного извлечения текст страниц уходит провайдеру
Все причины и проверки

nameetp/pdfmux

Установка

Ручная установка

claude mcp add pdfmux -- npx -y pdfmux-mcp

MCP-сервер. Движок ставится отдельно: `pip install pdfmux`.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Сервер читает ваши PDF и пишет результат на диск
  • При подключении облачной модели для резервного извлечения текст страниц уходит провайдеру

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

pdfmux превращает PDF в Markdown, JSON или куски для RAG и сам проверяет результат. Для каждой страницы он выбирает один из семи встроенных извлекателей: PyMuPDF для цифрового текста, RapidOCR для сканов, Docling для таблиц, Marker для научных статей, Surya, OpenDataLoader и Mistral OCR. Пустые страницы, перепутанные колонки и сломанные таблицы он перезапускает более сильным движком, а что прочитать не вышло, помечает. Команда `pdfmux verify` проверяет и чужие извлечения, например Docling, LlamaParse или Mistral OCR: она сверяет результат с исходным PDF и показывает, какие страницы молча пропали. Для сложных случаев подключается своя модель по YAML: Gemini, Claude, GPT-4o, Ollama или Mistral, ключи остаются вашими. MCP-сервер `pdfmux-mcp` отдает агенту инструменты `convert_pdf`, `analyze_pdf`, `extract_structured`, `extract_streaming`, `get_pdf_metadata` и `batch_convert`, седьмой инструмент проверяет извлечение.

Для кого. Разработчикам RAG-конвейеров и всем, кто отдает агентам PDF с таблицами и сканами и не хочет получать тихо потерянные страницы.

Подходит, если

  • Каталог из сотен PDF содержит сканы, и пустые страницы мешают поиску
  • Таблицы из отчета должны попасть в Markdown без разрушения структуры
  • Вы сравниваете платный извлекатель с бесплатным и хотите увидеть, какие страницы он потерял
  • Агенту в Claude Desktop нужно прочитать PDF и выдать структурированный JSON

Не подходит, если

  • Нужен только простой текст из цифрового PDF: хватит PyMuPDF без самопроверки
  • На машине мало места: дополнительные движки весят сотни мегабайт, например RapidOCR около 200 МБ, Docling около 500 МБ
  • Документ нельзя отдавать внешней модели: для резервного извлечения подключаются облачные модели по вашему ключу

Пример запроса к агенту

Извлеки таблицы из годового отчета в Markdown и скажи, какие страницы pdfmux не смог прочитать.

MCP

Транспорт
stdio
Авторизация
не нужна

Ограничения

Базовая установка `pip install pdfmux` разбирает только цифровые PDF. Для сканов нужен `extra` `pdfmux[ocr]`, для таблиц `pdfmux[tables]`, для сложных макетов `pdfmux[opendataloader]` с Java 11 или новее. Резервный вызов моделей работает по вашему ключу Gemini, Claude, GPT-4o, Ollama или Mistral, и без него такие страницы остаются помеченными.

Автор называет метод принятия решений заявленным на патент. Часть чисел, например 97,9 процента TEDS у Docling и 96,6 процента по таблицам у Mistral OCR, относится к чужим движкам и взята из README. Для MCP-сервера нужен Node.js, а сам движок написан на Python.

Как отключить. Удалите сервер командой `claude mcp remove pdfmux`, а пакет `pip uninstall pdfmux`. Файлы конфигурации YAML с вашими ключами удалите отдельно.

Частые вопросы

Как подключить pdfmux к Claude Code?

Выполните `claude mcp add pdfmux -- npx -y pdfmux-mcp`. Сам движок ставится отдельно командой `pip install pdfmux`.

Чем pdfmux отличается от LlamaParse?

Он бесплатный, с лицензией MIT, работает локально и после извлечения проверяет страницы. Автор называет его открытой альтернативой LlamaParse.

Что делает команда pdfmux `verify`?

Сверяет результат любого извлекателя с исходным PDF и показывает страницы, которые он молча пропустил.

Нужен ли OCR для сканов?

Да, поставьте `pip install "pdfmux[ocr]"`. Без него страницы-сканы дают пустой текст. RapidOCR работает на процессоре и занимает около 200 МБ.

Есть ли загрузчики для LangChain и LlamaIndex?

Да, README дает отдельные пакеты и примеры, например `llama-index-readers-pdfmux`.

Обсуждение

Вопросов и отзывов пока нет.

MCP-серверы

MCP PDF для больших документов: агент ищет по смыслу и по ключевым словам в одном файле или папке и читает только нужные страницы, таблицы и сканы

MCP-серверРасширенный доступ171Звезды репозитория
Официальный

MCP PDF от ComPDF: агент конвертирует PDF и изображения в Word, Excel, Markdown и JSON, объединяет, режет, защищает и сравнивает файлы через облачный API

MCP-серверШирокий доступ98Звезды репозитория
Официальный

MCP-сервер на базе Docling: переводит PDF в структурированный документ, собирает новые документы и загружает их в RAG

MCP-серверРасширенный доступ791Звезды репозитория

MCP-сервер, который превращает PDF, DOCX, XLSX, PPTX, изображения, аудио, веб-страницы и расшифровки YouTube в Markdown

MCP-серверРасширенный доступ3 тыс.Звезды репозитория

Строит переходные закладки в отсканированном PDF по странице оглавления и работает как MCP-сервер для Claude Desktop

MCP-серверРасширенный доступ273Звезды репозитория
Официальный

Официальный MCP-сервер MinerU: PDF, Word, PowerPoint и изображения превращаются в Markdown с формулами и таблицами

MCP-серверРасширенный доступ229Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
pdfmux — извлечение текста из PDF с самопроверкой (эта карточка)нетне нужна86
MarkItDownдане нужна195 008конвертирует форматы Microsoft Office в Markdown без проверки страниц
Doclingнет70 497один из движков, который pdfmux использует для таблиц
MinerUнет83 572отдельный разборщик PDF без слоя самопроверки

Коротко о README

README представляет pdfmux как конвейер: маршрутизатор выбирает извлекатель по странице, аудит ловит сбои, перезапуск лечит их. Дальше идут установка с extras, режим сертификации `verify`, загрузчики для LangChain и LlamaIndex, MCP-сервер и настройка собственной модели через YAML.

Бейдж для README

Сообщить о проблеме