Распознаватели
Поддерживаемые распознаватели:
from manuscript.recognizers import TRBA, PPOCRRec, TrOCR
from manuscript.utils import create_page_from_image
recognizer = TRBA(weights="trba_lite_g2")
page, image = create_page_from_image("word.png", return_image=True)
result = recognizer.predict(page, image=image)
print(result.get_text())
TRBA
- class manuscript.recognizers.TRBA(weights=None, config=None, charset=None, device=None, force_download=False, rotate_threshold=1.5, region_preparer='bbox', region_preparer_options=None, min_text_size=5, batch_size=128, **kwargs)[исходный код]
Базовые классы:
BaseRecognizerМодель распознавания текста TRBA на 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"- Имя пресета:"trba_lite_g1"или"trba_base_g1"(из реестра моделей) -None: автоматически скачивается пресет по умолчанию (trba_lite_g1)config (str or Path, optional) – Путь или идентификатор JSON-конфигурации модели. Те же схемы URL, что и для
weights. Обязателен для локальных весов; пресеты предоставляют свою конфигурацию. Она должна содержатьrecognition_levels, например["word"]. Передайтеrecognition_levels=["word"], чтобы явно переопределить выбор.charset (str or Path, optional) – Путь или идентификатор файла набора символов. Обязателен для локальных весов; пресеты предоставляют свой файл набора символов.
device ({"cuda", "coreml", "cpu"}, optional) – Устройство для выполнения модели. При
Noneвыбирается CUDA, если ONNX Runtime сообщает о поддержке GPU, иначе CPU. Для ускорения GPU/CoreML: - CUDA (NVIDIA):pip install onnxruntime-gpu- CoreML (Apple Silicon): входит в стандартные пакеты ONNX Runtime для macOS; явно задайтеdevice="coreml". По умолчаниюNone(автоматический выбор).rotate_threshold (float or None, optional) – Порог соотношения сторон для поворота вертикальных фрагментов текстовых областей перед распознаванием. Если
height > width * rotate_threshold, фрагмент поворачивается на 90 градусов по часовой стрелке. Установите0илиNoneдля отключения. По умолчанию1.5.region_preparer ({"bbox", "polygon_mask", "quad_warp"} or callable, optional) – Способ вырезания регионов
Pageдля распознавания."bbox"вырезает ограничивающий прямоугольник со сторонами вдоль осей."polygon_mask"дополнительно скрывает пиксели за пределами полигона. Оба способа работают с произвольными полигонами."quad_warp"выпрямляет четырёхугольник с помощью перспективного преобразования. Можно также передать свою функцию, которая возвращает список подготовленных текстовых регионов. По умолчанию"bbox".region_preparer_options (dict or None, optional) – Необязательная конфигурация встроенных способов подготовки областей. По умолчанию
None. Типичные параметры:padдля"bbox"и"polygon_mask"илиoutput_size=(width, height)для"quad_warp". Полигоны не из четырёх точек при"quad_warp"по умолчанию вырезаются по bbox. Для"bbox"параметрыpadding_x,padding_y,inset_xиinset_y— неотрицательные доли исходного размера bbox с каждой стороны (по умолчанию 0). Отступы внутрь должны быть меньше 0.5. Расширение и сужение по одной оси несовместимы; относительные отступы несовместимы с ненулевым пиксельнымpad. Например,{"inset_y": 0.1}удаляет по 10% сверху и снизу до компенсации ориентации, не меняя геометрию Page. Другие способы подготовки отклоняют эти параметры.min_text_size (int, optional) – Минимальные ширина и высота ограничивающего прямоугольника региона вдоль осей в пикселях исходного изображения. Проверяются до добавления полей, обрезки по границам и преобразования перспективы. Регионы меньше порога пропускаются. По умолчанию
5.batch_size (int, optional) – Размер батча при распознавании, если в
predict(..., batch_size=...)не указано другое значение. По умолчанию128.recognition_levels (sequence of str, optional) – Регионы word, line или block для распознавания. Переопределяет уровни конфигурации модели; передаётся через
**kwargs.use_orientation (bool, optional) – Компенсировать известную ориентацию региона перед распознаванием. По умолчанию
True; передаётся через**kwargs. Известный угол имеет приоритет перед эвристикой пропорций. Чтобы отключить эвристику для неизвестной ориентации, отдельно задайтеrotate_threshold=None.**kwargs – Дополнительные параметры общего процесса распознавания.
force_download (bool)
- Исключение:
FileNotFoundError – Если указанные файлы не существуют.
ValueError – Если формат весов некорректен.
Примеры
Создание распознавателя с пресетом по умолчанию (автозагрузка):
>>> from manuscript.recognizers import TRBA >>> recognizer = TRBA()
Загрузка из локального ONNX-файла:
>>> recognizer = TRBA( ... weights="path/to/model.onnx", ... config="path/to/config.json", charset="path/to/charset.txt", ... )
Загрузка из релиза GitHub:
>>> recognizer = TRBA( ... weights="github://owner/repo/v1.0/model.onnx", ... config="github://owner/repo/v1.0/config.json", ... charset="github://owner/repo/v1.0/charset.txt", ... )
Принудительное выполнение на CPU:
>>> recognizer = TRBA(device="cpu")
- static train(train_csvs, train_roots, val_csvs=None, val_roots=None, *, exp_dir=None, charset_path=None, encoding='utf-8', img_h=64, img_w=256, max_len=25, hidden_size=256, num_encoder_layers=3, cnn_in_channels=3, cnn_out_channels=512, cnn_backbone='seresnet31', ctc_weight=0.3, ctc_weight_decay_epochs=50, ctc_weight_min=0.0, max_grad_norm=5.0, batch_size=32, epochs=20, lr=0.001, optimizer='AdamW', scheduler='OneCycleLR', weight_decay=0.0, momentum=0.9, val_interval=1, val_size=3000, train_proportions=None, num_workers=0, seed=42, resume_from=None, save_interval=None, device='cuda', freeze_cnn='none', freeze_enc_rnn='none', freeze_attention='none', pretrain_weights='default', recognition_levels=('word',), export_simplify=False, **extra_config)[исходный код]
Обучить модель распознавания текста TRBA на пользовательских датасетах.
- Параметры:
train_csvs (str, Path or sequence of paths) – Пути к обучающим CSV- или TSV-файлам. Первые два столбца содержат путь изображения (относительно
train_roots) и эталонный текст. Для CSV используйте заголовокfilename,textлибо не указывайте заголовок. Разделители определяются автоматически; в файлах.tsvиспользуется табуляция.train_roots (str, Path or sequence of paths) – Каталог обучающих изображений или список каталогов. Число каталогов должно совпадать с числом файлов в
train_csvs.val_csvs (str, Path, sequence of paths, or None, optional) – Пути к валидационным CSV-файлам того же формата, что и
train_csvs. ПриNoneвалидационные примеры выделяются из каждого обучающего набора поval_size. ЭлементNoneв списке включает такой способ для соответствующего набора. По умолчаниюNone.val_roots (str, Path, sequence of paths, or None, optional) – Каталог валидационных изображений или список каталогов. Если задан
val_csvs, число каталогов должно совпадать с числом файлов в нём. По умолчаниюNone.exp_dir (str or Path, optional) – Каталог эксперимента для чекпоинтов и журналов. При
Noneиспользуется первый свободный каталог с именемexp1,exp2и далее. По умолчаниюNone.charset_path (str or Path, optional) – Путь к файлу набора символов. Если
None, используется набор символов по умолчанию из пакета. По умолчаниюNone.encoding (str, optional) – Кодировка текста для чтения CSV-файлов. По умолчанию
"utf-8".img_h (int, optional) – Целевая высота входных изображений (в пикселях). По умолчанию 64.
img_w (int, optional) – Целевая ширина входных изображений (в пикселях). По умолчанию 256.
max_len (int, optional) – Максимальная длина последовательности для распознавания текста. По умолчанию 25.
hidden_size (int, optional) – Размер скрытого слоя RNN-энкодера/декодера. По умолчанию 256.
num_encoder_layers (int, optional) – Число двунаправленных слоёв LSTM в кодировщике. По умолчанию 3.
cnn_in_channels (int, optional) – Число входных каналов CNN-backbone. Стандартные обучающие преобразования и инференс используют трёхканальные RGB-изображения; для них оставляйте 3. По умолчанию 3.
cnn_out_channels (int, optional) – Количество выходных каналов CNN-бэкбона. По умолчанию 512.
cnn_backbone ({"seresnet31", "seresnet31-lite", "seresnetlite31v2"}, optional) – Вариант CNN-backbone.
"seresnet31"задаёт стандартный SE-ResNet-31,"seresnet31-lite"— облегчённый вариант с depthwise-свёртками,"seresnetlite31v2"— SEResNet31LiteV2. По умолчанию"seresnet31".ctc_weight (float, optional) – Начальный вес CTC-функции потерь во время обучения (CTC всегда используется для стабильности):
loss = attn_loss * (1 - ctc_weight) + ctc_loss * ctc_weight. Вес CTC уменьшается по эпохам. По умолчанию 0.3.ctc_weight_decay_epochs (int, optional) – Количество эпох, за которые вес CTC уменьшается до минимума. По умолчанию 50.
ctc_weight_min (float, optional) – Минимальное значение веса CTC после уменьшения. По умолчанию 0.0.
max_grad_norm (float, optional) – Максимальная норма градиента для клиппинга (предотвращает взрыв градиентов/NaN). По умолчанию 5.0.
batch_size (int, optional) – Размер батча обучения. По умолчанию 32.
epochs (int, optional) – Количество эпох обучения. По умолчанию 20.
lr (float, optional) – Скорость обучения. По умолчанию 1e-3.
optimizer ({"Adam", "SGD", "AdamW"}, optional) – Тип оптимизатора. По умолчанию
"AdamW".scheduler ({"ReduceLROnPlateau", "CosineAnnealingLR", "OneCycleLR", "None"}, optional) – Тип планировщика скорости обучения: -
"OneCycleLR"— одноцикловая политика с косинусным отжигом (рекомендуется, по умолчанию) -"ReduceLROnPlateau"— снижение LR при плато валидационной ошибки -"CosineAnnealingLR"— косинусный отжиг по эпохам -"None"илиNone— постоянная скорость обучения По умолчанию"OneCycleLR".weight_decay (float, optional) – Коэффициент L2-регуляризации (weight decay). По умолчанию 0.0.
momentum (float, optional) – Параметр momentum для оптимизатора SGD. По умолчанию 0.9.
val_interval (int, optional) – Выполнять валидацию каждые N эпох. По умолчанию 1.
val_size (int, optional) – Число примеров, выделяемых из каждого обучающего набора, для которого нет отдельной валидации. В каждом таком наборе должно быть больше
val_sizeдопустимых примеров, чтобы остались данные для обучения. Отдельные валидационные наборы используются целиком. По умолчанию 3000.train_proportions (sequence of float, optional) – Пропорции выборки из нескольких обучающих наборов; длина должна совпадать с
train_csvs. Значения нормализуются до суммы 1.0. ПриNoneнаборы объединяются и перемешиваются, поэтому их вклад зависит от размера. По умолчаниюNone.num_workers (int, optional) – Количество рабочих процессов для загрузки данных. По умолчанию 0.
seed (int, optional) – Начальное состояние генераторов случайных чисел (seed) для воспроизводимости результатов. По умолчанию 42.
resume_from (str or Path, optional) – Путь к файлу чекпоинта для возобновления обучения. По умолчанию
None.save_interval (int, optional) – Сохранять последний чекпоинт каждые N эпох и на последней эпохе. При None сохранение следует за валидацией. Лучшие чекпоинты всегда сохраняются по результатам валидации.
device ({"cuda", "cpu"}, optional) – Устройство для обучения. По умолчанию
"cuda".freeze_cnn ({"none", "partial", "full"}, optional) – Политика заморозки CNN.
"partial"замораживает conv0 и слои 1–3; layer4 и conv_out остаются обучаемыми."full"замораживает всю CNN;"all"— его синоним. По умолчанию"none".freeze_enc_rnn ({"none", "partial", "full"}, optional) – Политика заморозки RNN-кодировщика.
"partial"замораживает первый блок BiLSTM."full"замораживает весь RNN-кодировщик;"all"— его синоним. По умолчанию"none".freeze_attention ({"none", "partial", "full"}, optional) – Политика заморозки модуля внимания.
"partial"замораживает attention_cell у attention-декодера; для PARSeq — все параметры декодера, кроме generator."full"замораживает весь модуль;"all"— его синоним. По умолчанию"none".pretrain_weights (str, Path, bool, or None, optional) – Начальные предобученные веса: -
"default"илиTrue— использовать чекпоинтtrba_lite_g1из реестра -NoneилиFalse— обучение с нуля - str/Path — путь или URL пользовательских весов По умолчанию"default".recognition_levels (sequence of str, optional) – Регионы word, line или block для распознавания при инференсе. Сохраняются в конфигурации модели; не меняют обучающие примеры и не создают геометрию регионов. По умолчанию
("word",).export_simplify (bool, optional) – Упростить автоматически экспортированный ONNX-граф с помощью onnxsim. По умолчанию False: нативное падение упрощателя в некоторых окружениях нельзя перехватить как исключение Python. Проверка модели остаётся включённой.
**extra_config (dict, optional) – Дополнительные параметры конфигурации, передаваемые в настройки обучения.
- Результат:
Лучшие валидационные метрики (
val_accиval_loss) иexp_dir. Веса и чекпоинты для возобновления обучения записываются вexp_dir.- Тип результата:
Примеры
Обучение на одном датасете с валидацией:
>>> from manuscript.recognizers import TRBA >>> >>> training = TRBA.train( ... train_csvs="data/train.csv", ... train_roots="data/train_images", ... val_csvs="data/val.csv", ... val_roots="data/val_images", ... exp_dir="./experiments/trba_exp1", ... epochs=50, ... batch_size=64, ... img_h=64, ... img_w=256, ... ) >>> print(f"Training results: {training}")
Обучение на нескольких датасетах с пользовательскими пропорциями:
>>> train_csvs = ["data/dataset1/train.csv", "data/dataset2/train.csv"] >>> train_roots = ["data/dataset1/images", "data/dataset2/images"] >>> train_proportions = [0.7, 0.3] # 70% from dataset1, 30% from dataset2 >>> >>> training = TRBA.train( ... train_csvs=train_csvs, ... train_roots=train_roots, ... train_proportions=train_proportions, ... val_csvs="data/val.csv", ... val_roots="data/val_images", ... epochs=100, ... lr=5e-4, ... optimizer="AdamW", ... weight_decay=1e-4, ... )
Возобновление обучения из чекпоинта:
>>> training = TRBA.train( ... train_csvs="data/train.csv", ... train_roots="data/train_images", ... resume_from="experiments/trba_exp1/last_ckpt.pth", ... epochs=100, ... )
Дообучение с предобученных весов с замороженным CNN:
>>> training = TRBA.train( ... train_csvs="data/finetune.csv", ... train_roots="data/finetune_images", ... pretrain_weights="default", ... freeze_cnn="full", ... epochs=20, ... lr=1e-4, ... )
Обучение с использованием CTC для стабильности (всегда включено):
>>> training = TRBA.train( ... train_csvs="data/train.csv", ... train_roots="data/train_images", ... optimizer="AdamW", ... scheduler="OneCycleLR", ... lr=1e-3, ... ctc_weight=0.3, ... ctc_weight_decay_epochs=50, ... max_grad_norm=5.0, ... epochs=100, ... )
- static export(weights_path, config_path, charset_path, output_path, opset_version=14, simplify=True)[исходный код]
Экспортировать модель TRBA из PyTorch в формат ONNX.
Метод преобразует обученную модель TRBA из PyTorch в ONNX для ускоренного инференса через ONNX Runtime. Экспортированную модель нужно загружать с соответствующими конфигурацией и набором символов:
TRBA(weights="model.onnx", config="config.json", charset="charset.txt").- Параметры:
weights_path (str or Path) – Путь к файлу весов модели PyTorch (.pth).
config_path (str or Path) – Путь к JSON-файлу конфигурации модели. Используется для определения архитектуры модели (img_h, img_w, max_len, hidden_size и т. д.).
charset_path (str or Path) – Путь к файлу набора символов (charset.txt). Используется для определения количества классов модели.
output_path (str or Path) – Путь для сохранения ONNX-модели (.onnx).
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илиconfig_pathне существуют.
Примеры
Экспорт модели TRBA в ONNX:
>>> from manuscript.recognizers import TRBA >>> TRBA.export( ... weights_path="experiments/best_model/best_acc_weights.pth", ... config_path="experiments/best_model/config.json", ... charset_path="configs/charset.txt", ... output_path="trba_model.onnx" ... ) Loading TRBA model... === TRBA ONNX Export === Max decoding length: 40 Input size: 64x256 [OK] ONNX model saved to: trba_model.onnx
Экспорт с пользовательским opset:
>>> TRBA.export( ... weights_path="model.pth", ... config_path="config.json", ... charset_path="charset.txt", ... output_path="model.onnx", ... opset_version=16, ... simplify=False ... )
Использование экспортированной модели для инференса:
>>> from manuscript.detectors import EAST >>> from manuscript.utils import read_image >>> recognizer = TRBA( ... weights="trba_model.onnx", config="config.json", charset="charset.txt", ... ) >>> detector = EAST() >>> image = read_image("page.jpg") >>> page = detector.predict(image) >>> result = recognizer.predict(page, image=image)
См. также
TRBA.__init__Инициализация распознавателя TRBA с ONNX-моделью.
- TRBA.predict(page, image=None, batch_size=None, debug_save_dir=None, profile=False, return_raw=False)
Вернуть копию Page с распознанным текстом и уверенностью для его регионов.
Если изображение не передано, возвращает копию страницы без изменений. Отладочные фрагменты сохраняются после вырезания и поворота, до подготовки входа модели. При return_raw=True возвращает словарь с Page, результатами распознавания регионов и метаданными модели.
PPOCRRec
- class manuscript.recognizers.PPOCRRec(weights=None, config=None, charset=None, device=None, force_download=False, rotate_threshold=1.5, region_preparer='bbox', region_preparer_options=None, min_text_size=5, batch_size=16, recognition_levels=None, use_space_char=None, rec_image_shape=None, sort_by_width=False, max_batch_pixels=None, **kwargs)[исходный код]
Базовые классы:
BaseRecognizerРаспознаёт текстовые регионы Page с помощью CTC-моделей ONNX.
При
region_preparer="bbox"параметрregion_preparer_optionsпринимаетpadding_x,padding_y,inset_xиinset_yкак доли исходного размера bbox с каждой стороны. Например,{"inset_y": 0.1}удаляет по 10% сверху и снизу до компенсации ориентации. Отступы внутрь должны быть меньше 0.5. Расширение и сужение по одной оси, а также относительные отступы и ненулевой пиксельныйpadнесовместимы. Геометрия Page сохраняется; другие встроенные способы вырезания отклоняют относительные отступы.sort_by_width=Trueобъединяет области близкой ширины в пакеты и восстанавливает исходный порядок результатов. Опция включается явно, поскольку изменение заполнения справа может влиять на CTC-предсказания.max_batch_pixelsнеобязательно ограничивает число входных пикселей с учётом заполнения (batch * height * width, без каналов), не меняя размер областей. Один вход, включая необходимое заполнение фиксированного ONNX-пакета, должен укладываться в бюджет, иначе вызывается ValueError. Это не ограничение всей памяти среды выполнения.batch_sizeостаётся максимальным размером динамического пакета.- Параметры:
- static create_config(source, *, recognition_levels=None, output_path=None)[исходный код]
Создаёт JSON-конфигурацию для запуска модели. По умолчанию выбирается распознавание строк.
- PPOCRRec.predict(page, image=None, batch_size=None, debug_save_dir=None, profile=False, return_raw=False)
Вернуть копию Page с распознанным текстом и уверенностью для его регионов.
Если изображение не передано, возвращает копию страницы без изменений. Отладочные фрагменты сохраняются после вырезания и поворота, до подготовки входа модели. При return_raw=True возвращает словарь с Page, результатами распознавания регионов и метаданными модели.
TrOCR
- class manuscript.recognizers.TrOCR(weights=None, config=None, decoder=None, tokenizer=None, device=None, force_download=False, rotate_threshold=None, region_preparer='bbox', region_preparer_options=None, min_text_size=5, batch_size=1, recognition_levels=None, generation=None, decoder_with_past=None, cuda_decoding='auto', **kwargs)[исходный код]
Базовые классы:
BaseRecognizerРаспознаёт текст с помощью ONNX-моделей энкодера и декодера.
- Параметры:
weights (str or Path) – ONNX-файл энкодера, URL или ключ модели в реестре. Пресета по умолчанию нет.
config (str or Path, optional) – Конфигурация модели: подготовка изображений, параметры генерации и пути к сопутствующим файлам. Для локальных весов её нужно указать явно; для моделей из реестра она загружается автоматически.
decoder (str or Path, optional) – Путь или URL ONNX-файла декодера. По умолчанию используется файл decoder из конфигурации или реестра.
tokenizer (str or Path, optional) – Путь или URL JSON-файла токенизатора. По умолчанию используется файл tokenizer из конфигурации или реестра. Для работы нужен пакет с дополнительными зависимостями
manuscript-ocr[trocr].device (str, optional) – Устройство для выполнения модели, например
"cpu"или"cuda". Если не задано, выбирается автоматически.force_download (bool, default False) – Скачивать удалённые артефакты заново, даже если они есть в кеше.
rotate_threshold (float, optional) – Поворачивать фрагменты, высота которых превышает ширину, умноженную на этот порог.
Noneотключает эту эвристику; известная ориентация по-прежнему учитывается.region_preparer (str or callable, default "bbox") – Способ вырезания регионов:
"bbox","polygon_mask","quad_warp"или пользовательская функция.region_preparer_options (dict, optional) – Дополнительные параметры подготовки фрагментов.
min_text_size (int, default 5) – Минимальная длина стороны фрагмента в пикселях; меньшие фрагменты пропускаются.
batch_size (int, default 1) – Размер батча фрагментов. Фактический размер зависит от ограничений ONNX-графов.
recognition_levels (sequence of str, optional) – Типы регионов для распознавания:
"word","line"или"block". По умолчанию используютсяrecognition_levelsиз конфигурации модели.generation (dict, optional) – Переопределение параметров генерации:
num_beams,max_length,length_penalty,no_repeat_ngram_sizeиearly_stopping.decoder_with_past (str or Path, optional) – Путь или URL ONNX-файла декодера с кешем для модели
kv_cache. По умолчанию используется файл из конфигурации или реестра.cuda_decoding ({"auto", "off", "required"}, default "auto") – Сохраняет состояния энкодера, логиты и KV-кеши на CUDA с помощью необязательных буферов Torch и привязки ввода-вывода ONNX. Требует графы KV-cache с динамическим пакетом, Torch с CUDA и поддержку DLPack в ORT. Установите
manuscript-ocr[gpu,trocr-cuda]. При отсутствии поддержки auto на CUDA выдаёт предупреждение и использует обычный путь; required вызывает исключение. CPU, CoreML и Web используют NumPy. Вычисления CUDA с плавающей точкой могут давать небольшие различия в оценках.**kwargs – Дополнительные параметры базового распознавателя, например
use_orientationиdebug_save_dir.
Примеры
>>> from manuscript.recognizers import TrOCR >>> from manuscript.utils import create_page_from_image >>> recognizer = TrOCR( ... weights="encoder.onnx", config="config.json", recognition_levels=["line"], ... ) >>> page, image = create_page_from_image( ... "line.png", region_type="line", return_image=True, ... ) >>> result = recognizer.predict(page, image=image) >>> print(result.get_text())
- static create_config(source, *, recognition_levels=None, output_path=None)[исходный код]
Задаёт уровни распознавания в существующей конфигурации модели.
- Параметры:
source (dict or str or Path) – Словарь конфигурации модели или путь к JSON-файлу.
recognition_levels (sequence of str, optional) – Типы регионов:
"word","line"или"block". Если не заданы, используется значение из исходной конфигурации, а при его отсутствии —["line"].output_path (str or Path, optional) – Сохранить полученную конфигурацию в этот JSON-файл.
- Результат:
Копия конфигурации с новыми настройками. Исходный словарь не меняется.
- Тип результата:
- TrOCR.predict(page, image=None, batch_size=None, debug_save_dir=None, profile=False, return_raw=False)
Вернуть копию Page с распознанным текстом и уверенностью для его регионов.
Если изображение не передано, возвращает копию страницы без изменений. Отладочные фрагменты сохраняются после вырезания и поворота, до подготовки входа модели. При return_raw=True возвращает словарь с Page, результатами распознавания регионов и метаданными модели.
MajorityVotingRecognizer
- class manuscript.recognizers.MajorityVotingRecognizer(models, *, parallel=False, memory_policy='keep')[исходный код]
Базовые классы:
ModelCompositionОбъединяет ответы независимых распознавателей: для каждого региона выбирает самый частый текстовый ответ.
- Параметры:
models (iterable of recognizers) – Список из одной или нескольких моделей с predict(page, image=None). Каждая получает свою копию Page и может менять только text и recognition_confidence у TextRegion. Структура дерева, порядок элементов, геометрия и остальные поля должны оставаться прежними.
parallel (bool, optional) – При True модели запускаются параллельно в потоках. По умолчанию False. Если голоса равны, приоритет определяется порядком моделей в списке, а не временем завершения. Модели получают общий массив изображения и не должны его менять.
memory_policy ({"keep", "sequential"}, optional) – По умолчанию сохраняет сессии. «sequential» освобождает сессии каждого участника после вызова, включая ошибки. Вложенные композиции наследуют политику. Требует close() у каждого участника и запрещает parallel=True. Общим участникам нужна внешняя блокировка.
Примеры
>>> from manuscript import Pipeline >>> recognizer = MajorityVotingRecognizer([model_a, model_b, model_c]) >>> pipeline = Pipeline(recognizer=recognizer) >>> result = pipeline.predict("document.jpg")
См. также
manuscript.recognizers.MedoidRecognizerВыбирает ответ с наименьшей суммой расстояний редактирования до остальных.
manuscript.StackПоследовательно применить модели к предыдущим результатам.
- predict(page, image=None, batch_size=None, *, return_raw=False, **kwargs)[исходный код]
Вернуть копию Page с объединёнными результатами распознавания.
- Параметры:
page (Page) – Дерево документа для распознавания; исходный объект не изменяется.
image (str, pathlib.Path, numpy.ndarray or PIL.Image.Image, optional) – Исходное изображение, загружаемое один раз для моделей, принимающих image.
batch_size (int or None, optional) – Размер батча для всех моделей. При None используются их собственные настройки.
return_raw (bool, optional) – При True вернуть словарь с page и записями голосования по регионам.
**kwargs – Передать поддерживаемые параметры predict; участники используют return_raw=False.
- Результат:
Итоговый Page или {«page»: Page, «voting»: records}. Записи содержат path, type, candidates, votes, winner, winning_votes, participating_models и total_models. Кандидаты содержат model_index, text, normalized_text и confidence. Отсутствующие ответы исключаются; без голосов winner равен None. Тензоры моделей не включаются.
- Тип результата:
- Исключение:
TypeError – Если вход или результат участника не является Page.
ValueError – Если дерево некорректно или участник меняет запрещённые поля. Ошибка контракта указывает модель, путь узла и изменённое поле.
Заметки
Исключения участников прерывают агрегацию. Модели могут работать с разными уровнями; тексты родителей и потомков агрегируются независимо. Сравнение использует NFC, нижний регистр и удаление внешних пробелов. Результат сохраняет наиболее частое написание с учётом регистра среди кандидатов, соответствующих победившему нормализованному тексту (NFC и удаление внешних пробелов). При равенстве выбирается первая модель. Необработанные голоса используют нормализованные ключи; normalized_winner указывает ключ, соответствующий winner с сохранённым регистром.
MedoidRecognizer
- class manuscript.recognizers.MedoidRecognizer(models, *, parallel=False, memory_policy='keep')[исходный код]
Базовые классы:
MajorityVotingRecognizerВыбирает из ответов моделей тот, который ближе всего к остальным.
- Параметры:
models (iterable of recognizers) – Список из одной или нескольких моделей с predict(page, image=None). Каждая получает свою копию Page и может менять только text и recognition_confidence у TextRegion. Остальные изменения вызывают ошибку.
parallel (bool, optional) – При True модели запускаются параллельно в потоках. По умолчанию False. При равных результатах приоритет определяется порядком моделей в списке.
memory_policy ({"keep", "sequential"}, optional) – По умолчанию сохраняет сессии. «sequential» освобождает сессии участников после каждого вызова, включая ошибки, и действует во вложенных композициях. Требует close() и parallel=False; общим участникам нужна внешняя синхронизация.
Примеры
>>> recognizer = MedoidRecognizer([model_a, model_b, model_c]) >>> result = recognizer.predict(page, image=image, return_raw=True) >>> scores = result["voting"][0]["distance_sums"]
См. также
MajorityVotingRecognizerВыбирает самый частый текстовый ответ по точному совпадению.
- MedoidRecognizer.predict(page, image=None, batch_size=None, *, return_raw=False, **kwargs)
Вернуть копию Page с объединёнными результатами распознавания.
- Параметры:
page (Page) – Дерево документа для распознавания; исходный объект не изменяется.
image (str, pathlib.Path, numpy.ndarray or PIL.Image.Image, optional) – Исходное изображение, загружаемое один раз для моделей, принимающих image.
batch_size (int or None, optional) – Размер батча для всех моделей. При None используются их собственные настройки.
return_raw (bool, optional) – При True вернуть словарь с page и записями голосования по регионам.
**kwargs – Передать поддерживаемые параметры predict; участники используют return_raw=False.
- Результат:
Итоговый Page или {«page»: Page, «voting»: records}. Записи содержат path, type, candidates, votes, winner, winning_votes, participating_models и total_models. Кандидаты содержат model_index, text, normalized_text и confidence. Отсутствующие ответы исключаются; без голосов winner равен None. Тензоры моделей не включаются.
- Тип результата:
- Исключение:
TypeError – Если вход или результат участника не является Page.
ValueError – Если дерево некорректно или участник меняет запрещённые поля. Ошибка контракта указывает модель, путь узла и изменённое поле.
Заметки
Исключения участников прерывают агрегацию. Модели могут работать с разными уровнями; тексты родителей и потомков агрегируются независимо. Сравнение использует NFC, нижний регистр и удаление внешних пробелов. Результат сохраняет наиболее частое написание с учётом регистра среди кандидатов, соответствующих победившему нормализованному тексту (NFC и удаление внешних пробелов). При равенстве выбирается первая модель. Необработанные голоса используют нормализованные ключи; normalized_winner указывает ключ, соответствующий winner с сохранённым регистром.