- FastAPI app with SQLite DB (projects, pages, issues, feedback) - OpenSeadragon DZI viewer with inline SVG overlays - Dashboard: upload, project list, tiling toggle, review mode - Pipeline integration: tiling OCR → layout → elements → rules QC → DZI → DB - Feedback collection: true_positive / false_positive / not_sure per issue
4.2 KiB
4.2 KiB
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: координаты на PNGissue_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