Metadata-Version: 2.4
Name: manuscript-ocr
Version: 0.1.10
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
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: 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: 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"


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

# Manuscript OCR

Библиотека для детекции и распознавания текста на исторических, архивных, рукописных и печатных документах.

---

## Быстрый пример

```python
from manuscript import Pipeline
from manuscript.utils import visualize_page

# Инициализация пайплайна
pipeline = Pipeline()

image_path = "example/image.jpg"

# Запуск пайплайна
result = pipeline.predict(image_path)

# Весь объект результата
print(result)

# Текст
text = pipeline.get_text(result["page"])
print(text)

# Визуализация
visualize_page(image_path, result["page"], show_lines=False, show_numbers=True)
```

<img src="example/image.jpg" alt="Результат визуализации" />

**Распознанный текст:**
```
мѣстахъ губернiи могли бы подъ
руководствомъ врача, подавать
помощь заболѣвающему скоту
принимать мѣры предупрежден
развитiя эпизотiи и наблюда
за исполненiемъ означенныхъ мѣ
Сильный падежъ скота необхо
мо имѣлъ влiянiе на взысканiе
податей и повинностей съ недо
ками, которое и было менѣе усп.
но нежели въ 1870 году.
За вычетомъ...
```

---

## Документация

**[Полная документация](https://konstantinkozhin.github.io/manuscript-ocr)** (English & Русский)

Подробные примеры и руководства:
- [Pipeline API](./docs/PIPELINE_API.md) - интеграция и создание кастомных компонентов

---

## Установка

### Режим 1: Пользовательская установка (только inference)

Минимальная установка для использования готовых моделей через ONNX Runtime (CPU):

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

**Для ускорения на 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 (оптимизация через CoreML)
pip install onnxruntime-silicon
```

### Режим 2: Dev установка (с обучением моделей)

Полная установка с PyTorch для обучения собственных моделей:

```bash
pip install manuscript-ocr[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) пользователь устанавливает вручную по необходимости.

---

## Быстрый старт

```python
from manuscript import Pipeline

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

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

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

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

```python
# 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)
```
