Ich lade meine Konfiguration aus einer Datei und übergebe die Zeichenfolge als Argument, das einem bestimmten Unterklassenkonstruktor der OCR-Engine zugeordnet wird. Jede Klasse im Codeblock unten. Meine aktuelle Lösung besteht darin, ein Wörterbuch zu verwenden und das Objekt basierend auf den kwargs zu erstellen, die daran übergeben werden. Ist das ein Designproblem? Sollte ich meine Vererbungshierarchie umgestalten, um Komposition statt Vererbung zu verwenden? Ich bin auf der Suche nach irgendwelchen Gedanken.
Ich habe das Gefühl, dass diese Übergabe einer Zeichenfolge den Sinn des Polymorphismus zunichte macht. Wenn Sie Bücher oder Dokumente zu Entwurfsmustern haben, die sich mit solchen Problemen befassen, senden Sie sie mir bitte zu.
Bitte ignorieren Sie die fehlende Fehlerprüfung – dies ist nur ein Ausschnitt.
Code: Select all
def main():
config_data = load_config(config_path_file)
preprocessing_settings = config_data["preprocessing"]
engine_name = preprocessing_settings["ocr_engine"]
engine_config_args = parse_args(preprocessor(f'{engine_name}-settings'))
with create_ocr_engine(engine_name, engine_config_args) as engine:
engine.batch_load_from_dir(data_path)
engine.process_all()
documents = (engine.document_from_batch()
.to_json())
def create_ocr_engine(name, kwargs) -> OcrEngine:
return # instance of specified subclass based on name and kwargs
#
# class TesseractOcrEngine(OcrEngine):
# pass
# class DeepSeekOcrEngine(OcrEngine):
# pass
# class EasyOcrEngine(OcrEngine):
# pass
Mobile version