Metadata-Version: 2.1
Name: manuscript-ocr
Version: 0.1.13
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.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Image Processing
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9.2
Description-Content-Type: text/markdown
Provides-Extra: cpu
Provides-Extra: gpu
Provides-Extra: fast
Provides-Extra: gdrive
Provides-Extra: web
Provides-Extra: trocr
Provides-Extra: trocr-cuda
Provides-Extra: silicon
Provides-Extra: dev
License-File: LICENSE


<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[cpu]"
```

Обычная установка `pip install manuscript-ocr` содержит общие компоненты без ONNX Runtime.
Для выполнения моделей выберите `[cpu]`, `[gpu]` или браузерный `[web]`.
Для TrOCR дополнительно нужен токенизатор: `pip install "manuscript-ocr[cpu,trocr]"`.

В браузере Python работает через Pyodide, а ONNX Runtime Web подключает страница.
Порядок подключения описан в [инструкции для веба](docs/WEB_RUNTIME.md).

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

```python
from manuscript import Pipeline

# Инициализация с моделями и автоматическим выбором устройства
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 "manuscript-ocr[gpu]"
# Если библиотеки CUDA/cuDNN ещё не установлены:
pip install "onnxruntime-gpu[cuda,cudnn]"
```

### Для Apple Silicon с CoreML

Стандартный пакет `onnxruntime` для macOS включает CoreML. Дополнительная
установка не требуется; передайте `device="coreml"` компонентам пайплайна.

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

```bash
pip install "manuscript-ocr[cpu,dev]"
```

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

```bash
# Установите библиотеку с GPU Runtime и инструментами обучения
pip install "manuscript-ocr[gpu,dev]"

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

Версию PyTorch выбирайте под свою CUDA. При переходе с CPU на GPU сначала удалите `onnxruntime`.

---

## Использование 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.

---

## Практическое применение

Полученные результаты могут использоваться для:

1. оцифровки и распознавания дореформенных рукописных архивных материалов;
2. интеграции в системы библиотек, архивов и музеев;
3. образовательных и исследовательских проектов по историческим источникам;
4. интеллектуальной обработки текста, включая интеграцию с LLM-системами для анализа и структурирования исторических документов.

> **Проект реализован при поддержке гранта**  
> Фонд содействия инновациям, конкурс «Код-ИИ», VII очередь
