Skip to content

notakeith/DocLayoutParser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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