OCR и документы
Извлечение текста из PDF/сканов (pymupdf, marker-pdf).
Метаданные навыка
| Источник | Встроенный (устанавливается по умолчанию) |
| Путь | skills/productivity/ocr-and-documents |
| Версия | 2.3.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | PDF, Documents, Research, Arxiv, Text-Extraction, OCR |
| Связанные навыки | powerpoint |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.
Извлечение PDF и документов
Для DOCX: используйте python-docx (парсит реальную структуру документа, гораздо лучше OCR).
Для PPTX: см. навык powerpoint (использует python-pptx с полной поддержкой слайдов и заметок).
Этот навык охватывает PDF и отсканированные документы.
Шаг 1: Доступен ли URL?
Если у документа есть URL, всегда сначала пробуйте web_extract:
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
web_extract(urls=["https://example.com/report.pdf"])
Это обрабатывает преобразование PDF в Markdown через Firecrawl без локальных зависимостей.
Используйте локальное извлечение только в случаях: файл локальный, web_extract не сработал, или требуется пакетная обработка.
Шаг 2: Выбор локального экстрактора
| Возможность | pymupdf (~25 МБ) | marker-pdf (~3-5 ГБ) |
|---|---|---|
| Текстовый PDF | ✅ | ✅ |
| Сканированный PDF (OCR) | ❌ | ✅ (90+ языков) |
| Таблицы | ✅ (базово) | ✅ (высокая точность) |
| Уравнения / LaTeX | ❌ | ✅ |
| Блоки кода | ❌ | ✅ |
| Формы | ❌ | ✅ |
| Удаление колонтитулов | ❌ | ✅ |
| Определение порядка чтения | ❌ | ✅ |
| Извлечение изображений | ✅ (встроенные) | ✅ (с контекстом) |
| Изображения → текст (OCR) | ❌ | ✅ |
| EPUB | ✅ | ✅ |
| Вывод в Markdown | ✅ (через pymupdf4llm) | ✅ (нативный, выше качество) |
| Размер установки | ~25 МБ | ~3-5 ГБ (PyTorch + модели) |
| Скорость | Мгновенно | ~1-14 с/стр (CPU), ~0.2 с/стр (GPU) |
Решение: Используйте pymupdf, если не нужны OCR, уравнения, формы или сложный анализ макета.
Если пользователю нужны возможности marker, но в системе не хватает ~5 ГБ свободного места:
«Для этого документа требуется OCR/расширенное извлечение (marker-pdf), для которого нужно ~5 ГБ для PyTorch и моделей. В вашей системе свободно [X] ГБ. Варианты: освободить место, указать URL для использования web_extract, или я могу попробовать pymupdf — он работает с текстовыми PDF, но не подходит для сканов или уравнений.»
pymupdf (лёгкий)
pip install pymupdf pymupdf4llm
Через вспомогательный скрипт:
python scripts/extract_pymupdf.py document.pdf # Простой текст
python scripts/extract_pymupdf.py document.pdf --markdown # Markdown
python scripts/extract_pymupdf.py document.pdf --tables # Таблицы
python scripts/extract_pymupdf.py document.pdf --images out/ # Извлечение изображений
python scripts/extract_pymupdf.py document.pdf --metadata # Название, автор, страницы
python scripts/extract_pymupdf.py document.pdf --pages 0-4 # Конкретные страницы
Встроенный код:
python3 -c "
import pymupdf
doc = pymupdf.open('document.pdf')
for page in doc:
print(page.get_text())
"
marker-pdf (высококачественное OCR)
# Сначала проверьте свободное место на диске
python scripts/extract_marker.py --check
pip install marker-pdf
Через вспомогательный скрипт:
python scripts/extract_marker.py document.pdf # Markdown
python scripts/extract_marker.py document.pdf --json # JSON с метаданными
python scripts/extract_marker.py document.pdf --output_dir out/ # Сохранение изображений
python scripts/extract_marker.py scanned.pdf # Сканированный PDF (OCR)
python scripts/extract_marker.py document.pdf --use_llm # Повышенная точность через LLM
CLI (устанавливается с marker-pdf):
marker_single document.pdf --output_dir ./output
marker /path/to/folder --workers 4 # Пакетная обработка
Статьи Arxiv
# Только аннотация (быстро)
web_extract(urls=["https://arxiv.org/abs/2402.03300"])
# Полная статья
web_extract(urls=["https://arxiv.org/pdf/2402.03300"])
# Поиск
web_search(query="arxiv GRPO reinforcement learning 2026")
Разделение, объединение и поиск
pymupdf обрабатывает это нативно — используйте execute_code или встроенный Python:
# Разделение: извлечение страниц 1-5 в новый PDF
import pymupdf
doc = pymupdf.open("report.pdf")
new = pymupdf.open()
for i in range(5):
new.insert_pdf(doc, from_page=i, to_page=i)
new.save("pages_1-5.pdf")
# Объединение нескольких PDF
import pymupdf
result = pymupdf.open()
for path in ["a.pdf", "b.pdf", "c.pdf"]:
result.insert_pdf(pymupdf.open(path))
result.save("merged.pdf")
# Поиск текста по всем страницам
import pymupdf
doc = pymupdf.open("report.pdf")
for i, page in enumerate(doc):
results = page.search_for("revenue")
if results:
print(f"Страница {i+1}: {len(results)} совпадений")
print(page.get_text("text"))
Никаких дополнительных зависимостей не требуется — pymupdf покрывает разделение, объединение, поиск и извлечение текста в одном пакете.
Примечания
web_extractвсегда является первым выбором для URL- pymupdf — безопасный вариант по умолчанию: мгновенно, без моделей, работает везде
- marker-pdf предназначен для OCR, сканов, уравнений, сложных макетов — устанавливайте только при необходимости
- Оба вспомогательных скрипта принимают
--helpдля полного описания использования - marker-pdf загружает ~2,5 ГБ моделей в
~/.cache/huggingface/при первом запуске - Для Word-документов:
pip install python-docx(лучше, чем OCR — парсит реальную структуру) - Для PowerPoint: см. навык
powerpoint(использует python-pptx)