Pipeline и Stack

Pipeline

class manuscript.Pipeline(detector=<default>, layout=<default>, recognizer=<default>, corrector=None, layout_after='detector', memory_policy='keep')[исходный код]

Базовые классы: ModelComposition

OCR-пайплайн с настраиваемым порядком этапов.

Пайплайн по умолчанию: detector -> layout -> recognizer. corrector необязателен и по умолчанию отключён.

Инициализация OCR-пайплайна.

Параметры:
  • detector (object, optional) – Экземпляр детектора с интерфейсом predict(image) -> Page. Если не указан, используется YOLO(weights="yolo26x_obb_text_g1") по умолчанию. Детектор отключить нельзя.

  • layout (object or None, optional) – Экземпляр компонента анализа структуры с интерфейсом predict(page, image=None) -> Page. Если не указан, используется SimpleSorting() по умолчанию. Передайте None, чтобы отключить этап анализа структуры.

  • recognizer (object or None, optional) – Экземпляр распознавателя с интерфейсом predict(page, image=None, ...) -> Page. Если не указан, используется TRBA(weights="trba_lite_g2") по умолчанию. Передайте None, чтобы отключить этап распознавания.

  • corrector (object or None, optional) – Экземпляр корректора с интерфейсом predict(page, image=None) -> Page. По умолчанию None (отключён).

  • layout_after ({"detector", "recognizer", "corrector"}, optional) – Этап, после которого выполняется анализ структуры. По умолчанию "detector".

  • memory_policy ({"keep", "sequential"}, optional) – По умолчанию сохраняет загруженные сессии моделей. «sequential» освобождает сессии после каждого вызова процессора, включая ошибки, и действует внутри вложенных Stack и ансамблей. Участникам нужен close(); вложенное параллельное выполнение несовместимо. Общие модели требуют внешней синхронизации между конвейерами и прямыми вызовами.

predict(image, vis=False, profile=False)[исходный код]

Запустить пайплайн на одном изображении.

Параметры:
  • image (str, Path, numpy.ndarray, or PIL.Image) – Входное изображение.

  • vis (bool, optional) – Если True, возвращает изображение визуализации вместе с результатом.

  • profile (bool, optional) – Если True, выводит время выполнения каждого этапа.

Тип результата:

Union[Dict[str, Page], tuple]

get_text(page, format='plain', *, separators=None, separator_priorities=None)[исходный код]

Возвращает текст через метод Page.get_text.

Тип результата:

str

Параметры:

page (Page)

property last_timings: Dict[str, float]

Возвращает копию словаря со временем последнего вызова predict в секундах.

Ключи: detector, layout, recognizer, corrector, load_image, visualization и total. Присутствуют только выполненные этапы. Время этапа включает проверку дерева, снимки и отложенную инициализацию модели. Явная загрузка изображения в Pipeline учитывается отдельно и вычитается из времени этапов обработки Page. Загрузка внутри модели остаётся во времени её этапа. Общее время включает организацию вызовов и необязательную визуализацию. При ошибке время завершённых этапов сохраняется без записи total.

property last_detection_page: Page | None
property last_layout_page: Page | None
property last_recognition_page: Page | None
property last_correction_page: Page | None

Stack

class manuscript.Stack(stages, *, parallel=False, memory_policy='keep')[исходный код]

Базовые классы: ModelComposition

Объединить обработчики в одном этапе Pipeline или запускать их напрямую.

Параметры:
  • stages (iterable of processors) – Список из одного или нескольких обработчиков с predict(image, …) или predict(page, image=None, …). Порядок списка определяет порядок запуска. Можно вкладывать Stack друг в друга.

  • parallel (bool, optional) – При True детекторы запускаются параллельно в потоках, а результаты объединяются в порядке списка. По умолчанию False. Режим доступен только для Stack из детекторов: обработчики Page зависят от результата предыдущего обработчика.

  • memory_policy ({"keep", "sequential"}, optional) – По умолчанию сохраняет сессии. «sequential» освобождает сессии каждого процессора после вызова, включая ошибки, и действует во вложенных композициях. Требует close() у каждого участника и запрещает parallel=True. Участники должны принадлежать одному вызывающему коду либо использовать внешнюю синхронизацию при совместном доступе.

Примеры

>>> detector = Stack([block_detector, word_detector])
>>> page = detector.predict(image)
>>> recognizer = Stack([recognizer_a, recognizer_b])
>>> page = recognizer.predict(page, image=image)

См. также

manuscript.recognizers.MajorityVotingRecognizer

Выбирает самый частый текстовый ответ целиком.

manuscript.recognizers.MedoidRecognizer

Выбирает ответ с наименьшей суммой расстояний редактирования до остальных.

predict(page=None, image=None, *, return_raw=False, return_masks=False, return_outputs=False, detector_result=None, **kwargs)[исходный код]

Принимает изображение, Page (при необходимости вместе с изображением) или именованные аргументы.

По умолчанию возвращает Page. Флаги raw/mask/output включают словарь с итоговым Page и результатами детекторов, сгруппированными по моделям. Обработчики Page всегда запускаются в режиме Page. Stack не кеширует результаты предсказаний.

Параметры: