Blueprint QC Backend
FastAPI backend для сбора, хранения и разметки замечаний QC по чертежам.
Архитектура
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ React UI │────▶│ FastAPI │────▶│ SQLite │
│ (viewer) │◀────│ Backend │◀────│ Database │
└─────────────┘ └──────────────┘ └─────────────┘
│
▼
┌──────────────┐
│ OCR + QC │
│ Pipeline │
└──────────────┘
Установка
cd backend
pip install -r requirements.txt
Запуск
python -m uvicorn app.main:app --reload --port 8000
API будет доступен на http://localhost:8000
Документация (Swagger): http://localhost:8000/docs
API Endpoints
Проекты
| Method |
Endpoint |
Описание |
| POST |
/api/projects/upload |
Загрузка PDF, запуск обработки |
| GET |
/api/projects |
Список проектов |
| GET |
/api/projects/{id} |
Детали проекта |
Замечания (Issues)
| Method |
Endpoint |
Описание |
| GET |
/api/projects/{id}/issues |
Замечания проекта |
| GET |
/api/issues/{id} |
Одно замечание |
Feedback (разметка)
| Method |
Endpoint |
Описание |
| POST |
/api/feedback |
Отметить TP/FP |
| GET |
/api/feedback/stats |
Статистика |
Обучение
| Method |
Endpoint |
Описание |
| GET |
/api/training/data |
Данные для обучения |
| POST |
/api/training/export |
Скачать JSON |
| GET |
/api/stats |
Общая статистика |
Viewer
| Method |
Endpoint |
Описание |
| GET |
/viewer/{project_id}/{page} |
HTML viewer |
| GET |
/viewer_tiles/{project_id}/{path} |
DZI тайлы |
Workflow
- Загрузка:
POST /api/projects/upload с PDF
- Обработка: Backend запускает OCR → QC → DZI (фоново)
- Просмотр:
GET /viewer/{id}/{page} — viewer с overlay
- Разметка: Пользователь кликает замечания →
POST /api/feedback (is_true_positive: true/false)
- Обучение:
GET /api/training/data — экспорт размеченных данных
Feedback Schema
{
"issue_id": 123,
"is_true_positive": true, // true = реальная проблема, false = ложное срабатывание
"comment": "Размер действительно плохо читается",
"action_taken": "fixed" // fixed / ignored / not_sure
}
Training Data
Каждый размеченный пример содержит:
bbox: координаты на PNG
issue_type: тип проблемы
is_true_positive: метка от пользователя
image_path: путь к PNG страницы
dimension_text: текст размера (если есть)
confidence: OCR confidence
Накопив 100-200 размеченных примеров, можно:
- Fine-tune VLM (few-shot prompting)
- Обучить YOLO-детектор под ваши типы чертежей
- Дообучить правила QC (эвристики)
Модели БД
Project
- id, name, pdf_filename, status, created_at, output_folder
Page
- id, project_id, page_number, png_path, ocr_data, vlm_description
Issue
- id, project_id, page_id, issue_type, severity, message, bbox, dimension_text, confidence
Feedback
- id, issue_id, is_true_positive, comment, action_taken, created_at