Files
pdf2ai/README.md
T
2026-05-31 16:16:51 +07:00

75 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# pdf2ai
Model-free конвертер PDF → markdown для локального агента: главы по разделам, картинки рядом, grep по `<!-- page N -->`.
## Зависимости
- Python **3.10+**
- pip-пакеты из [`requirements.txt`](requirements.txt): `pymupdf`, `pdfplumber`, `Pillow`
Скрипт [`run.sh`](run.sh) сам создаёт `.venv` и ставит зависимости.
## Быстрый старт
```bash
chmod +x run.sh
./run.sh # по умолчанию RealTek-r8169.pdf
./run.sh path/to/doc.pdf # свой PDF
./run.sh doc.pdf -o out/my-doc # свой каталог вывода
```
Структура вывода `out/<stem>/` (по умолчанию):
```
out/RealTek-r8169/
├── INDEX.md # оглавление со ссылками на главы
├── chapters/ # одна глава = один файл
│ ├── 01-features.md
│ └── ...
└── assets/ # embedded PNG + page PNG для сломанных layout-страниц
```
С флагом `--single-file` вместо `INDEX.md` и `chapters/` пишется один `{stem}.md` (каталог `assets/` всё равно создаётся).
### Опции extract.py
| Флаг | Описание |
|------|----------|
| `--single-file` | Один `{stem}.md` вместо `INDEX.md` + `chapters/` |
| `--tables` | Включить извлечение таблиц pdfplumber (по умолчанию выключено) |
| `--page-dpi N` | DPI для PNG-рендера страниц с битым текстом (default 150) |
| `-o DIR` | Каталог вывода |
## Grep для агента
Главы разбиты по крупным разделам документа. Каждая страница помечена HTML-комментарием:
```bash
# найти упоминание регистра в главе 6
rg -n 'DTCCR' out/RealTek-r8169/chapters/06-register-descriptions.md
# все вхождения по всему документу
rg -n 'Interrupt Mask' out/RealTek-r8169/
# контекст вокруг страницы 51
rg -n -C3 'page 51' out/RealTek-r8169/chapters/09-functional-description.md
```
Начните с [`INDEX.md`](out/RealTek-r8169/INDEX.md) — там ссылки на все главы.
## Ограничения (model-free)
Этот инструмент **не использует LLM/VLM**. Он комбинирует:
- PyMuPDF — текст страниц и embedded-изображения
- pdfplumber — опциональные таблицы (`--tables`)
- эвристику «сломанной страницы» — PNG-рендер bitfield/diagram layout
**Что хорошо:** быстро, локально, детерминированно; grep по главам; картинки сохраняются рядом.
**Что хуже, чем Marker/Docling:** сложная вёрстка, multi-column, сканы без OCR, семантическая структура таблиц. Для таких PDF нужны модельные конвертеры или OCR.
## Roadmap
См. [`plan.md`](plan.md).