81 lines
2.2 KiB
Python
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] = []
|