SYMBOL INDEX (215 symbols across 23 files) FILE: ddddocr/__main__.py function main (line 8) | def main(): FILE: ddddocr/api/app.py function _validate_base64_payload (line 43) | def _validate_base64_payload(value: str, field_name: str) -> str: function _decode_base64_bytes (line 57) | def _decode_base64_bytes(value: str) -> bytes: function _ensure_colors_list (line 64) | def _ensure_colors_list(data: List[Any]) -> List[str]: function _validate_custom_range_dict (line 77) | def _validate_custom_range_dict(parsed: Dict[str, List[List[int]]]) -> D... function _ensure_custom_ranges (line 96) | def _ensure_custom_ranges(data: Any) -> Optional[Dict[str, List[List[int... function _coerce_bool_param (line 114) | def _coerce_bool_param(value: Union[bool, str], field_name: str) -> bool: class Base64Image (line 126) | class Base64Image(BaseModel): method validate_image (line 130) | def validate_image(cls, value): class OCRRequest (line 133) | class OCRRequest(Base64Image): method validate_colors (line 139) | def validate_colors(cls, value): method validate_custom_ranges (line 155) | def validate_custom_ranges(cls, value): class SlideMatchRequest (line 160) | class SlideMatchRequest(BaseModel): method validate_target_image (line 167) | def validate_target_image(cls, value): method validate_background_image (line 171) | def validate_background_image(cls, value): class SlideComparisonRequest (line 174) | class SlideComparisonRequest(BaseModel): method validate_target_image (line 179) | def validate_target_image(cls, value): method validate_background_image (line 183) | def validate_background_image(cls, value): class CharsetRangeRequest (line 186) | class CharsetRangeRequest(BaseModel): method validate_charset (line 190) | def validate_charset(cls, value): class ModelConfig (line 200) | class ModelConfig(BaseModel): class OCRResponse (line 212) | class OCRResponse(BaseModel): class DetectionResponse (line 218) | class DetectionResponse(BaseModel): class SlideMatchResult (line 223) | class SlideMatchResult(BaseModel): class SlideMatchResponse (line 229) | class SlideMatchResponse(BaseModel): class SlideComparisonResponse (line 234) | class SlideComparisonResponse(BaseModel): function get_ocr_instance (line 239) | def get_ocr_instance( function cleanup_inactive_instances (line 284) | def cleanup_inactive_instances(max_idle_time: int = 3600): function health_check (line 331) | async def health_check(): function ocr_recognition (line 336) | async def ocr_recognition( function ocr_recognition_file (line 409) | async def ocr_recognition_file( function object_detection (line 501) | async def object_detection( function object_detection_file (line 543) | async def object_detection_file( function slide_match_recognition (line 593) | async def slide_match_recognition( function slide_comparison_recognition (line 637) | async def slide_comparison_recognition( function set_charset_range (line 681) | async def set_charset_range( function get_current_config (line 722) | async def get_current_config(): function main (line 743) | def main(): FILE: ddddocr/api/mcp.py class MCPHandler (line 17) | class MCPHandler: method __init__ (line 20) | def __init__(self, service): method _setup_routes (line 25) | def _setup_routes(self): FILE: ddddocr/api/models.py class InitializeRequest (line 10) | class InitializeRequest(BaseModel): class SwitchModelRequest (line 22) | class SwitchModelRequest(BaseModel): class ToggleFeatureRequest (line 29) | class ToggleFeatureRequest(BaseModel): class OCRRequest (line 35) | class OCRRequest(BaseModel): class DetectionRequest (line 45) | class DetectionRequest(BaseModel): class SlideMatchRequest (line 50) | class SlideMatchRequest(BaseModel): class SlideComparisonRequest (line 57) | class SlideComparisonRequest(BaseModel): class APIResponse (line 63) | class APIResponse(BaseModel): class StatusResponse (line 70) | class StatusResponse(BaseModel): class OCRResponse (line 79) | class OCRResponse(BaseModel): class DetectionResponse (line 85) | class DetectionResponse(BaseModel): class SlideResponse (line 90) | class SlideResponse(BaseModel): class MCPRequest (line 98) | class MCPRequest(BaseModel): class MCPResponse (line 105) | class MCPResponse(BaseModel): class MCPCapabilities (line 112) | class MCPCapabilities(BaseModel): FILE: ddddocr/api/routes.py function create_routes (line 17) | def create_routes(app: FastAPI, service): FILE: ddddocr/api/server.py class DDDDOCRService (line 22) | class DDDDOCRService: method __init__ (line 25) | def __init__(self): method initialize (line 33) | def initialize(self, config: InitializeRequest) -> Dict[str, Any]: method switch_model (line 82) | def switch_model(self, config: SwitchModelRequest) -> Dict[str, Any]: method toggle_feature (line 122) | def toggle_feature(self, config: ToggleFeatureRequest) -> Dict[str, Any]: method get_status (line 137) | def get_status(self) -> StatusResponse: function lifespan (line 161) | async def lifespan(app: FastAPI): function create_app (line 170) | def create_app() -> FastAPI: function run_server (line 200) | def run_server(host: str = "0.0.0.0", port: int = 8000, **kwargs): FILE: ddddocr/compat/v1.py class DdddOcr (line 18) | class DdddOcr: method __init__ (line 26) | def __init__(self, ocr: bool = True, det: bool = False, old: bool = Fa... method classification (line 95) | def classification(self, img: Union[bytes, str, pathlib.PurePath, Imag... method detection (line 129) | def detection(self, img: Union[bytes, str, pathlib.PurePath, Image.Ima... method slide_match (line 150) | def slide_match(self, target_img: Union[bytes, str, pathlib.PurePath, ... method slide_comparison (line 172) | def slide_comparison(self, target_img: Union[bytes, str, pathlib.PureP... method set_ranges (line 192) | def set_ranges(self, charset_range: Union[int, str, List[str]]) -> None: method get_charset (line 210) | def get_charset(self) -> List[str]: method switch_device (line 228) | def switch_device(self, use_gpu: bool, device_id: int = 0) -> None: method get_model_info (line 246) | def get_model_info(self) -> Dict[str, Any]: method cleanup (line 268) | def cleanup(self) -> None: method __del__ (line 279) | def __del__(self): method __repr__ (line 283) | def __repr__(self) -> str: FILE: ddddocr/core/__init__.py function __getattr__ (line 21) | def __getattr__(name: str): FILE: ddddocr/core/base.py class BaseEngine (line 15) | class BaseEngine(ABC): method __init__ (line 18) | def __init__(self, use_gpu: bool = False, device_id: int = 0): method initialize (line 33) | def initialize(self, **kwargs) -> None: method predict (line 46) | def predict(self, *args, **kwargs) -> Any: method get_model_info (line 59) | def get_model_info(self) -> Dict[str, Any]: method is_ready (line 70) | def is_ready(self) -> bool: method switch_device (line 79) | def switch_device(self, use_gpu: bool, device_id: int = 0) -> None: method _reload_model (line 96) | def _reload_model(self) -> None: method cleanup (line 100) | def cleanup(self) -> None: method __del__ (line 107) | def __del__(self): method __repr__ (line 111) | def __repr__(self) -> str: FILE: ddddocr/core/detection_engine.py class DetectionEngine (line 20) | class DetectionEngine(BaseEngine): method __init__ (line 23) | def __init__(self, use_gpu: bool = False, device_id: int = 0): method initialize (line 34) | def initialize(self, **kwargs) -> None: method predict (line 49) | def predict(self, image: Union[bytes, str, Image.Image]) -> List[List[... method preproc (line 89) | def preproc(self, img, input_size, swap=(2, 0, 1)): method demo_postprocess (line 106) | def demo_postprocess(self, outputs, img_size, p6=False): method nms (line 128) | def nms(self, boxes, scores, nms_thr): method multiclass_nms_class_agnostic (line 152) | def multiclass_nms_class_agnostic(self, boxes, scores, nms_thr, score_... method multiclass_nms (line 169) | def multiclass_nms(self, boxes, scores, nms_thr, score_thr): method get_bbox (line 173) | def get_bbox(self, image_bytes): FILE: ddddocr/core/ocr_engine.py class OCREngine (line 20) | class OCREngine(BaseEngine): method __init__ (line 23) | def __init__(self, use_gpu: bool = False, device_id: int = 0, method initialize (line 56) | def initialize(self, **kwargs) -> None: method predict (line 99) | def predict(self, image: Union[bytes, str, Image.Image], method _preprocess_image (line 159) | def _preprocess_image(self, image: Image.Image, png_fix: bool) -> np.n... method _inference (line 217) | def _inference(self, image_array: np.ndarray, probability: bool) -> Un... method _process_text_output (line 244) | def _process_text_output(self, output: np.ndarray) -> str: method _ctc_decode_indices (line 300) | def _ctc_decode_indices(self, predicted_indices: np.ndarray) -> List[i... method _process_probability_output (line 331) | def _process_probability_output(self, output: np.ndarray) -> Dict[str,... method _softmax (line 365) | def _softmax(self, x: np.ndarray, axis: int = -1) -> np.ndarray: method set_charset_range (line 379) | def set_charset_range(self, charset_range: Union[int, str, List[str]])... method get_charset (line 388) | def get_charset(self) -> List[str]: method _reload_model (line 397) | def _reload_model(self) -> None: FILE: ddddocr/core/slide_engine.py class SlideEngine (line 20) | class SlideEngine(BaseEngine): method __init__ (line 23) | def __init__(self): method initialize (line 31) | def initialize(self, **kwargs) -> None: method predict (line 38) | def predict(self, *args, **kwargs) -> Any: method slide_match (line 45) | def slide_match(self, target_image: Union[bytes, str, Image.Image], method slide_comparison (line 83) | def slide_comparison(self, target_image: Union[bytes, str, Image.Image], method _perform_slide_match (line 119) | def _perform_slide_match(self, target: np.ndarray, background: np.ndar... method _perform_slide_comparison (line 149) | def _perform_slide_comparison(self, target: np.ndarray, background: np... method _simple_template_match (line 200) | def _simple_template_match(self, target: np.ndarray, background: np.nd... method _edge_based_match (line 236) | def _edge_based_match(self, target: np.ndarray, background: np.ndarray... method is_ready (line 276) | def is_ready(self) -> bool: method cleanup (line 286) | def cleanup(self) -> None: method __repr__ (line 290) | def __repr__(self) -> str: FILE: ddddocr/models/charset_manager.py class CharsetManager (line 15) | class CharsetManager: method __init__ (line 18) | def __init__(self, charset: Optional[List[str]] = None): method load_default_charset (line 29) | def load_default_charset(self, old: bool = False, beta: bool = False) ... method load_custom_charset (line 47) | def load_custom_charset(self, charset_path: str) -> dict: method set_ranges (line 83) | def set_ranges(self, charset_range: Union[int, str, List[str]]) -> None: method _update_valid_indices (line 113) | def _update_valid_indices(self) -> None: method get_valid_indices (line 126) | def get_valid_indices(self) -> List[int]: method get_charset (line 135) | def get_charset(self) -> List[str]: method get_charset_range (line 144) | def get_charset_range(self) -> List[str]: method char_to_index (line 153) | def char_to_index(self, char: str) -> int: method index_to_char (line 168) | def index_to_char(self, index: int) -> str: method is_valid_char (line 182) | def is_valid_char(self, char: str) -> bool: method filter_text (line 194) | def filter_text(self, text: str) -> str: method get_charset_size (line 214) | def get_charset_size(self) -> int: method get_range_size (line 223) | def get_range_size(self) -> int: method clear_ranges (line 232) | def clear_ranges(self) -> None: method _get_old_charset (line 237) | def _get_old_charset(self) -> List[str]: method _get_beta_charset (line 1537) | def _get_beta_charset(self) -> List[str]: method __repr__ (line 2567) | def __repr__(self) -> str: method __str__ (line 2570) | def __str__(self) -> str: FILE: ddddocr/models/model_loader.py class ModelLoader (line 16) | class ModelLoader: method __init__ (line 19) | def __init__(self, use_gpu: bool = False, device_id: int = 0): method _setup_providers (line 31) | def _setup_providers(self) -> None: method load_model (line 55) | def load_model(self, model_path: str) -> onnxruntime.InferenceSession: method get_model_info (line 83) | def get_model_info(self, session: onnxruntime.InferenceSession) -> Dic... method load_ocr_model (line 119) | def load_ocr_model(self, old: bool = False, beta: bool = False, method load_detection_model (line 152) | def load_detection_model(self) -> onnxruntime.InferenceSession: method load_custom_model (line 170) | def load_custom_model(self, model_path: str, charset_path: str) -> tuple: method validate_model_compatibility (line 206) | def validate_model_compatibility(self, session: onnxruntime.InferenceS... method get_available_providers (line 238) | def get_available_providers(self) -> List[str]: method switch_provider (line 247) | def switch_provider(self, use_gpu: bool, device_id: int = 0) -> None: method __repr__ (line 259) | def __repr__(self) -> str: FILE: ddddocr/preprocessing/color_filter.py class ColorFilter (line 19) | class ColorFilter: method __init__ (line 36) | def __init__(self, colors: Optional[List[str]] = None, method filter_image (line 68) | def filter_image(self, image: Union[Image.Image, np.ndarray]) -> Image... method get_mask (line 113) | def get_mask(self, image: Union[Image.Image, np.ndarray]) -> np.ndarray: method add_color_range (line 150) | def add_color_range(self, lower: Tuple[int, int, int], upper: Tuple[in... method add_preset_color (line 161) | def add_preset_color(self, color: str) -> None: method clear_ranges (line 178) | def clear_ranges(self) -> None: method get_ranges (line 182) | def get_ranges(self) -> List[Tuple[Tuple[int, int, int], Tuple[int, in... method get_available_colors (line 192) | def get_available_colors(cls) -> List[str]: method get_color_range (line 202) | def get_color_range(cls, color: str) -> List[Tuple[Tuple[int, int, int... method __repr__ (line 222) | def __repr__(self) -> str: method __str__ (line 225) | def __str__(self) -> str: FILE: ddddocr/preprocessing/image_processor.py class ImageProcessor (line 18) | class ImageProcessor: method resize_image (line 22) | def resize_image(image: Image.Image, target_size: Tuple[int, int], method convert_to_grayscale (line 63) | def convert_to_grayscale(image: Image.Image) -> Image.Image: method normalize_image (line 82) | def normalize_image(image: Union[Image.Image, np.ndarray], method enhance_contrast (line 125) | def enhance_contrast(image: Image.Image, factor: float = 1.5) -> Image... method enhance_sharpness (line 147) | def enhance_sharpness(image: Image.Image, factor: float = 1.5) -> Imag... method remove_noise (line 169) | def remove_noise(image: Image.Image, kernel_size: int = 3) -> Image.Im... method binarize_image (line 200) | def binarize_image(image: Image.Image, threshold: int = 128, method preprocess_for_ocr (line 241) | def preprocess_for_ocr(image: Image.Image, target_height: int = 64, FILE: ddddocr/utils/compat.py class TypeError (line 17) | class TypeError(Exception): class DdddOcrInputError (line 21) | class DdddOcrInputError(TypeError): class InvalidImageError (line 25) | class InvalidImageError(DdddOcrInputError): function base64_to_image (line 29) | def base64_to_image(img_base64: str) -> Image.Image: function get_img_base64 (line 47) | def get_img_base64(single_image_path): function _coerce_bool (line 53) | def _coerce_bool(value: Union[bool, str], field_name: str) -> bool: function _coerce_int (line 65) | def _coerce_int(value: Union[int, str], field_name: str) -> int: function _coerce_positive_int (line 76) | def _coerce_positive_int(value: Union[int, str], field_name: str) -> int: function _ensure_file_exists (line 83) | def _ensure_file_exists(path: str, description: str) -> None: function png_rgba_black_preprocess (line 88) | def png_rgba_black_preprocess(img: Image): FILE: ddddocr/utils/exceptions.py class DDDDOCRError (line 11) | class DDDDOCRError(Exception): class ModelLoadError (line 16) | class ModelLoadError(DDDDOCRError): class ImageProcessError (line 21) | class ImageProcessError(DDDDOCRError): class TypeError (line 26) | class TypeError(Exception): function handle_opencv_import_error (line 31) | def handle_opencv_import_error(error: ImportError) -> None: function safe_import_opencv (line 84) | def safe_import_opencv(): FILE: ddddocr/utils/image_io.py function base64_to_image (line 18) | def base64_to_image(img_base64: str) -> Image.Image: function get_img_base64 (line 38) | def get_img_base64(image_path: Union[str, pathlib.Path]) -> str: function png_rgba_black_preprocess (line 59) | def png_rgba_black_preprocess(img: Image.Image) -> Image.Image: function load_image_from_input (line 82) | def load_image_from_input(img_input: Union[bytes, str, pathlib.PurePath,... function _numpy_to_pil_image (line 122) | def _numpy_to_pil_image(array: np.ndarray) -> Image.Image: function image_to_numpy (line 170) | def image_to_numpy(image: Image.Image, target_mode: str = 'RGB') -> np.n... function numpy_to_image (line 192) | def numpy_to_image(array: np.ndarray, mode: str = 'RGB') -> Image.Image: FILE: ddddocr/utils/validators.py function validate_image_input (line 15) | def validate_image_input(img_input: Any) -> bool: function validate_model_config (line 34) | def validate_model_config(ocr: bool = True, det: bool = False, old: bool... function validate_color_filter_params (line 83) | def validate_color_filter_params(colors: List[str] = None, function validate_charset_range (line 140) | def validate_charset_range(charset_range: Union[int, str, List[str]]) ->... FILE: examples/api_client.py function build_parser (line 25) | def build_parser() -> argparse.ArgumentParser: function payload_from_image (line 41) | def payload_from_image(path: Path, probability: bool) -> Dict[str, Any]: function main (line 49) | def main() -> int: FILE: examples/basic_ocr.py function build_parser (line 23) | def build_parser() -> argparse.ArgumentParser: function main (line 50) | def main() -> int: FILE: examples/detector.py function build_parser (line 21) | def build_parser() -> argparse.ArgumentParser: function format_boxes (line 32) | def format_boxes(boxes: List[List[int]]) -> str: function main (line 41) | def main() -> int: