Конвейер
Основной высокоуровневый интерфейс для 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-процесса: детекция → извлечение кропов → распознавание → коррекция → объединение результатов.
- corrector
Экземпляр корректора текста (None для пропуска коррекции)
- тип:
BaseCorrector, опционально
- rotate_threshold
Порог соотношения сторон для автоматического поворота вертикального текста. Если
height > width * rotate_threshold, изображение поворачивается на 90° по часовой стрелке.- тип:
Примеры
Создание конвейера с моделями по умолчанию:
>>> 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
- Параметры:
Методы
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 toNoneor0to 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)
- Тип результата:
Примеры
Базовое использование:
>>> 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 с результатами распознавания.
- Результат:
Извлечённый текст, в котором строки разделены переводами строки.
- Тип результата:
Примеры
>>> pipeline = Pipeline() >>> result = pipeline.predict("document.jpg") >>> text = pipeline.get_text(result["page"]) >>> print(text)