Локальное распознавание текста на изображениях с помощью моделей GLM-OCR и PaddleOCR-VL-1.6. Приложение работает через командную строку и веб-интерфейс, использует заранее загруженные модели и сохраняет результат в текстовый файл.
.
├── ocr_local/ # Распознавание текста и пользовательские интерфейсы
│ ├── cli.py # Работа через командную строку
│ ├── service.py # Общий сервис распознавания
│ ├── model_profiles.py # Профили моделей и параметры распознавания
│ ├── utils/ # Работа с файлами, моделями и кешем
│ └── web/ # Локальный веб-интерфейс
│ └── static/ # Страница, стили и сценарии браузера
├── scripts/ # Проверки моделей и измерение производительности
├── tests/ # Автоматические проверки
├── openspec/ # Требования и документация проекта
│ ├── context/ # Начало работы, архитектура, словарь и решения
│ ├── specs/ # Спецификации распознавания, интерфейса и правил работы
│ └── changes/ # Изменения проекта
├── resources/ # Изображения, результаты и кеш
├── logs/ # Журналы приложения
├── run_web.ps1 # Запуск веб-интерфейса
├── pyproject.toml # Метаданные пакета и настройки проверок
└── requirements.txt # Зависимости Python
Начните с контекста проекта: он направляет к описанию возможностей, архитектуре и правилам работы.
| Задача | Документация |
|---|---|
| Разобраться в устройстве приложения | Архитектура |
| Подготовить среду и выбрать параметры запуска | Среда, команды и настройки |
| Узнать возможности приложения | Распознавание текста и веб-интерфейс |
| Изменить и проверить код | Инженерные правила и локальные проверки |
| Найти задачи проекта | Изменения |
После подготовки среды и локальных моделей выполните из корня проекта в Windows PowerShell 5.1:
.\run_web.ps1Откройте http://127.0.0.1:7861 непосредственно в браузере. Разрешены только адреса loopback —
127.0.0.1 и ::1, возвращающие запрос на этот же компьютер. Имя localhost, сетевые адреса и режим -Reload
не поддерживаются. Другой порт и IPv6 выбираются параметрами запуска;
в браузере нужно использовать ровно выбранный адрес и порт. Доступ из локальной сети и через обратный прокси не предусмотрен.
Главная страница устанавливает закрытый cookie сеанса; браузер передаёт его для API, изображений и потока серверных событий (SSE). После перезапуска приложения обновите главную страницу, чтобы получить новый сеанс. Приложение отклоняет запросы с посторонних сайтов; ограничения доступа описаны в WEB-001.
Разрыв SSE не отменяет распознавание и не запускает его повторно. Интерфейс ждёт результат либо ошибку текущей задачи. В том же процессе итог доступен для повторной доставки в течение 30 минут после завершения; время выполняющегося OCR в этот срок не входит. После истечения срока или перезапуска состояние задачи недоступно: следуйте сообщению интерфейса об обновлении страницы. Полная история сообщений SSE не гарантируется. Правила восстановления определены в WEB-004.
| Ответ | Действие пользователя |
|---|---|
| 403 — доступ запрещён | Откройте главную страницу по выбранному локальному адресу и порту; после перезапуска обновите сеанс. |
| 413 — превышен размер | Уменьшите изображение или промпт согласно сообщению. |
| 429 — ресурс временно занят | Дождитесь завершения загрузки, закройте лишние потоки или повторите запуск через указанное время; сохранённые итоги не вытесняются ради новой задачи. |
| 507 — недостаточно квоты или места для записи | Освободите место вручную, сохранив нужные файлы, и повторите операцию. |
Приложение не удаляет автоматически постоянные изображения, TXT и общий кеш ради квоты или по возрасту. Очистка истёкшего состояния задачи также не удаляет сохранённый текст. Пределы приёма, хранения и результатов перечислены в WEB-007. Ошибка уже принятого OCR приходит в потоке событий и не превращается в успешный усечённый результат. Если результат слишком велик, выберите меньший фрагмент изображения для распознавания.
Сообщение об ошибке содержит безопасную причину и идентификатор диагностики. Подробности по этому идентификатору
остаются в локальном журнале logs/ocr_local.log; браузер не получает серверные пути или внутренний стек ошибки.
Настройка каталогов моделей описана в подготовке среды.