TCETMILI/PassportExtractor
1
1from __future__ import annotations2from typing import Optional, List3from enum import Enum4from pydantic import BaseModel, Field5 6class DocumentType(str, Enum):7 PASSPORT = "passport"8 PHOTO = "photo"9 UNKNOWN = "unknown"10 UNREADABLE = "unreadable"11 12class ProcessingStatus(str, Enum):13 PENDING = "pending"14 PROCESSING = "processing"15 COMPLETED = "completed"16 FAILED = "failed"17 18class PassportRecord(BaseModel):19 given_names: Optional[str] = None20 surname: Optional[str] = None21 tc_kimlik_no: Optional[str] = None22 date_of_birth: Optional[str] = None23 passport_number: Optional[str] = None24 date_of_issue: Optional[str] = None25 date_of_expiry: Optional[str] = None26 issuing_authority: Optional[str] = None27 28class PassportRecordWithMeta(PassportRecord):29 source_file_name: Optional[str] = None30 standard_name: Optional[str] = None31 passport_image_path: Optional[str] = None32 face_image_path: Optional[str] = None33 34class ClassificationResult(BaseModel):35 document_type: DocumentType = DocumentType.UNKNOWN36 confidence: float = 0.037 method: str = "unknown"38 details: Optional[str] = None39 40class FaceMatchResult(BaseModel):41 is_match: bool = False42 distance: float = 1.043 similarity: float = 0.044 confidence: str = "low"45 