Skip to content

notakeith/DocLayoutParser

Repository files navigation

DocLayoutParser

Инструмент для извлечения структурированных данных из изображений документов на основе пользовательских шаблонов. Позволяет размечать поля распознования (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-контроллеры для внутреннего интерфейса.

Логика работы

  1. Создание шаблона: Пользователь загружает изображение-образец, размечает поля. Система сохраняет координаты в пикселях относительно размеров исходного файла (base_width, base_height).
  2. Обработка:
    • Приложение вычисляет коэффициент масштабирования (scale_factor) между текущим изображением и эталоном.
    • OpenCV выполняет сегментацию (crop) зон интереса с учетом заданных отступов (padding).
    • Полученные фрагменты передаются на OCR.
  3. Вывод: Структурированный JSON с результатами распознавания и изображениями подписей (Base64).

Установка и запуск

docker-compose up --build

Интерфейс редактора доступен по адресу: http://localhost:8080/templates/editor.

Текущие ограничения

  • Сегментация работает корректно только при условии предварительного выравнивания документа.
  • Низкое качество распознавания текста.
  • Реализована поддержка только изображений (есть фундамент для PDF).
  • Высокое время обработки крупных шаблонов. Требуется кеширование запросов/ответов и асинхронное уведомление по завершении.
  • Отсуствует алгоритм Warp Perspective для автоматического исправления перспективных искажений по якорным точкам.

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Contributors