""" OCR text model — stores text regions extracted from photos via rapidocr. """ from sqlalchemy import Column, String, Float, ForeignKey, Text, DateTime, func from sqlalchemy.dialects.postgresql import JSONB import uuid from app.database import Base class OCRText(Base): __tablename__ = 'ocr_text' id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) photo_id = Column(String, ForeignKey('photos.id', ondelete='CASCADE'), nullable=False, index=True) text = Column(Text, nullable=False) language = Column(String(8), default='') confidence = Column(Float) bbox = Column(JSONB) # [x1, y1, x2, y2] normalized 0-1 created_at = Column(DateTime(timezone=True), server_default=func.now())