Детекторы
Поддерживаемые модели:
ConsensusWBFDetector
- class manuscript.detectors.ConsensusWBFDetector(detectors, *, weights=None, cluster_iou=0.5, consensus_fraction=0.5, minimum_votes=2, memory_policy='keep')[исходный код]
Базовые классы:
ModelCompositionОбъединяет детекции, подтверждённые достаточным числом независимых участников.
detectors— непустой упорядоченный итерируемый набор объектов сpredict(image) -> Page(или словарём сpage). Их Page должны использовать координаты и размеры исходного изображения. Все геометрические потомки считаются плоскими детекциями, сгруппированными по(type, label). Настройте эквивалентные метки у участников для сопоставления объектов.weights=Noneиспользует средние арифметические с равными весами для согласованного слияния рамок. Иначе задайте один конечный положительный вес на детектор. Веса влияют на представителей кластеров и итоговые координаты, но не на число голосов. Уверенность детекций не используется. Итоговая уверенность остаётся None.Детекторы выполняются в заданном порядке. На каждом шаге представители кластеров фиксируются, а пары по IoU жадно сопоставляются взаимно однозначно. Равенства разрешаются сортировкой по убыванию (IoU, индекс рамки, индекс кластера). Каждый детектор даёт не более одного голоса на кластер. Пустые ответы не уменьшают необходимое число голосов; ошибки прерывают работу. Дополнительный NMS не применяется. Алгоритм зависит от порядка участников.
cluster_iouиconsensus_fractionнаходятся в [0, 1],minimum_votes— положительное целое число. Необходимое число голосов равно максимуму из minimum_votes и ceil(число детекторов * consensus_fraction). Порог выше числа детекторов допустим и даёт пустой Page.memory_policyсоответствует композициям Pipeline и распознавателей: «keep» (по умолчанию) или «sequential»; второе значение требует close() у каждого участника. Pickle сохраняет вложенных участников, порядок, веса и параметры, если сами участники поддерживают сериализацию.- property required_votes
- predict(image, return_raw=False, *, return_masks=False, return_outputs=False)[исходный код]
Возвращает плоский Page или стандартные необработанные детекции с метаданными голосования.
Любой флаг возврата включает вывод словаря. Слияние не создаёт маски или тензоры моделей. Необработанные детекции содержат box, polygon, type, label, votes и detector_indices; индексы соответствуют заданному порядку участников.
- predict_batch(images, **kwargs)[исходный код]
Объединяет результаты каждого изображения независимо, в порядке входа; пустой итерируемый объект даёт [].
YOLO
- 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=None, containment_threshold=0.9, **kwargs)[исходный код]
Базовые классы:
BaseDetectorДетектор текста YOLO на ONNX Runtime.
- Параметры:
weights (str or Path, optional) – Путь или идентификатор весов ONNX-модели. Поддерживаются: - Локальный файл:
"path/to/model.onnx"- HTTP/HTTPS URL:"https://example.com/model.onnx"- Релиз GitHub:"github://owner/repo/tag/file.onnx"- Google Drive:"gdrive:FILE_ID"- Имя пресета:"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 (dict, str or Path, optional) – Словарь, путь или идентификатор конфигурации модели в JSON/YAML. Поддерживаются те же схемы URL, что и для
weights. ПриNoneиспользуется конфигурация из реестра моделей. Для локальных весов конфигурацию нужно задать явно. Обязательное полеregion_classesсопоставляет ID классов модели с полями элементов, например{0: {"type": "word"}, 1: {"type": "table"}}. Детекции возвращаются как плоский список дочерних элементов страницы; иерархию строит этап анализа структуры.device (str, optional) – Вычислительное устройство:
"cuda","coreml"или"cpu". При None выбирается CUDA, если ONNX Runtime сообщает о поддержке GPU, иначе CPU. Для ускорения GPU/CoreML: - CUDA (NVIDIA):pip install onnxruntime-gpu- CoreML (Apple Silicon): входит в стандартные пакеты ONNX Runtime для macOS; явно задайтеdevice="coreml". По умолчаниюNone(автоматический выбор).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. Изображение вписывается в
(target_size, target_size)перед ONNX-инференсом. ПриNoneзначениеimgszберётся из явно заданной конфигурации или конфигурации пресета. Соседние файлы автоматически не ищутся. Еслиimgszотсутствует, используется1280.axis_aligned_output (bool, optional, deprecated) – Устаревший параметр. При явно заданном
TrueOBB-детекции преобразуются в прямоугольники со сторонами вдоль осей в Page. По умолчанию сохраняются повёрнутые полигоны. Приreturn_raw=Trueкаждая записьdetectionsсохраняет исходныйpolygonи строкуboxв форматеcx, cy, w, h, score, class_id, angle. На модели без OBB параметр не влияет.containment_threshold (float or None, optional) – Удаляет меньший бокс, если не менее указанной доли его площади покрыто большим боксом того же класса. Например,
0.9удаляет боксы, покрытые на90%или более. ЗначениеNoneотключает эту дополнительную фильтрацию. По умолчанию0.9.force_download (bool)
- static create_config(source=None, *, imgsz=None, region_classes=None, output_path=None)[исходный код]
Создать JSON-конфигурацию инференса из обучающего YAML/JSON или явно заданных значений.
Сохраняются только размер входа и сопоставление классов. Класс 0 по умолчанию соответствует словам; для других моделей задайте
region_classes. Возвращает словарь дляYOLO(config=...)и при необходимости сохраняет его вoutput_path.Пример:
YOLO.create_config("args.yaml", output_path="model.json") YOLO.create_config(imgsz=1024, region_classes={0: {"type": "line"}})
- predict(img_or_path, return_raw=False, *, return_masks=False, return_outputs=False)[исходный код]
Запустить YOLO ONNX-инференс на одном изображении и вернуть обнаруженную структуру страницы.
- Параметры:
img_or_path (str or pathlib.Path or numpy.ndarray) – Путь к файлу изображения или RGB-изображение в виде массива NumPy формата
uint8с формой(H, W, 3).return_raw (bool, optional) – Вернуть словарь с Page и декодированными детекциями.
return_masks (bool, optional) – Включить вывод в виде словаря. YOLO не создаёт маски.
return_outputs (bool, optional) – Включить исходные именованные выходные тензоры ONNX и вывод в виде словаря.
- Результат:
Плоское дерево документа с размерами исходного изображения и элементами, чьи типы и метки заданы в
region_classes. При включении любого флага результата возвращаетpage,detections,image_sizeиmetadata, а по запросу —outputs.- Тип результата:
Примеры
Выполнить инференс и получить структурированный результат:
>>> from manuscript.detectors import YOLO >>> model = YOLO(weights="yolo26x_obb_text_g1") >>> page = model.predict("page.jpg") >>> print(page.children[0].detection_confidence)
EAST
- class manuscript.detectors.EAST(weights=None, device=None, force_download=False, *, config=None, 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=None, 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-модели. Поддерживаются: - Локальный файл:
"path/to/model.onnx"- HTTP/HTTPS URL:"https://example.com/model.onnx"- Релиз GitHub:"github://owner/repo/tag/file.onnx"- Google Drive:"gdrive:FILE_ID"- Имя пресета:"east_50_g1"-None: автоматически скачивается пресет по умолчанию (east_50_g1)device (str, optional) – Вычислительное устройство:
"cuda","coreml"или"cpu". При None выбирается CUDA, если ONNX Runtime сообщает о поддержке GPU, иначе CPU. Для ускорения GPU/CoreML: - CUDA (NVIDIA):pip install onnxruntime-gpu- CoreML (Apple Silicon): входит в стандартные пакеты ONNX Runtime для macOS; явно задайтеdevice="coreml". По умолчаниюNone(автоматический выбор).config (dict or path, optional) – Конфигурация сопоставления регионов. Обязательное поле
region_classesсопоставляет ID классов с полями элементов, например{"0": {"type": "word"}}. Если не задана, используется конфигурация из реестра. Для локальных весов путь к конфигурации нужно задать явно.target_size (int, optional) – Размер входного изображения для инференса. Изображения приводятся к
(target_size, target_size). Значение по умолчанию — 1280.expand_ratio_w (float, optional) – Коэффициент расширения обнаруженных боксов по горизонтали после NMS. По умолчанию 1.4.
expand_ratio_h (float, optional) – Коэффициент расширения обнаруженных боксов по вертикали после NMS. По умолчанию 1.5.
expand_power (float, optional) – Степень, от которой зависит расширение бокса с учётом его размера. При 1.0 маленькие и большие боксы расширяются одинаково; при значении меньше 1.0 сильнее расширяются маленькие, больше 1.0 — большие. Например, 0.5 рекомендуется для детекции символов. По умолчанию 0.6.
score_thresh (float, optional) – Порог уверенности для отбора кандидатов перед NMS. По умолчанию 0.6.
iou_threshold (float, optional) – Порог IoU для объединения на этапе locality-aware NMS. По умолчанию 0.05.
iou_threshold_standard (float, optional) – Порог IoU для стандартного NMS после локального объединения. При None используется iou_threshold. По умолчанию 0.05.
score_geo_scale (float, optional) – Коэффициент масштабирования при декодировании карт геометрии/оценок. По умолчанию 0.25.
quantization (int, optional) – Разрешение квантования координат точек при декодировании. По умолчанию 2.
axis_aligned_output (bool, optional, deprecated) – Устаревший параметр. Явное 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 с боксом отражённого изображения выше порога. По умолчанию 0.1.
force_download (bool)
- predict(img_or_path, return_raw=False, *, return_masks=False, return_outputs=False)[исходный код]
Запустить инференс EAST и вернуть обнаруженную структуру страницы.
- Параметры:
img_or_path (str or pathlib.Path or numpy.ndarray) – Путь к файлу изображения или RGB-изображение в виде массива NumPy формата
uint8с формой(H, W, 3).return_raw (bool)
return_masks (bool)
return_outputs (bool)
- Результат:
Результат детекции как плоское дерево настроенных текстовых регионов. Каждый регион содержит координаты полигона и уверенность детекции. Порядок задаётся последовательностью дочерних элементов; этап анализа структуры может установить порядок чтения.
- Тип результата:
Примеры
Выполнить инференс и получить структурированный результат:
>>> from manuscript.detectors import EAST >>> model = EAST() >>> img_path = r"example/ocr_example_image.jpg" >>> page = model.predict(img_path) >>> # Access the first detected region, when present >>> for region in page.children[:1]: ... print(f"Confidence: {region.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, detection_level='word', 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. По умолчанию
False.target_size (int, optional) – Изменить размер изображений до
(target_size, target_size)без сохранения пропорций. По умолчанию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-4.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_lraugmentation_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_probgrad_clip (float, optional) – Значение отсечения градиента (L2-норма). По умолчанию
5.0.early_stop (int, optional) – Число эпох без улучшения, после которого обучение останавливается. По умолчанию
100.use_sam (bool, optional) – Включить оптимизатор SAM. По умолчанию
False.sam_type ({"sam", "asam"}, optional) – Используемый вариант SAM. По умолчанию
"asam".use_lookahead (bool, optional) – Использовать Lookahead поверх оптимизатора. По умолчанию
False.use_ema (bool, optional) – Поддерживать EMA-версию весов модели. По умолчанию
False.use_multiscale (bool, optional) – Менять масштаб изображений случайным образом во время обучения. По умолчанию
True.use_ohem (bool, optional) – Использовать отбор сложных примеров во время обучения (OHEM). По умолчанию
False.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) …/чекпоинтs/, 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.
detection_level (str)
- Результат:
Модель после последней завершённой эпохи обучения: EMA, если включена, иначе основная модель. Лучшие валидационные веса сохраняются отдельно как
best_loss.pthиbest_dice.pthв каталогеcheckpointsэксперимента.- Тип результата:
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" ... ] >>> >>> trained_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("Model after the last completed epoch:", trained_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, ... } >>> trained_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, detection_level='word')[исходный код]
Экспорт модели EAST из PyTorch в формат ONNX.
Метод преобразует обученную модель EAST из PyTorch в ONNX для ускоренного инференса через ONNX Runtime. Экспортированная модель загружается через
EAST(weights="model.onnx", config="model.json"). Экспортёр сохраняет соответствующую конфигурацию рядом с ONNX-графом.- Параметры:
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.detection_level (str)
- Результат:
Модель 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.extractor.layer3в чекпоинт на наличиеlayer3.10. При наличии выбирается ResNet-101, иначе ResNet-50.Примеры
Экспорт с автоматическим определением 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="east_model.onnx", ... config="east_model.json", ... device="cuda" ... ) >>> result = detector.predict("image.jpg")
См. также
EAST.__init__Создать EAST с весами ONNX и соответствующей конфигурацией.
PPOCR
- class manuscript.detectors._ppocr.PPOCR(weights, config=None, device=None, threshold=None, box_threshold=None, unclip_ratio=None, limit_side_len=None, limit_type=None, force_download=False, *, runtime='auto', web_external_data=None)[исходный код]
Базовые классы:
BaseDetectorСоздать детектор текста PP-OCR DB на ONNX Runtime.
- Параметры:
weights (str or Path) – Совместимый файл ONNX-модели или ключ реестра моделей. Поддерживаются локальные файлы, HTTP/HTTPS URL,
github://owner/repo/tag/file.onnxиgdrive:FILE_ID. Пресета по умолчанию нет.config (dict, str or Path, optional) – Конфигурация DB-инференса или путь/идентификатор её файла JSON/YAML. Обязательна для локальных весов; пресеты предоставляют свою конфигурацию. Должна содержать
schema_version=1,task="text_detection",algorithm="DB"и соответствующие настройкиpreprocess/postprocess.region_classesдолжен сопоставлять класс переднего плана 0 с полями документа, например{0: {"type": "line"}}. Используйтеcreate_config()для подготовки конфигурации из поддерживаемого Paddle inference YAML или экспортированного JSON.device ({"cuda", "coreml", "cpu"}, optional) – Устройство для выполнения модели. При
Noneвыбирается CUDA, если ONNX Runtime сообщает о поддержке GPU, иначе CPU. На поддерживаемых системах macOS выбирайте CoreML явно. По умолчаниюNone.threshold (float or None, optional) – Порог вероятности пикселя в [0, 1] для выделения контуров переднего плана. При
Noneиспользуетсяpostprocess.thresholdиз конфигурации.box_threshold (float or None, optional) – Минимальная средняя вероятность внутри полигона-кандидата в [0, 1]. При
Noneиспользуетсяpostprocess.box_thresholdиз конфигурации.unclip_ratio (float or None, optional) – Неотрицательный коэффициент расширения полигона. Чем больше значение, тем сильнее расширяются регионы. При
Noneиспользуетсяpostprocess.unclip_ratio.limit_side_len (int or None, optional) – Опорная длина стороны при масштабировании в пикселях, не менее 32. Значение зависит от
limit_type. ПриNoneиспользуетсяpreprocess.limit_side_len.limit_type ({"min", "max", "resize_long"} or None, optional) – Правило масштабирования:
"min"увеличивает короткую сторону, если она меньше опорной длины;"max"уменьшает длинную сторону, если она больше;"resize_long"приводит длинную сторону к опорной длине. ПриNoneиспользуетсяpreprocess.limit_type.force_download (bool, optional) – Скачать артефакты заново вместо использования кеша. По умолчанию
False.
Примеры
Загрузить совместимые локальные веса и настроить пороги детекции:
>>> from manuscript.detectors._ppocr import PPOCR >>> detector = PPOCR( ... weights="model.onnx", config="config.json", ... threshold=0.3, box_threshold=0.6, device="cpu", ... ) >>> page = detector.predict("document.jpg")
- predict(img_or_path, return_raw=False, *, return_masks=False, return_outputs=False)[исходный код]
Вернуть настроенные плоские регионы с полными DB-полигонами в координатах исходного изображения.
- static create_config(source, *, region_classes=None, output_path=None)[исходный код]
Создать JSON-конфигурацию инференса из существующей конфигурации или локального каталога модели HF.
DB имеет один класс переднего плана (0), по умолчанию
line. Для моделей слов задайтеregion_classes={0: {"type": "word"}}. Зависимости для обучения при создании конфигурации не требуются.
RFDETR
- class manuscript.detectors._rfdetr.RFDETR(weights, config=None, device=None, score_thresh=None, class_ids=None, target_size=None, force_download=False, mask_threshold=None, *, runtime='auto', web_external_data=None)[исходный код]
Базовые классы:
BaseDetectorСоздать детектор или модель сегментации экземпляров RF-DETR на ONNX Runtime.
- Параметры:
weights (str or Path) – Совместимый файл ONNX-модели или ключ реестра моделей. Поддерживаются локальные файлы, HTTP/HTTPS URL,
github://owner/repo/tag/file.onnxиgdrive:FILE_ID. Пресета по умолчанию нет.config (dict, str or Path, optional) – Конфигурация инференса или путь/идентификатор её файла JSON/YAML. Обязательна для локальных весов; пресеты предоставляют свою конфигурацию.
class_namesсопоставляет ID выходных классов с именами, аregion_classes— выбранные ID с полями документа, например{0: {"type": "word"}}. Подготовка входа и имена тензоров должны соответствовать экспортированной модели.device ({"cuda", "coreml", "cpu"}, optional) – Устройство для выполнения модели. При
Noneвыбирается CUDA, если ONNX Runtime сообщает о поддержке GPU, иначе CPU. На поддерживаемых системах macOS выбирайте CoreML явно. По умолчаниюNone.score_thresh (float or None, optional) – Минимальная уверенность детектора от 0 до 1. При
Noneиспользуетсяscore_threshиз конфигурации, а при его отсутствии — 0.5.class_ids (sequence of int or None, optional) – ID классов, которые нужно сохранить. Каждый должен быть задан в
class_namesиregion_classes. ПриNoneиспользуетсяclass_idsиз конфигурации, а при его отсутствии — все сопоставленные ID регионов.target_size (int or None, optional) – Размер квадратного входа в пикселях без сохранения пропорций. При
Noneиспользуетсяtarget_sizeиз конфигурации или фиксированные размеры входа ONNX. Для динамических размеров изображения требуется явный размер. Указанное значение должно соответствовать фиксированной форме входа ONNX.force_download (bool, optional) – Скачать артефакты заново вместо использования кеша. По умолчанию
False.mask_threshold (float or None, optional) – Порог вероятности для выделения объектов на масках; строго больше 0 и меньше 1. При
Noneиспользуетсяmask_thresholdиз конфигурации, а при его отсутствии — 0.5. Применяется только к моделям с выходом масок.
Примеры
Загрузить совместимые локальные веса с соответствующей конфигурацией инференса:
>>> from manuscript.detectors._rfdetr import RFDETR >>> detector = RFDETR( ... weights="model.onnx", config="config.json", ... score_thresh=0.4, device="cpu", ... ) >>> page = detector.predict("document.jpg")
- predict(image, return_raw=False, *, return_masks=False, return_outputs=False)[исходный код]
Вернуть текстовый Page или компактные детекции; маски и тензоры включаются отдельно.
- static create_config(source, *, region_classes=None, output_path=None)[исходный код]
Сохранить настройки инференса и добавить структурные классы и углы.
Семантика классов задаётся явно, а не выводится из их имён. Устаревший фильтр только текстовых классов удалён; включаются все сопоставленные классы, если в источнике явно не задан фильтр
class_ids.
Mask2Former
- class manuscript.detectors._mask2former.Mask2Former(weights=None, config=None, device=None, force_download=False, *, score_threshold=None, mask_logit_threshold=None, nms_iou_threshold=None, min_mask_area=None, **kwargs)[исходный код]
Базовые классы:
BaseDetectorСоздать модель сегментации экземпляров Mask2Former на ONNX Runtime.
- Параметры:
weights (str or Path, optional) – Совместимый файл ONNX-модели или ключ реестра моделей. Поддерживаются локальные файлы, HTTP/HTTPS URL,
github://owner/repo/tag/file.onnxиgdrive:FILE_ID. ПриNoneвыбирается пресет по умолчаниюmask2former_line_v0_prevи скачиваются его дополнительные артефакты.config (dict, str or Path, optional) – Конфигурация инференса или путь/идентификатор её файла JSON/YAML. Обязательна для локальных весов; пресеты предоставляют свою конфигурацию.
region_classesсопоставляет ID выходных классов с полями документа, например{0: {"type": "line"}}. Нормализация, размер входа и имена тензоров должны соответствовать экспортированному графу.create_config()создаёт словарь с типичными значениями по умолчанию и явным сопоставлением классов.device ({"cuda", "coreml", "cpu"}, optional) – Устройство для выполнения модели. При
Noneвыбирается CUDA, если ONNX Runtime сообщает о поддержке GPU, иначе CPU. На поддерживаемых системах macOS выбирайте CoreML явно. По умолчаниюNone.force_download (bool, optional) – Скачать артефакты заново вместо использования кеша. По умолчанию
False.score_threshold (float or None, optional) – Минимальная уверенность в [0, 1], применяемая к вероятности класса и итоговой оценке (вероятность класса, умноженная на среднюю вероятность переднего плана маски). При
Noneиспользуется значение конфигурации, а при его отсутствии — 0.15.mask_logit_threshold (float or None, optional) – Порог логитов до sigmoid для создания бинарных масок; должен быть конечным числом. При
Noneиспользуется значение конфигурации, а при его отсутствии — 0.0.nms_iou_threshold (float or None, optional) – Порог IoU масок в [0, 1] для подавления пересекающихся детекций одного класса. При
Noneиспользуется значение конфигурации, а при его отсутствии — 0.5.min_mask_area (int or None, optional) – Минимальная площадь переднего плана в пикселях исходного изображения; положительное целое число. При
Noneиспользуется значение конфигурации, а при его отсутствии — 16.**kwargs – Дополнительные параметры, передаваемые в
BaseArtifactModel.
Примеры
Загрузить пресет для текстовых строк:
>>> from manuscript.detectors._mask2former import Mask2Former >>> detector = Mask2Former(weights="mask2former_line_v0_prev", device="cpu") >>> page = detector.predict("document.jpg")
Загрузить совместимые локальные веса с соответствующей конфигурацией:
>>> detector = Mask2Former(weights="model.onnx", config="config.json")
- static create_config(*, image_size=1024, mask_interpolation_size=384, image_mean=(0.485, 0.456, 0.406), image_std=(0.229, 0.224, 0.225), score_threshold=0.15, mask_logit_threshold=0.0, nms_iou_threshold=0.5, min_mask_area=16, region_classes=None, output_path=None)[исходный код]
Создать конфигурацию инференса; класс 0 по умолчанию соответствует текстовым строкам.
При необходимости сохранить JSON в
output_path. Возвращаемый словарь также можно передать напрямую вMask2Former(config=...).
- predict(image, return_raw=False, *, return_masks=False, return_outputs=False)[исходный код]