opencode/backend/README.md
Кирилл Блинов f37c477a0a Add FastAPI backend with DZI viewer and feedback system
- 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
2026-06-01 12:29:41 +03:00

4.2 KiB
Raw Permalink Blame History

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

  1. Загрузка: POST /api/projects/upload с PDF
  2. Обработка: Backend запускает OCR → QC → DZI (фоново)
  3. Просмотр: GET /viewer/{id}/{page} — viewer с overlay
  4. Разметка: Пользователь кликает замечания → POST /api/feedback (is_true_positive: true/false)
  5. Обучение: 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 размеченных примеров, можно:

  1. Fine-tune VLM (few-shot prompting)
  2. Обучить YOLO-детектор под ваши типы чертежей
  3. Дообучить правила 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