Конвейер

Основной высокоуровневый интерфейс для OCR-обработки.

class manuscript._pipeline.Pipeline(detector=None, recognizer=None, corrector=None, min_text_size=5, rotate_threshold=1.5)[исходный код]

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

Высокоуровневый OCR-конвейер, объединяющий детекцию, распознавание и коррекцию текста.

Класс Pipeline координирует детектор EAST, распознаватель TRBA и опциональный корректор текста для выполнения полного OCR-процесса: детекция → извлечение кропов → распознавание → коррекция → объединение результатов.

detector

Экземпляр детектора текста

тип:

EAST

recognizer

Экземпляр распознавателя текста

тип:

TRBA

corrector

Экземпляр корректора текста (None для пропуска коррекции)

тип:

BaseCorrector, опционально

min_text_size

Минимальный размер текстового бокса в пикселях (ширина и высота)

тип:

int

rotate_threshold

Порог соотношения сторон для автоматического поворота вертикального текста. Если height > width * rotate_threshold, изображение поворачивается на 90° по часовой стрелке.

тип:

float

Примеры

Создание конвейера с моделями по умолчанию:

>>> from manuscript import Pipeline
>>> pipeline = Pipeline()
>>> result = pipeline.predict("document.jpg")
>>> text = pipeline.get_text(result["page"])
>>> print(text)

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

>>> from manuscript import Pipeline
>>> from manuscript.detectors import EAST
>>> from manuscript.recognizers import TRBA
>>> detector = EAST(weights="east_50_g1", score_thresh=0.8)
>>> recognizer = TRBA(weights="trba_lite_g1", device="cuda")
>>> pipeline = Pipeline(detector=detector, recognizer=recognizer)

Создание конвейера с коррекцией текста:

>>> from manuscript import Pipeline
>>> from manuscript.correctors import CharLM
>>> corrector = CharLM()
>>> pipeline = Pipeline(corrector=corrector)

Отключение автоматического поворота вертикального текста:

>>> pipeline = Pipeline(rotate_threshold=0)
Атрибуты:
last_correction_page
last_detection_page
last_recognition_page
Параметры:
  • detector (EAST | None)

  • recognizer (TRBA | None)

  • corrector (BaseCorrector | None)

  • min_text_size (int)

  • rotate_threshold (float)

Методы

get_text(page)

Извлечение обычного текста из объекта Page.

predict(image[, recognize_text, vis, profile])

Запуск OCR-конвейера на одном изображении.

__init__(detector=None, recognizer=None, corrector=None, min_text_size=5, rotate_threshold=1.5)[исходный код]

Инициализация OCR-конвейера.

Параметры:
  • detector (EAST, optional) – Экземпляр детектора текста. Если None, создаётся детектор EAST по умолчанию.

  • recognizer (TRBA, optional) – Экземпляр распознавателя текста. Если None, создаётся распознаватель TRBA по умолчанию.

  • corrector (BaseCorrector, optional) – Text corrector instance. If None, no text correction is applied. The corrector receives a Page object after recognition and returns a corrected Page object.

  • min_text_size (int, optional) – Минимальный размер текста в пикселях. Боксы меньшего размера будут отфильтрованы перед распознаванием. По умолчанию 5.

  • rotate_threshold (float, optional) – Aspect ratio threshold for automatic rotation of vertical text. If height > width * rotate_threshold, the crop is rotated 90 degrees clockwise to convert vertical text to horizontal. Set to None or 0 to disable automatic rotation. Default is 1.5.

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

Запуск OCR-конвейера на одном изображении.

Параметры:
  • image (str, Path, numpy.ndarray, or PIL.Image) – Входное изображение. Может быть: - путь к файлу изображения (str или Path) - RGB-массив NumPy формы (H, W, 3) в формате uint8 - объект PIL Image

  • recognize_text (bool, optional) – Если True, выполняет детекцию и распознавание. Если False, выполняет только детекцию. По умолчанию True.

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

  • profile (bool, optional) – Если True, выводит информацию о времени выполнения каждого этапа конвейера. По умолчанию False.

Результат:

Если vis=False: словарь с ключами: - «page» : объект Page с результатами детекции/распознавания Если vis=True: кортеж (result_dict, vis_image)

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

dict or tuple

Примеры

Базовое использование:

>>> pipeline = Pipeline()
>>> result = pipeline.predict("document.jpg")
>>> page = result["page"]
>>> print(page.blocks[0].lines[0].words[0].text)

Только детекция:

>>> result = pipeline.predict("document.jpg", recognize_text=False)
>>> # Words will have polygon and detection_confidence but no text

С визуализацией:

>>> result, vis_img = pipeline.predict("document.jpg", vis=True)
>>> vis_img.show()

С профилированием:

>>> result = pipeline.predict("document.jpg", profile=True)
# Prints timing for each stage
get_text(page)[исходный код]

Извлечение обычного текста из объекта Page.

Параметры:

page (Page) – Объект Page с результатами распознавания.

Результат:

Извлечённый текст, в котором строки разделены переводами строки.

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

str

Примеры

>>> pipeline = Pipeline()
>>> result = pipeline.predict("document.jpg")
>>> text = pipeline.get_text(result["page"])
>>> print(text)
property last_detection_page: Page | None
property last_recognition_page: Page | None
property last_correction_page: Page | None