Инструмент для извлечения структурированных данных из изображений документов на основе пользовательских шаблонов. Позволяет размечать поля распознования (ROI) на эталонном изображении и применять схему к документам того же типа с другим разрешением.
- Редактор шаблонов: Web-интерфейс на Canvas API для визуальной разметки зон (текст, числа, подписи).
- Масштабирование координат: Алгоритм нормализации для применения одного шаблона к изображениям с разным разрешением без потери точности кропа.
- Внешний OCR: Хоть и в проекте есть поддержка Tesseract, но она сейчас закомментирована и сейчас используется внешний сервис - Python с Surya и LLM-постобраткой.
- Backend: Java 17, Spring (Boot, Data JPA)
- Database: PostgreSQL.
- Image Processing: OpenCV (нативные библиотеки через Java-биндинги).
- OCR: Surya (FastAPI/Python).
- Frontend: Thymeleaf, Vanilla JS (Canvas API).
- Mapping: MapStruct.
Приложение спроектировано с разделением на слои (Ports and Adapters):
- Domain: Бизнес-логика распознавания, модели шаблонов, интерфейсы для OCR и ImageProcessor.
- Infrastructure: Реализация адаптеров (OpenCV, OCRService).
- Presentation: REST API для интеграций и Thymeleaf-контроллеры для внутреннего интерфейса.
- Создание шаблона: Пользователь загружает изображение-образец, размечает поля. Система сохраняет координаты в пикселях относительно размеров исходного файла (
base_width,base_height). - Обработка:
- Приложение вычисляет коэффициент масштабирования (
scale_factor) между текущим изображением и эталоном. - OpenCV выполняет сегментацию (crop) зон интереса с учетом заданных отступов (padding).
- Полученные фрагменты передаются на OCR.
- Приложение вычисляет коэффициент масштабирования (
- Вывод: Структурированный JSON с результатами распознавания и изображениями подписей (Base64).
docker-compose up --buildИнтерфейс редактора доступен по адресу: http://localhost:8080/templates/editor.
- Сегментация работает корректно только при условии предварительного выравнивания документа.
- Низкое качество распознавания текста.
- Реализована поддержка только изображений (есть фундамент для PDF).
- Высокое время обработки крупных шаблонов. Требуется кеширование запросов/ответов и асинхронное уведомление по завершении.
- Отсуствует алгоритм Warp Perspective для автоматического исправления перспективных искажений по якорным точкам.