docreader-ocr 0.2.4__tar.gz → 0.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- docreader_ocr-0.2.5/PKG-INFO +69 -0
- docreader_ocr-0.2.5/README.md +292 -0
- docreader_ocr-0.2.5/README_pypi.md +36 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/pyproject.toml +2 -2
- docreader_ocr-0.2.4/PKG-INFO +0 -34
- docreader_ocr-0.2.4/README.md +0 -1
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/.github/workflows/publish.yaml +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/.gitignore +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/LICENSE +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/__init__.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/classifier/__init__.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/classifier/base.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/classifier/yolo_classifier.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/config.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/detector/__init__.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/detector/base.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/detector/yolo_obb.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/factory.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/hub.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/ocr/__init__.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/ocr/base.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/ocr/easyocr_engine.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/pipeline.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/preprocessing/__init__.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/preprocessing/geometry.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/resolver/__init__.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/resolver/base.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/resolver/lvl_resolver.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/schemas.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/src/docreader/utils.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/tests/test_hub.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/tests/test_pipeline.py +0 -0
- {docreader_ocr-0.2.4 → docreader_ocr-0.2.5}/tests/test_run.py +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: docreader-ocr
|
|
3
|
+
Version: 0.2.5
|
|
4
|
+
Summary: Document OCR pipeline: classify → detect fields → recognize text
|
|
5
|
+
Project-URL: Homepage, https://github.com/mishanyacorleone/docreader
|
|
6
|
+
Project-URL: Repository, https://github.com/mishanyacorleone/docreader
|
|
7
|
+
Project-URL: Issues, https://github.com/mishanyacorleone/docreader/issues
|
|
8
|
+
Author-email: Mikhail Kardash <mishutqac@mail.ru>, Ruslan Abzelilov <ruslanr26@mail.ru>, Ekaterina Karmanova <monitor81@mail.ru>
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: document,ocr,recognition,yolo
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Image Recognition
|
|
17
|
+
Requires-Python: >=3.9
|
|
18
|
+
Requires-Dist: easyocr>=1.7
|
|
19
|
+
Requires-Dist: numpy>=1.24
|
|
20
|
+
Requires-Dist: opencv-python>=4.8
|
|
21
|
+
Requires-Dist: rapidfuzz>=3.14.0
|
|
22
|
+
Requires-Dist: requests>=2.28
|
|
23
|
+
Requires-Dist: torch>=2.0
|
|
24
|
+
Requires-Dist: torchvision>=0.15
|
|
25
|
+
Requires-Dist: tqdm>=4.65
|
|
26
|
+
Requires-Dist: ultralytics>=8.0
|
|
27
|
+
Provides-Extra: dev
|
|
28
|
+
Requires-Dist: mypy; extra == 'dev'
|
|
29
|
+
Requires-Dist: pytest-cov; extra == 'dev'
|
|
30
|
+
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
31
|
+
Requires-Dist: ruff; extra == 'dev'
|
|
32
|
+
Description-Content-Type: text/markdown
|
|
33
|
+
|
|
34
|
+
# docreader-ocr
|
|
35
|
+
|
|
36
|
+
Python-библиотека для автоматического распознавания российских документов.
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
from docreader import DocReader
|
|
40
|
+
|
|
41
|
+
result = DocReader().process("passport.jpg")
|
|
42
|
+
print(result.documents[0].fields)
|
|
43
|
+
# {"surname": "Иванов", "firstname": "Иван", "passport_num": "1234 567890", ...}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Установка
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install docreader-ocr
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Модели скачиваются автоматически при первом запуске.
|
|
53
|
+
|
|
54
|
+
## Поддерживаемые документы
|
|
55
|
+
|
|
56
|
+
- Паспорт РФ
|
|
57
|
+
- СНИЛС
|
|
58
|
+
- Аттестат об образовании
|
|
59
|
+
- Диплом о высшем образовании
|
|
60
|
+
|
|
61
|
+
## Как работает
|
|
62
|
+
|
|
63
|
+
Трёхэтапный конвейер: **классификатор** (YOLO OBB, accuracy 97.5%) определяет тип документа → **детектор зон** (YOLO OBB, mAP@50 = 90%) находит поля → **OCR** (EasyOCR, word accuracy 87.3%) распознаёт текст.
|
|
64
|
+
|
|
65
|
+
Данные обрабатываются локально — никаких внешних серверов, полное соответствие 152-ФЗ.
|
|
66
|
+
|
|
67
|
+
## Документация
|
|
68
|
+
|
|
69
|
+
Полный README, примеры и API — на [GitHub](https://github.com/mishanyacorleone/docreader).
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# docreader-ocr
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/docreader-ocr/)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/mishanyacorleone/docreader/stargazers)
|
|
7
|
+
|
|
8
|
+
Python-библиотека для автоматического распознавания российских документов. Сфотографировал — получил структурированные данные.
|
|
9
|
+
|
|
10
|
+
```python
|
|
11
|
+
from docreader import DocReader
|
|
12
|
+
|
|
13
|
+
result = DocReader().process("passport.jpg")
|
|
14
|
+
print(result.documents[0].fields)
|
|
15
|
+
# {"surname": "Иванов", "firstname": "Иван", "passport_num": "1234 567890", ...}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Поддерживаемые документы
|
|
21
|
+
|
|
22
|
+
| Документ | Распознаваемые поля |
|
|
23
|
+
|----------|---------------------|
|
|
24
|
+
| Паспорт РФ | surname, firstname, middlename, dateOfBirth, birthCity, sex, passport_num, issued_by, issued_date, issued_code |
|
|
25
|
+
| СНИЛС | fio, snils, date_of_birth, sex, location, reg_date |
|
|
26
|
+
| Аттестат | fio, lvl, number, issue_date, grad_year, school_name, gerb |
|
|
27
|
+
| Диплом | fio, lvl, series_numbers, reg_num, issue_date, spec_name, university_name, gerb, stamp |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Установка
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install docreader-ocr
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Модели скачиваются автоматически при первом запуске и кэшируются в `~/.cache/docreader/models/`.
|
|
38
|
+
|
|
39
|
+
### Требования
|
|
40
|
+
|
|
41
|
+
- Python 3.12+
|
|
42
|
+
- PyTorch (CPU или CUDA)
|
|
43
|
+
- ~200 МБ дискового пространства для моделей
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Быстрый старт
|
|
48
|
+
|
|
49
|
+
### Базовое использование
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from docreader import DocReader
|
|
53
|
+
|
|
54
|
+
reader = DocReader()
|
|
55
|
+
result = reader.process("photo.jpg")
|
|
56
|
+
|
|
57
|
+
for doc in result.documents:
|
|
58
|
+
print(f"Тип: {doc.doc_type}")
|
|
59
|
+
print(f"Поля: {doc.fields}")
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Пакетная обработка
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
results = reader.process_batch(["doc1.jpg", "doc2.jpg", "doc3.jpg"])
|
|
66
|
+
|
|
67
|
+
for page in results:
|
|
68
|
+
for doc in page.documents:
|
|
69
|
+
print(doc.fields)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Использование numpy array
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
import cv2
|
|
76
|
+
from docreader import DocReader
|
|
77
|
+
|
|
78
|
+
image = cv2.imread("passport.jpg")
|
|
79
|
+
result = DocReader().process(image)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Получение кропов зон
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
result = DocReader().process("passport.jpg", return_crops=True)
|
|
86
|
+
|
|
87
|
+
for doc in result.documents:
|
|
88
|
+
for zone in doc.zones:
|
|
89
|
+
print(f"{zone.name}: {zone.text}")
|
|
90
|
+
# zone.crop_image — numpy array с вырезанной зоной
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Использование GPU
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from docreader import DocReader
|
|
97
|
+
from docreader.config import PipelineConfig
|
|
98
|
+
|
|
99
|
+
config = PipelineConfig(device="cuda")
|
|
100
|
+
reader = DocReader(config=config)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Архитектура
|
|
106
|
+
|
|
107
|
+
Библиотека реализует трёхэтапный конвейер:
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
Фото → [Классификатор] → [Детектор зон] → [OCR] → Словарь полей
|
|
111
|
+
YOLO OBB YOLO OBB EasyOCR
|
|
112
|
+
97.5% acc mAP@50=90% CER=0.15
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Классификатор** — определяет тип документа и вырезает его из произвольной фотографии. Работает при любом освещении и ракурсе.
|
|
116
|
+
|
|
117
|
+
**Детектор зон** — специализированная YOLO OBB модель для каждого типа документа. Находит поля с точностью mAP@50 = 90%.
|
|
118
|
+
|
|
119
|
+
**OCR-движок** — EasyOCR с кастомным дообучением под русскоязычные документы. Структурированные поля (числа, даты, коды) — Exact Match 85–92%.
|
|
120
|
+
|
|
121
|
+
### Resolver для аттестата/диплома
|
|
122
|
+
|
|
123
|
+
Аттестат и диплом визуально идентичны, поэтому их различение вынесено в отдельный компонент — `LvlSubtypeResolver`. Он детектирует поле `lvl`, читает его через OCR и с помощью fuzzy matching определяет подтип документа.
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Метрики качества
|
|
128
|
+
|
|
129
|
+
### Классификатор
|
|
130
|
+
|
|
131
|
+
| Класс | Precision | Recall | F1 |
|
|
132
|
+
|-------|-----------|--------|----|
|
|
133
|
+
| passport | 0.968 | 1.000 | 0.984 |
|
|
134
|
+
| snils | 1.000 | 0.903 | 0.949 |
|
|
135
|
+
| attestat | 1.000 | 1.000 | 1.000 |
|
|
136
|
+
| diplom | 1.000 | 1.000 | 1.000 |
|
|
137
|
+
| **Общая точность** | | | **97.5%** |
|
|
138
|
+
|
|
139
|
+
### Детектор зон
|
|
140
|
+
|
|
141
|
+
| Метрика | Значение |
|
|
142
|
+
|---------|----------|
|
|
143
|
+
| mAP@50 | 90.0% |
|
|
144
|
+
| Лучшая зона (gerb) | F1 = 99.1% |
|
|
145
|
+
| Слабейшая зона (location) | F1 = 82.5% |
|
|
146
|
+
|
|
147
|
+
### OCR
|
|
148
|
+
|
|
149
|
+
| Метрика | Значение |
|
|
150
|
+
|---------|----------|
|
|
151
|
+
| CER средний | 0.146 |
|
|
152
|
+
| WER средний | 0.276 |
|
|
153
|
+
| Exact Match средний | 58.8% |
|
|
154
|
+
| Exact Match (series_numbers) | 92.3% |
|
|
155
|
+
| Exact Match (fio) | 88.4% |
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Кастомизация
|
|
160
|
+
|
|
161
|
+
### Своя конфигурация
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
from docreader import DocReader
|
|
165
|
+
from docreader.config import PipelineConfig
|
|
166
|
+
|
|
167
|
+
config = PipelineConfig(
|
|
168
|
+
device="cuda",
|
|
169
|
+
classifier_confidence=0.5,
|
|
170
|
+
detector_confidence=0.3,
|
|
171
|
+
enable_deskew=True,
|
|
172
|
+
return_crops=False,
|
|
173
|
+
skip_ocr_zones={"stamp", "gerb"},
|
|
174
|
+
)
|
|
175
|
+
reader = DocReader(config=config)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Использование отдельных компонентов
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
from docreader.factory import create_classifier, create_detector, create_ocr
|
|
182
|
+
|
|
183
|
+
# Только классификатор
|
|
184
|
+
clf = create_classifier()
|
|
185
|
+
docs = clf.classify("photo.jpg")
|
|
186
|
+
|
|
187
|
+
# Только детектор
|
|
188
|
+
det = create_detector()
|
|
189
|
+
zones = det.detect(image, doc_type="passport")
|
|
190
|
+
|
|
191
|
+
# Только OCR
|
|
192
|
+
ocr = create_ocr()
|
|
193
|
+
result = ocr.recognize(crop_image)
|
|
194
|
+
print(result.text, result.confidence)
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Подключение своего OCR-движка
|
|
198
|
+
|
|
199
|
+
```python
|
|
200
|
+
from docreader.ocr.base import BaseOcrEngine, OcrResult
|
|
201
|
+
import numpy as np
|
|
202
|
+
|
|
203
|
+
class MyOcrEngine(BaseOcrEngine):
|
|
204
|
+
def recognize(self, image: np.ndarray) -> OcrResult:
|
|
205
|
+
# ваша реализация
|
|
206
|
+
return OcrResult(text="...", confidence=0.95)
|
|
207
|
+
|
|
208
|
+
reader = DocReader(ocr_engine=MyOcrEngine())
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Добавление нового типа документа
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
from docreader.config import PipelineConfig
|
|
215
|
+
|
|
216
|
+
config = PipelineConfig(
|
|
217
|
+
detector_weights={
|
|
218
|
+
"passport": "passport.pt",
|
|
219
|
+
"snils": "snils.pt",
|
|
220
|
+
"attestat": "attestat.pt",
|
|
221
|
+
"diplom": "diplom.pt",
|
|
222
|
+
"inn": "/path/to/your/inn.pt", # ваша модель
|
|
223
|
+
}
|
|
224
|
+
)
|
|
225
|
+
reader = DocReader(config=config)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## Структура результата
|
|
231
|
+
|
|
232
|
+
```python
|
|
233
|
+
PageResult
|
|
234
|
+
└── documents: list[DocumentResult]
|
|
235
|
+
├── doc_type: str # "passport", "snils", "attestat", "diplom"
|
|
236
|
+
├── doc_confidence: float # уверенность классификатора
|
|
237
|
+
├── doc_bbox: list[float] # координаты документа в исходном изображении
|
|
238
|
+
├── doc_crop: np.ndarray # вырезанный документ (если return_crops=True)
|
|
239
|
+
├── fields: dict # {zone_name: text} — удобный доступ к полям
|
|
240
|
+
├── resolve_meta: dict # диагностика resolver'а (для attestat/diplom)
|
|
241
|
+
└── zones: list[ZoneResult]
|
|
242
|
+
├── name: str
|
|
243
|
+
├── text: str
|
|
244
|
+
├── confidence: float
|
|
245
|
+
├── bbox: list[float]
|
|
246
|
+
└── crop_image: np.ndarray # если return_crops=True
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Управление моделями
|
|
252
|
+
|
|
253
|
+
```python
|
|
254
|
+
from docreader.hub import get_model_status, ensure_all_models
|
|
255
|
+
|
|
256
|
+
# Статус всех моделей
|
|
257
|
+
status = get_model_status()
|
|
258
|
+
for name, info in status.items():
|
|
259
|
+
print(f"{name}: {'✓' if info['downloaded'] else '✗'} ({info['size_mb']} MB)")
|
|
260
|
+
|
|
261
|
+
# Скачать все модели заранее
|
|
262
|
+
ensure_all_models()
|
|
263
|
+
|
|
264
|
+
# Кастомная директория кэша
|
|
265
|
+
import os
|
|
266
|
+
os.environ["DOCREADER_CACHE"] = "/path/to/custom/cache"
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Почему библиотека, а не сервис
|
|
272
|
+
|
|
273
|
+
**Данные остаются внутри.** Персональные данные не покидают инфраструктуру организации. Полное соответствие 152-ФЗ. Никаких внешних серверов.
|
|
274
|
+
|
|
275
|
+
**Интеграция без переписывания.** Встраивается в любую существующую систему — 1С, CRM, ERP, мобильное приложение — двумя строками кода.
|
|
276
|
+
|
|
277
|
+
**Полный контроль.** Новые типы документов подключаются через дообучение без участия вендора. IT-отдел контролирует всё: модели, данные, обновления.
|
|
278
|
+
|
|
279
|
+
**Нет операционных затрат.** В отличие от облачных API — никакой абонентской платы и лимитов на количество запросов.
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## Лицензия
|
|
284
|
+
|
|
285
|
+
MIT License — см. [LICENSE](LICENSE).
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
## Ссылки
|
|
290
|
+
|
|
291
|
+
- [PyPI](https://pypi.org/project/docreader-ocr/)
|
|
292
|
+
- [GitHub](https://github.com/mishanyacorleone/docreader)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# docreader-ocr
|
|
2
|
+
|
|
3
|
+
Python-библиотека для автоматического распознавания российских документов.
|
|
4
|
+
|
|
5
|
+
```python
|
|
6
|
+
from docreader import DocReader
|
|
7
|
+
|
|
8
|
+
result = DocReader().process("passport.jpg")
|
|
9
|
+
print(result.documents[0].fields)
|
|
10
|
+
# {"surname": "Иванов", "firstname": "Иван", "passport_num": "1234 567890", ...}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Установка
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install docreader-ocr
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Модели скачиваются автоматически при первом запуске.
|
|
20
|
+
|
|
21
|
+
## Поддерживаемые документы
|
|
22
|
+
|
|
23
|
+
- Паспорт РФ
|
|
24
|
+
- СНИЛС
|
|
25
|
+
- Аттестат об образовании
|
|
26
|
+
- Диплом о высшем образовании
|
|
27
|
+
|
|
28
|
+
## Как работает
|
|
29
|
+
|
|
30
|
+
Трёхэтапный конвейер: **классификатор** (YOLO OBB, accuracy 97.5%) определяет тип документа → **детектор зон** (YOLO OBB, mAP@50 = 90%) находит поля → **OCR** (EasyOCR, word accuracy 87.3%) распознаёт текст.
|
|
31
|
+
|
|
32
|
+
Данные обрабатываются локально — никаких внешних серверов, полное соответствие 152-ФЗ.
|
|
33
|
+
|
|
34
|
+
## Документация
|
|
35
|
+
|
|
36
|
+
Полный README, примеры и API — на [GitHub](https://github.com/mishanyacorleone/docreader).
|
|
@@ -4,9 +4,9 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "docreader-ocr"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.5"
|
|
8
8
|
description = "Document OCR pipeline: classify → detect fields → recognize text"
|
|
9
|
-
readme = "
|
|
9
|
+
readme = "README_pypi.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
11
11
|
requires-python = ">=3.9"
|
|
12
12
|
authors = [
|
docreader_ocr-0.2.4/PKG-INFO
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: docreader-ocr
|
|
3
|
-
Version: 0.2.4
|
|
4
|
-
Summary: Document OCR pipeline: classify → detect fields → recognize text
|
|
5
|
-
Project-URL: Homepage, https://github.com/mishanyacorleone/docreader
|
|
6
|
-
Project-URL: Repository, https://github.com/mishanyacorleone/docreader
|
|
7
|
-
Project-URL: Issues, https://github.com/mishanyacorleone/docreader/issues
|
|
8
|
-
Author-email: Mikhail Kardash <mishutqac@mail.ru>, Ruslan Abzelilov <ruslanr26@mail.ru>, Ekaterina Karmanova <monitor81@mail.ru>
|
|
9
|
-
License: MIT
|
|
10
|
-
License-File: LICENSE
|
|
11
|
-
Keywords: document,ocr,recognition,yolo
|
|
12
|
-
Classifier: Development Status :: 3 - Alpha
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Topic :: Scientific/Engineering :: Image Recognition
|
|
17
|
-
Requires-Python: >=3.9
|
|
18
|
-
Requires-Dist: easyocr>=1.7
|
|
19
|
-
Requires-Dist: numpy>=1.24
|
|
20
|
-
Requires-Dist: opencv-python>=4.8
|
|
21
|
-
Requires-Dist: rapidfuzz>=3.14.0
|
|
22
|
-
Requires-Dist: requests>=2.28
|
|
23
|
-
Requires-Dist: torch>=2.0
|
|
24
|
-
Requires-Dist: torchvision>=0.15
|
|
25
|
-
Requires-Dist: tqdm>=4.65
|
|
26
|
-
Requires-Dist: ultralytics>=8.0
|
|
27
|
-
Provides-Extra: dev
|
|
28
|
-
Requires-Dist: mypy; extra == 'dev'
|
|
29
|
-
Requires-Dist: pytest-cov; extra == 'dev'
|
|
30
|
-
Requires-Dist: pytest>=7.0; extra == 'dev'
|
|
31
|
-
Requires-Dist: ruff; extra == 'dev'
|
|
32
|
-
Description-Content-Type: text/markdown
|
|
33
|
-
|
|
34
|
-
Заглушка
|
docreader_ocr-0.2.4/README.md
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Заглушка
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|