Files
OCR/backend/schemas/template_schemas.py

81 lines
2.2 KiB
Python

from pydantic import BaseModel, ConfigDict
from typing import List, Optional
from datetime import datetime
# Common
class BaseSchema(BaseModel):
model_config = ConfigDict(from_attributes=True)
# Document
class DocumentLayoutSchema(BaseSchema):
pk_document_data_id: int
fk_document_id: int
page_no: int
text_value: Optional[str]
block_type: Optional[str]
parent_block_id: Optional[int]
x_coordinate: Optional[float]
y_coordinate: Optional[float]
width: Optional[float]
height: Optional[float]
confidence: Optional[float]
sequence_no: Optional[int]
class DocumentSchema(BaseSchema):
pk_document_id: int
document_name: Optional[str]
document_type: Optional[str]
file_name: Optional[str]
page_count: Optional[int]
status: Optional[str]
created_at: datetime
layouts: List[DocumentLayoutSchema] = []
# Template Field
class TemplateFieldCreate(BaseSchema):
field_label: str
field_type: str
display_order: Optional[int] = 0
required_flag: Optional[bool] = False
class TemplateFieldSchema(TemplateFieldCreate):
pk_template_field_id: int
fk_template_id: int
created_at: datetime
# Template Field Mapping
class TemplateFieldMappingCreate(BaseSchema):
fk_template_field_id: int
fk_document_data_id: Optional[int] = None
page_no: Optional[int] = None
x_coordinate: Optional[float] = None
y_coordinate: Optional[float] = None
width: Optional[float] = None
height: Optional[float] = None
mapping_confidence: Optional[float] = None
class TemplateFieldMappingSchema(TemplateFieldMappingCreate):
pk_mapping_id: int
fk_template_id: int
created_at: datetime
# Template
class TemplateCreate(BaseSchema):
template_name: str
fields: Optional[List[TemplateFieldCreate]] = []
class TemplateSchema(BaseSchema):
pk_template_id: int
template_name: str
template_fingerprint: Optional[str] = None
active_flag: bool
created_at: datetime
fields: List[TemplateFieldSchema] = []
mappings: List[TemplateFieldMappingSchema] = []
class TemplateRecognitionResult(BaseSchema):
templateMatched: bool
templateId: Optional[int] = None
confidence: Optional[float] = None
extractedFields: List[dict] = []