Metadata-Version: 2.4
Name: manuscript-ocr
Version: 0.1.11
Summary: Detects and recognizes text in historical, archival and handwritten documents. Optimized for fast inference with ONNX Runtime (CPU/GPU/CoreML) and optional training with PyTorch. Supports plugging custom models via a simple API.
Author-email: Pavel Sherstnev <sherstpasha99@gmail.com>, Vlada Zhukovskaya <zhukovskaya.vlada00@gmail.com>, Konstantin Kozhin <i@konstantin-kozhin.ru>, Anna Pyataeva <anna4u.online@gmail.com>, Alina Nurimanova <alenkozavr@gmail.com>
Project-URL: Homepage, https://github.com/konstantinkozhin/manuscript-ocr
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: onnxruntime>=1.16
Requires-Dist: numpy>=1.21
Requires-Dist: opencv-python>=4.5.0
Requires-Dist: Pillow>=8.0.0
Requires-Dist: shapely>=1.8
Requires-Dist: scikit-image>=0.19
Requires-Dist: numba>=0.56
Requires-Dist: pydantic>=2.0
Requires-Dist: PyYAML>=6.0
Requires-Dist: tqdm>=4.60
Requires-Dist: gdown>=4.4
Provides-Extra: gpu
Provides-Extra: silicon
Provides-Extra: dev
Requires-Dist: torch>=1.13; extra == "dev"
Requires-Dist: torchvision>=0.14; extra == "dev"
Requires-Dist: onnx>=1.12; extra == "dev"
Requires-Dist: onnxsim>=0.4; extra == "dev"
Requires-Dist: ultralytics>=8.4.30; extra == "dev"
Requires-Dist: torch-optimizer>=0.1; extra == "dev"
Requires-Dist: evaluate>=0.4; extra == "dev"
Requires-Dist: jiwer>=2.2; extra == "dev"
Requires-Dist: matplotlib>=3.3; extra == "dev"
Requires-Dist: albumentations>=1.0; extra == "dev"
Requires-Dist: tensorboard>=2.4; extra == "dev"
Requires-Dist: pandas>=1.3.0; extra == "dev"
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: pytest-cov>=4; extra == "dev"
Requires-Dist: black>=22; extra == "dev"
Requires-Dist: flake8>=5; extra == "dev"
Requires-Dist: isort>=5.10; extra == "dev"
Requires-Dist: mypy>=0.991; extra == "dev"
Requires-Dist: sphinx>=5; extra == "dev"
Requires-Dist: sphinx-rtd-theme>=1; extra == "dev"
Requires-Dist: numpydoc>=1.5; extra == "dev"
Requires-Dist: sphinx-autodoc-typehints>=1.24; extra == "dev"
Requires-Dist: sphinxcontrib-mermaid>=0.9; extra == "dev"
Requires-Dist: build>=0.8; extra == "dev"
Requires-Dist: twine>=4; extra == "dev"
Dynamic: license-file


<img width="2028" height="496" alt="Frame 8" src="docs\logo.png" />

# Manuscript OCR

Manuscript OCR – открытый Python-фреймворк полного OCR/HTR-пайплайна для распознавания дореформенных рукописей на русском языке XVIII–XIX веков и современных текстов. Проект направлен на цифровизацию и анализ исторического текстового наследия с использованием разработанных методов, учитывающих устаревшую орфографию, сложную структуру страниц и вариативность почерков, и обеспечивающих высокую вычислительную эффективность на ограниченных ресурсах.

**[Онлайн-демо](https://huggingface.co/spaces/konstantinkozhin/Manuscript-OCR)** - попробовать Manuscript OCR в браузере  
**[Полная документация](https://konstantinkozhin.github.io/manuscript-ocr)** - English & Русский

<img src="example/collages/example_images_collage.png" alt="Пример результата Manuscript OCR" />

---

## Установка

```bash
pip install manuscript-ocr
```

## Минимальный пример

```python
from manuscript import Pipeline

# Инициализация с моделями по умолчанию (CPU)
pipeline = Pipeline()

# Обработка изображения
result = pipeline.predict("document.jpg")

# Извлечение текста
text = pipeline.get_text(result["page"])
print(text)
```

## Дополнительные варианты установки

### Для ускорения на GPU (NVIDIA CUDA)

```bash
# Удалите CPU-версию ONNX Runtime
pip uninstall onnxruntime

# Установите GPU-версию
pip install onnxruntime-gpu
```

### Для Apple Silicon (M1/M2/M3) с CoreML

```bash
# Удалите стандартную версию
pip uninstall onnxruntime

# Установите версию для Apple Silicon
pip install onnxruntime-silicon
```

### Dev-установка с обучением моделей

```bash
pip install manuscript-ocr[dev]
```

### Dev-установка для обучения на GPU (NVIDIA CUDA)

```bash
# Сначала установите manuscript-ocr[dev]
pip install manuscript-ocr[dev]

# Затем обновите PyTorch на GPU версию
pip install --upgrade torch torchvision --index-url https://download.pytorch.org/whl/cu118
```

> **Примечание:** GPU версии (ONNX Runtime GPU и PyTorch CUDA) пользователь устанавливает вручную по необходимости.

---

## Использование GPU/CoreML

```python
from manuscript import Pipeline
from manuscript.detectors import EAST
from manuscript.recognizers import TRBA

# NVIDIA CUDA
detector = EAST(device="cuda")
recognizer = TRBA(device="cuda")
pipeline = Pipeline(detector=detector, recognizer=recognizer)

# Apple Silicon (M1/M2/M3)
detector = EAST(device="coreml")
recognizer = TRBA(device="coreml")
pipeline = Pipeline(detector=detector, recognizer=recognizer)
```

---

## Связанные работы

- Sherstnev, P.A.; Kozhin, K.D.; Pyataeva, A.V. Analyzing the Influence of Hyperparameters on the Efficiency of an OCR Model for Pre-Reform Handwritten Texts. Program Comput Soft 51, 173–180 (2025). https://doi.org/10.1134/S0361768825700069
- Шерстнев, П. А.; Кожин, К. Д.; Пятаева, А. В. Анализ влияния гиперпараметров на эффективность OCR-модели для дореформенных рукописных текстов // Программирование. – 2025. – № 3. – С. 70-79. – DOI 10.31857/S0132347425030071. – EDN GRLAPG.
- Шерстнев, П. А.; Кожин, К. Д.; Пятаева, А. В. Распознавание рукописных текстов отчетов губернаторов Енисейской губернии 19 века // GraphiCon 2024 : Материалы 34-й Международной конференции по компьютерной графике и машинному зрению, Омск, 17–19 сентября 2024 года. – Омск: Омский государственный технический университет, 2024. – С. 519-524. – DOI 10.25206/978-5-8149-3873-2-2024-519-524. – EDN GBEKEZ.
