Детекторы

Модели детекции текста.

class manuscript.detectors.EAST(weights=None, device=None, force_download=False, *, target_size=1280, expand_ratio_w=1.4, expand_ratio_h=1.5, expand_power=0.6, score_thresh=0.6, iou_threshold=0.05, iou_threshold_standard=0.05, score_geo_scale=0.25, quantization=2, axis_aligned_output=True, remove_area_anomalies=False, anomaly_sigma_threshold=5.0, anomaly_min_box_count=30, use_tta=False, tta_iou_thresh=0.1, **kwargs)[исходный код]

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

Инициализация текстового детектора EAST с использованием ONNX Runtime.

Параметры:
  • weights (str or Path, optional) – Путь или идентификатор для весов модели ONNX. Поддерживает: локальный путь, HTTP/HTTPS URL, GitHub release, Google Drive, имя пресета ("east_50_g1"), None — автозагрузка пресета по умолчанию (east_50_g1)

  • device (str, optional) – Устройство вычислений: "cuda", "coreml" или "cpu". Если None, автоматически выбирается CPU. Для ускорения GPU/CoreML: - CUDA (NVIDIA): pip install onnxruntime-gpu - CoreML (Apple Silicon M1/M2/M3): pip install onnxruntime-silicon По умолчанию None (CPU).

  • target_size (int, optional) – Размер входного изображения для инференса. Изображения приводятся к (target_size, target_size). Значение по умолчанию — 1280.

  • expand_ratio_w (float, optional) – Коэффициент горизонтального расширения, применяемый к боксам после NMS. По умолчанию 0.7.

  • expand_ratio_h (float, optional) – Коэффициент вертикального расширения, применяемый к боксам после NMS. По умолчанию 0.7.

  • expand_power (float, optional) – Степень нелинейного расширения боксов. Определяет, как масштабируется расширение в зависимости от размера бокса. - 1.0 = линейно (малые и большие боксы расширяются одинаково) - <1.0 = малые боксы расширяются сильнее (например, 0.5, рекомендуется для детекции символов) - >1.0 = большие боксы расширяются сильнее Значение по умолчанию — 0.5.

  • score_thresh (float, optional) – Порог уверенности для отбора кандидатов перед NMS. Значение по умолчанию — 0.7.

  • iou_threshold (float, optional) – Порог IoU для фазы объединения locality-aware NMS. По умолчанию 0.2.

  • iou_threshold_standard (float, optional) – Порог IoU для стандартного NMS после locality-aware объединения. Если None, используется значение iou_threshold. По умолчанию None.

  • score_geo_scale (float, optional) – Коэффициент масштабирования при декодировании карт геометрии/оценок. По умолчанию 0.25.

  • quantization (int, optional) – Разрешение квантования координат точек при декодировании. По умолчанию 2.

  • axis_aligned_output (bool, optional) – Если True, возвращаются осево-ориентированные прямоугольники вместо исходных четырёхугольников. По умолчанию True.

  • remove_area_anomalies (bool, optional) – Если True, удаляет четырёхугольники с аномально большой площадью относительно распределения. По умолчанию False.

  • anomaly_sigma_threshold (float, optional) – Порог сигмы для фильтрации аномальных площадей. По умолчанию 5.0.

  • anomaly_min_box_count (int, optional) – Минимальное количество боксов перед применением фильтрации аномалий. По умолчанию 30.

  • use_tta (bool, optional) – Включает аугментацию во время инференса (TTA). Когда она активна, инференс выполняется как на исходном, так и на горизонтально отражённом изображении, после чего результаты объединяются. Это может улучшить детекцию частично видимого текста или текста у краёв изображения. По умолчанию False.

  • tta_iou_thresh (float, optional) – Порог IoU для объединения боксов с исходного и отражённого изображения при TTA. Боксы с IoU > threshold считаются совпавшими и объединяются. По умолчанию 0.1.

  • force_download (bool)

Заметки

Класс предоставляет два основных публичных метода:

  • predict — выполняет инференс на одном изображении и возвращает детекции.

  • train — высокоуровневая точка входа для обучения модели EAST на пользовательских датасетах.

Детектор использует ONNX Runtime для быстрого инференса на CPU и GPU. Для ускорения на GPU установите: pip install onnxruntime-gpu

Методы

__call__(*args, **kwargs)

Вызов объекта как функции.

export(weights_path, output_path[, ...])

Экспорт модели EAST из PyTorch в формат ONNX.

predict(img_or_path)

Запустить инференс EAST и вернуть обнаруженную структуру страницы.

runtime_providers()

Получение провайдеров выполнения ONNX Runtime в зависимости от устройства.

train(train_images, train_anns, val_images, ...)

Обучение модели EAST на пользовательских датасетах.

default_weights_name: str | None = 'east_50_g1'
pretrained_registry: Dict[str, str] = {'east_50_g1': 'github://konstantinkozhin/manuscript-ocr/v0.1.0/east_50_g1.onnx'}
__init__(weights=None, device=None, force_download=False, *, target_size=1280, expand_ratio_w=1.4, expand_ratio_h=1.5, expand_power=0.6, score_thresh=0.6, iou_threshold=0.05, iou_threshold_standard=0.05, score_geo_scale=0.25, quantization=2, axis_aligned_output=True, remove_area_anomalies=False, anomaly_sigma_threshold=5.0, anomaly_min_box_count=30, use_tta=False, tta_iou_thresh=0.1, **kwargs)[исходный код]
Параметры:
  • weights (str | Path | None)

  • device (str | None)

  • force_download (bool)

  • target_size (int)

  • expand_ratio_w (float)

  • expand_ratio_h (float)

  • expand_power (float)

  • score_thresh (float)

  • iou_threshold (float)

  • iou_threshold_standard (float | None)

  • score_geo_scale (float)

  • quantization (int)

  • axis_aligned_output (bool)

  • remove_area_anomalies (bool)

  • anomaly_sigma_threshold (float)

  • anomaly_min_box_count (int)

  • use_tta (bool)

  • tta_iou_thresh (float)

predict(img_or_path)[исходный код]

Запустить инференс EAST и вернуть обнаруженную структуру страницы.

Параметры:

img_or_path (str or pathlib.Path or numpy.ndarray) – Путь к файлу изображения или RGB-изображение в виде массива NumPy формата uint8 с формой (H, W, 3).

Результат:

Разобранный результат детекции в виде объекта Page, содержащего один Block с одной Line из объектов TextSpan. Каждый TextSpan содержит координаты полигона, оценку уверенности и последовательный индекс order.

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

Page

Заметки

Метод выполняет: (1) загрузку изображения, (2) изменение размера и нормализацию, (3) инференс модели, (4) декодирование четырёхугольников, (5) NMS, (6) расширение боксов, (7) масштабирование координат обратно к исходному размеру.

Аугментация во время инференса (TTA):

Если при инициализации задано use_tta=True, метод выполняет инференс как на исходном, так и на горизонтально отражённом изображении, а затем объединяет результаты. Боксы из обоих представлений сопоставляются по IoU и объединяются через объединение координат с усреднением оценок. Это может улучшить детекцию текста у краёв изображения или частично видимого текста.

Для визуализации используйте внешнюю утилиту visualize_page:

>>> from manuscript.utils import visualize_page
>>> page = model.predict(img_path)
>>> vis_img = visualize_page(img, page)

Примеры

Выполнить инференс и получить структурированный результат:

>>> from manuscript.detectors import EAST
>>> model = EAST()
>>> img_path = r"example/ocr_example_image.jpg"
>>> page = model.predict(img_path)
>>> # Access first line's first text span
>>> first_text_span = page.blocks[0].lines[0].text_spans[0]
>>> print(f"Confidence: {first_text_span.detection_confidence}")

Визуализировать результаты отдельно:

>>> from manuscript.utils import visualize_page, read_image
>>> page = model.predict(img_path)
>>> img = read_image(img_path)
>>> vis_img = visualize_page(img, page)
>>> vis_img.show()
static train(train_images, train_anns, val_images, val_anns, *, experiment_root='./experiments', model_name='resnet_quad', backbone_name='resnet50', pretrained_backbone=True, freeze_first=False, target_size=1024, score_geo_scale=None, score_map_shrink_ratio=0.3, epochs=500, batch_size=3, accumulation_steps=1, lr=0.0001, lr_scheduler='cosine_restart', lr_scheduler_params=None, augmentation_config=None, grad_clip=5.0, early_stop=100, use_sam=False, sam_type='asam', use_lookahead=False, use_ema=False, use_multiscale=True, use_ohem=False, ohem_ratio=0.5, use_focal_geo=True, focal_gamma=2.0, resume_from=None, val_interval=1, num_workers=0, log_collage=True, device=None)[исходный код]

Обучение модели EAST на пользовательских датасетах.

Параметры:
  • train_images (str, Path or sequence of paths) – Путь(и) к каталогам с обучающими изображениями.

  • train_anns (str, Path or sequence of paths) – Путь(и) к JSON-файлам аннотаций в формате COCO, соответствующим train_images.

  • val_images (str, Path or sequence of paths) – Путь(и) к каталогам с валидационными изображениями.

  • val_anns (str, Path or sequence of paths) – Путь(и) к JSON-файлам аннотаций в формате COCO, соответствующим val_images.

  • experiment_root (str, optional) – Базовый каталог, в котором будут создаваться папки экспериментов. По умолчанию "./experiments".

  • model_name (str, optional) – Имя папки внутри experiment_root для логов и чекпоинтов. По умолчанию "resnet_quad".

  • backbone_name ({"resnet50", "resnet101"}, optional) – Используемая архитектура backbone. Варианты: - "resnet50" — ResNet-50 (быстрее, меньше параметров) - "resnet101" — ResNet-101 (медленнее, больше ёмкость) По умолчанию "resnet50".

  • pretrained_backbone (bool, optional) – Использовать веса backbone, предобученные на ImageNet. По умолчанию True.

  • freeze_first (bool, optional) – Заморозить нижние слои backbone. По умолчанию True.

  • target_size (int, optional) – Изменять размер короткой стороны изображений до этого значения. По умолчанию 1024.

  • score_geo_scale (float, optional) – Множитель для восстановления исходных координат из карт оценок/геометрии. Если None, автоматически берётся из модели. По умолчанию None.

  • score_map_shrink_ratio (float, optional) – Коэффициент сжатия для карты оценок. По умолчанию 0.3.

  • epochs (int, optional) – Количество эпох обучения. По умолчанию 500.

  • batch_size (int, optional) – Размер батча на GPU. По умолчанию 3.

  • accumulation_steps (int, optional) – Количество шагов накопления градиента. Эффективный размер батча будет batch_size * accumulation_steps. Используйте это для обучения с большими эффективными батчами при ограниченной памяти GPU. Например: - batch_size=2, accumulation_steps=4 → эффективный размер батча = 8 - batch_size=1, accumulation_steps=8 → эффективный размер батча = 8 По умолчанию 1 (без накопления).

  • lr (float, optional) – Скорость обучения. По умолчанию 1e-3.

  • lr_scheduler ({"cosine_restart", "cosine", "linear", "step", "exponential", "plateau", "none"}, optional) – Тип планировщика скорости обучения. По умолчанию "cosine_restart".

  • lr_scheduler_params (dict, optional) – Дополнительные параметры планировщика (зависят от его типа). Часто используемые ключи: - cosine_restart: t0, t_mult, eta_min - cosine: t_max, eta_min - linear: final_factor - step: step_size, gamma - exponential: gamma - plateau: factor, patience, min_lr

  • augmentation_config (dict, optional) – Полная конфигурация аугментаций, передаваемая в EASTDataset. Это предпочтительное место для всех настроек аугментации. Любые ключи здесь переопределяют соответствующие значения по умолчанию. Поддерживаются, в частности: - quad_source для преобразования COCO-полигона в quad: "auto" сохраняет 4-точечные полигоны и для более длинных полигонов переходит к "min_area_rect", "as_is" принимает только 4-точечные полигоны, а "min_area_rect" всегда строит прямоугольник минимальной площади - flip_prob, color_jitter - small_rotate_prob, small_rotate_deg - perspective_prob, perspective_scale - blur_prob, blur_ksize_range - noise_prob, noise_std, salt_pepper_prob - jpeg_prob, jpeg_quality_range - shading_prob, shading_strength - gamma_prob, gamma_range - downscale_prob, downscale_range - negative_prob

  • grad_clip (float, optional) – Значение отсечения градиента (L2-норма). По умолчанию 5.0.

  • early_stop (int, optional) – Терпение (число эпох без улучшений) для ранней остановки. По умолчанию 100.

  • use_sam (bool, optional) – Включить оптимизатор SAM. По умолчанию True.

  • sam_type ({"sam", "asam"}, optional) – Используемый вариант SAM. По умолчанию "asam".

  • use_lookahead (bool, optional) – Обернуть оптимизатор в Lookahead. По умолчанию True.

  • use_ema (bool, optional) – Поддерживать EMA-версию весов модели. По умолчанию False.

  • use_multiscale (bool, optional) – Случайное мульти-масштабное обучение. По умолчанию True.

  • use_ohem (bool, optional) – Онлайн-отбор сложных примеров (OHEM). По умолчанию True.

  • ohem_ratio (float, optional) – Доля сложных негативных примеров для OHEM. По умолчанию 0.5.

  • use_focal_geo (bool, optional) – Применять focal loss к геометрическим каналам. По умолчанию True.

  • focal_gamma (float, optional) – Параметр gamma для focal loss геометрии. По умолчанию 2.0.

  • resume_from (str or Path, optional) – Возобновить обучение из предыдущего эксперимента или инициализировать его из локальных весов: a) каталог эксперимента, b) …/checkpoints/, c) прямой путь к чекпоинту с полным состоянием (last_state.pt). Если передан файл только с весами (например, best.pth), веса модели будут загружены, но обучение начнётся в текущем каталоге experiment_root/model_name. По умолчанию None.

  • val_interval (int, optional) – Запускать валидацию каждые N эпох. По умолчанию 1.

  • num_workers (int, optional) – Количество рабочих процессов для загрузки данных. Установите 0 для однопроцессной загрузки (безопаснее на Windows). По умолчанию 0.

  • log_collage (bool, optional) – Нужно ли генерировать и логировать коллажи валидационных изображений в TensorBoard. Отключите, чтобы сэкономить память на GPU с ограниченным объёмом VRAM. По умолчанию True.

  • device (torch.device, optional) – Устройство CUDA или CPU. Автоматически выбирается, если None.

Результат:

Лучшие веса модели (EMA, если включено, иначе базовая модель).

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

torch.nn.Module

Примеры

Обучение на двух датасетах с валидацией:

>>> from manuscript.detectors import EAST
>>>
>>> train_images = [
...     "/data/archive/train_images",
...     "/data/ddi/train_images"
... ]
>>> train_anns = [
...     "/data/archive/train.json",
...     "/data/ddi/train.json"
... ]
>>> val_images = [
...     "/data/archive/test_images",
...     "/data/ddi/test_images"
... ]
>>> val_anns = [
...     "/data/archive/test.json",
...     "/data/ddi/test.json"
... ]
>>>
>>> best_model = EAST.train(
...     train_images=train_images,
...     train_anns=train_anns,
...     val_images=val_images,
...     val_anns=val_anns,
...     backbone_name="resnet50",
...     target_size=256,
...     epochs=20,
...     batch_size=4,
...     use_sam=False,
...     freeze_first=False,
...     val_interval=3,
... )
>>> print("Best checkpoint loaded:", best_model)

Настройка аугментаций через augmentation_config:

>>> aug_cfg = {
...     "quad_source": "auto",
...     "flip_prob": 0.02,
...     "color_jitter": (0.1, 0.1, 0.1, 0.05),
...     "small_rotate_prob": 0.15,
...     "small_rotate_deg": 1.5,
...     "perspective_prob": 0.08,
...     "perspective_scale": 0.015,
...     "blur_prob": 0.1,
...     "blur_ksize_range": (3, 5),
...     "noise_prob": 0.1,
...     "noise_std": 0.008,
...     "salt_pepper_prob": 0.0005,
...     "jpeg_prob": 0.1,
...     "jpeg_quality_range": (75, 95),
...     "shading_prob": 0.1,
...     "shading_strength": 0.1,
...     "gamma_prob": 0.2,
...     "gamma_range": (0.95, 1.05),
...     "downscale_prob": 0.1,
...     "downscale_range": (0.7, 0.95),
...     "negative_prob": 0.05,
... }
>>> best_model = EAST.train(
...     train_images=train_images,
...     train_anns=train_anns,
...     val_images=val_images,
...     val_anns=val_anns,
...     augmentation_config=aug_cfg,
... )
static export(weights_path, output_path, backbone_name=None, input_size=1280, opset_version=14, simplify=True)[исходный код]

Экспорт модели EAST из PyTorch в формат ONNX.

Этот метод конвертирует обученную модель EAST из PyTorch в формат ONNX, который может использоваться для более быстрого инференса с ONNX Runtime. Экспортированную модель можно загрузить с помощью EAST(weights_path="model.onnx", use_onnx=True).

Параметры:
  • weights_path (str or Path) – Путь к файлу весов модели PyTorch (.pth).

  • output_path (str or Path) – Путь, по которому будет сохранена модель ONNX (.onnx).

  • backbone_name ({"resnet50", "resnet101"}, optional) – Архитектура backbone модели. Если None, будет автоматически определена из чекпоинта. Должна совпадать с архитектурой, использованной при обучении. По умолчанию None (автоопределение).

  • input_size (int, optional) – Размер входного изображения (высота и ширина). Модель принимает изображения формы (batch, 3, input_size, input_size). По умолчанию 1280.

  • opset_version (int, optional) – Версия opset ONNX для экспорта. По умолчанию 14.

  • simplify (bool, optional) – Если True, применяется упрощение графа ONNX с помощью onnx-simplifier для оптимизации модели. Требуется пакет onnx-simplifier. По умолчанию True.

Результат:

Модель ONNX сохраняется в output_path.

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

None

Исключение:
  • ImportError – Если необходимые пакеты (torch, onnx) не установлены.

  • FileNotFoundError – Если weights_path не существует.

  • ValueError – Если backbone_name не соответствует архитектуре чекпоинта.

Заметки

Экспортированная модель ONNX имеет два выхода:

  • score_map: карта уверенности текста формы (batch, 1, H, W)

  • geo_map: карта геометрии формы (batch, 8, H, W)

Модель поддерживает динамический размер батча и размеры изображения через настройку динамических осей.

Автоматическое определение backbone:

Метод автоматически определяет архитектуру backbone из чекпоинта, анализируя количество параметров в layer4. Это предотвращает несоответствия между чекпоинтом и архитектурой, которые могли бы привести к некорректному экспорту.

Примеры

Экспорт с автоматическим определением backbone:

>>> from manuscript.detectors import EAST
>>> EAST.export(
...     weights_path="east_resnet50.pth",
...     output_path="east_model.onnx"
... )
Auto-detected backbone: resnet50
Exporting to ONNX (opset 14)...
[OK] ONNX model saved to: east_model.onnx

Экспорт с явным указанием backbone:

>>> EAST.export(
...     weights_path="custom_weights.pth",
...     output_path="custom_model.onnx",
...     backbone_name="resnet101",
...     input_size=1024,
...     simplify=False
... )

Использование экспортированной модели для инференса:

>>> detector = EAST(
...     weights_path="east_model.onnx",
...     use_onnx=True,
...     device="cuda"
... )
>>> result = detector.predict("image.jpg")

См. также

EAST.__init__

Инициализация детектора EAST с поддержкой ONNX с использованием use_onnx=True.

class manuscript.detectors.YOLO(weights=None, config=None, device=None, force_download=False, *, score_thresh=0.1, class_ids=None, target_size=None, axis_aligned_output=True, containment_threshold=0.9, **kwargs)[исходный код]

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

Инициализация текстового детектора YOLO с использованием ONNX Runtime.

Параметры:
  • weights (str or Path, optional) – Путь или идентификатор для весов модели ONNX. Поддерживает: локальный путь, HTTP/HTTPS URL, GitHub release, Google Drive, имя пресета ("yolo26s_obb_text_g1" или "yolo26x_obb_text_g1"), None — автозагрузка пресета по умолчанию (yolo26x_obb_text_g1). ONNX-модель может возвращать либо обычные детекции в формате xyxy, score, class_id с формой [N, 6] / [1, N, 6], либо ориентированные детекции в формате cx, cy, w, h, score, class_id, angle с формой [N, 7] / [1, N, 7].

  • config (str or Path, optional) – Путь или идентификатор YAML-конфигурации модели. Поддерживаются те же URL-схемы, что и для weights. Если None, предпринимается попытка найти YAML-файл рядом с весами или использовать конфиг пресета из config_registry.

  • device (str, optional) – Устройство вычислений: "cuda", "coreml" или "cpu". Если None, автоматически выбирается CPU. Для ускорения GPU/CoreML: - CUDA (NVIDIA): pip install onnxruntime-gpu - CoreML (Apple Silicon M1/M2/M3): pip install onnxruntime-silicon По умолчанию None (CPU).

  • score_thresh (float, optional) – Порог уверенности, применяемый к выходам модели после ONNX-инференса и до дополнительного этапа очистки по вложенности. По умолчанию 0.1.

  • class_ids (sequence of int or None, optional) – Необязательный белый список class ID, которые нужно сохранить. Если None, сохраняются все классы. По умолчанию None.

  • target_size (int or None, optional) – Квадратный размер инференса, используемый при letterbox-предобработке. Перед ONNX-инференсом изображения приводятся к размеру (target_size, target_size). Если None, детектор пытается прочитать imgsz из YAML-конфига рядом с весами или из конфигурации пресета. Для неизвестных или пользовательских весов без YAML используется 1280.

  • axis_aligned_output (bool, optional) – Если True (по умолчанию), OBB-детекции преобразуются в обычные осеориентированные прямоугольники. Если False, OBB-детекции возвращаются как повёрнутые полигоны через page / polygons и как строки cx, cy, w, h, score, class_id, angle в boxes. Для моделей без OBB этот флаг не влияет на результат.

  • containment_threshold (float or None, optional) – Удаляет меньший бокс, если как минимум такая доля его площади покрыта большим боксом. Например, 0.9 удаляет боксы, которые покрыты на 90% и более. Установите None, чтобы отключить эту дополнительную очистку. По умолчанию 0.9.

  • force_download (bool)

Заметки

Класс предоставляет один основной публичный метод:

  • predict — выполняет инференс на одном изображении и возвращает детекции.

Доступные пресеты:

  • "yolo26s_obb_text_g1" - OBB-детектор текста YOLO26-S

  • "yolo26x_obb_text_g1" - OBB-детектор текста YOLO26-X

Методы

__call__(*args, **kwargs)

Вызов объекта как функции.

predict(img_or_path)

Запустить YOLO ONNX-инференс на одном изображении и вернуть обнаруженную структуру страницы.

runtime_providers()

Получение провайдеров выполнения ONNX Runtime в зависимости от устройства.

train(*args, **kwargs)

export

default_weights_name: str | None = 'yolo26x_obb_text_g1'
default_target_size = 1280
pretrained_registry: Dict[str, str] = {'yolo26s_obb_text_g1': 'https://github.com/konstantinkozhin/manuscript-ocr/releases/download/v0.1.0/yolo26s_obb_text_g1.raw.onnx', 'yolo26x_obb_text_g1': 'https://github.com/konstantinkozhin/manuscript-ocr/releases/download/v0.1.0/yolo26x_obb_text_g1.raw.onnx'}
config_registry: Dict[str, str] = {'yolo26s_obb_text_g1': 'https://github.com/konstantinkozhin/manuscript-ocr/releases/download/v0.1.0/yolo26s_obb_text_g1.raw.yaml', 'yolo26x_obb_text_g1': 'https://github.com/konstantinkozhin/manuscript-ocr/releases/download/v0.1.0/yolo26x_obb_text_g1.raw.yaml'}
__init__(weights=None, config=None, device=None, force_download=False, *, score_thresh=0.1, class_ids=None, target_size=None, axis_aligned_output=True, containment_threshold=0.9, **kwargs)[исходный код]
Параметры:
predict(img_or_path)[исходный код]

Запустить YOLO ONNX-инференс на одном изображении и вернуть обнаруженную структуру страницы.

Параметры:

img_or_path (str or pathlib.Path or numpy.ndarray) – Путь к файлу изображения или RGB-изображение в виде массива NumPy формата uint8 с формой (H, W, 3).

Результат:

Разобранный результат детекции в виде объекта Page, содержащего один Block с одной Line из объектов TextSpan.

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

Page

Примеры

Выполнить инференс и получить структурированный результат:

>>> from manuscript.detectors import YOLO
>>> model = YOLO(weights="yolo26x_obb_text_g1")
>>> page = model.predict("page.jpg")
>>> first_text_span = page.blocks[0].lines[0].text_spans[0]
>>> print(first_text_span.detection_confidence)

EAST: примечания по обучению

Детектор EAST в manuscript-ocr основан на архитектуре, предложенной в EAST: An Efficient and Accurate Scene Text Detector (Zhou et al., CVPR 2017). Процедура обучения существенно переработана по сравнению с оригиналом: изменены схема взвешивания потерь, пайплайн аугментаций, обработка четырёхугольных разметок и поддержка смешанных аннотаций. Предобученные веса получены авторами проекта.

Четырёхугольные области для обучения EAST

Обучение EAST ожидает цели в виде четырёхугольников. При загрузке полигонов COCO segmentation используйте augmentation_config["quad_source"] в EAST.train(...), чтобы управлять преобразованием полигонов в 4-точечные обучающие квады:

  • "auto" сохраняет готовые 4-точечные полигоны как есть и использует minAreaRect только для полигонов с большим числом вершин.

  • "as_is" принимает только 4-точечные полигоны и пропускает полигоны с другим числом вершин.

  • "min_area_rect" всегда строит прямоугольник минимальной площади и соответствует старому пути преобразования.