PDF to Content · Библиотека контента из PDF

Локальная обработка PDF: текст с координатами, картинки, таблицы и OCR. Результат — JSON и папка изображений. Опционально — загрузка на FastAPI (пока хранение в памяти / SQLite-схема, без обязательного PostgreSQL).
Возможности
- Извлечение текстовых блоков (bbox, шрифт) через PyMuPDF.
- Картинки со страниц + OCR (Tesseract или EasyOCR).
- Таблицы через pdfplumber.
- GUI (
run_gui.py): обзор, поиск по тексту, превью картинок и таблиц, сохранение JSON. - CLI:
client/process_pdf.py. - REST:
POST /api/documents, поиск, отдача документа (server/main.py).
Не реализовано в текущем коде: продовый PostgreSQL/Elasticsearch, веб-витрина, векторный поиск. Схема SQLAlchemy есть в server/database.py; API по умолчанию держит документы в словаре процесса.
Требования
- Python 3.10+.
- Windows: GUI на tkinter (обычно уже в поставке).
- Для OCR Tesseract: UB-Mannheim installer и PATH.
- EasyOCR — тяжелее, удобнее с GPU.
- PDF без пароля.
Установка и запуск
cd D:\WinProjects\@pdf_to_content
pip install -r requirements-client.txt
python run_gui.py
CLI:
python client/process_pdf.py --input document.pdf --output result.json
python client/process_pdf.py --input document.pdf --ocr easyocr
Сервер (отдельное окно):
pip install -r requirements-server.txt
uvicorn server.main:app --reload --host 127.0.0.1 --port 8000
python client/upload_to_server.py --file processed/result.json --server http://127.0.0.1:8000
Пример переменных: config.example.env.
Использование
GUI
- «Обзор…» — выбрать PDF.
- Включить OCR и движок при необходимости.
- «Обработать PDF» — дождаться прогресса.
- Вкладки: Обзор, Текст (поиск/страница), Изображения, Таблицы, JSON.
- Сохранить JSON. Файлы также пишутся в
processed/иprocessed/images/.
API
POST /api/documents— JSON документа и опционально файлы картинок.GET /api/documents/{id}— документ.- Поиск — эндпоинт в
server/main.py(по загруженным в память записям).
Структура проекта
@pdf_to_content/
├── run_gui.py
├── client/
│ ├── gui_app.py
│ ├── process_pdf.py
│ ├── pdf_processor.py
│ ├── ocr_processor.py
│ └── upload_to_server.py
├── server/
│ ├── main.py # FastAPI, in-memory store
│ └── database.py # SQLAlchemy-схема (заготовка)
├── requirements-client.txt
├── requirements-server.txt
└── doc/
Технологии
- Клиент: Python, PyMuPDF, pdfplumber, Pillow, pytesseract / EasyOCR, tkinter.
- Сервер: FastAPI, uvicorn; SQLAlchemy в схеме, runtime API — память процесса.
История изменений
Формат Keep a Changelog.
[Unreleased]
Changed
- Документация приведена к четвёрке; зафиксировано фактическое поведение API (in-memory), без обещаний Elasticsearch/PostgreSQL как текущего статуса.
[1.0.0]
Added
- Клиентский парсинг PDF, OCR, GUI, CLI.
- FastAPI загрузка/поиск по документам в памяти процесса.
- SQLAlchemy-схема как заготовка.



