Распознаватели

Поддерживаемые распознаватели:

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.

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

dict

Примеры

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

>>> 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, результатами распознавания регионов и метаданными модели.

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

Union[Page, Dict[str, Any]]

Параметры:

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, результатами распознавания регионов и метаданными модели.

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

Union[Page, Dict[str, Any]]

Параметры:

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-файл.

Результат:

Копия конфигурации с новыми настройками. Исходный словарь не меняется.

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

dict

TrOCR.predict(page, image=None, batch_size=None, debug_save_dir=None, profile=False, return_raw=False)

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

Если изображение не передано, возвращает копию страницы без изменений. Отладочные фрагменты сохраняются после вырезания и поворота, до подготовки входа модели. При return_raw=True возвращает словарь с Page, результатами распознавания регионов и метаданными модели.

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

Union[Page, Dict[str, Any]]

Параметры:

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. Тензоры моделей не включаются.

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

Page or dict

Исключение:
  • 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. Тензоры моделей не включаются.

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

Page or dict

Исключение:
  • TypeError – Если вход или результат участника не является Page.

  • ValueError – Если дерево некорректно или участник меняет запрещённые поля. Ошибка контракта указывает модель, путь узла и изменённое поле.

Заметки

Исключения участников прерывают агрегацию. Модели могут работать с разными уровнями; тексты родителей и потомков агрегируются независимо. Сравнение использует NFC, нижний регистр и удаление внешних пробелов. Результат сохраняет наиболее частое написание с учётом регистра среди кандидатов, соответствующих победившему нормализованному тексту (NFC и удаление внешних пробелов). При равенстве выбирается первая модель. Необработанные голоса используют нормализованные ключи; normalized_winner указывает ключ, соответствующий winner с сохранённым регистром.