Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Neuro Scan: Веб-приложение для распознавания текста

Описание проекта

Neuro Scan — это веб-приложение, разработанное для эффективного сканирования документов и изображений с последующим распознаванием текста (OCR). Проект позволяет пользователям быстро загружать изображения из галереи или делать снимки с помощью камеры, а затем извлекать из них текстовую информацию. Приложение предназначено для упрощения работы с бумажными документами, оцифровки информации и обеспечения легкого доступа к распознанному тексту.

Предназначение

Основное предназначение приложения Neuro Scan:

  • Быстрое распознавание текста: Предоставление удобного инструмента для извлечения текста из любых изображений.
  • Оцифровка документов: Помощь в переводе печатных документов в редактируемый цифровой формат.
  • Удобство использования: Интуитивно понятный интерфейс для пользователей любого уровня подготовки.
  • Повышение продуктивности: Сокращение времени на ручной ввод данных и поиск информации в бумажных источниках.

Принцип работы

Приложение обеспечивает распознавание текста, используя комбинацию клиентской части и серверной обработки для повышения точности и качества результатов.

  1. Выбор/Сканирование изображения: Пользователь может загрузить одно или несколько изображений из своей галереи или использовать встроенную функцию сканирования для фотографирования документов.
  2. Предварительный просмотр и подтверждение: Перед отправкой на сервер, приложение отображает выбранные изображения в диалоге подтверждения, где пользователь может добавить или удалить файлы.
  3. Отправка на сервер и предобработка: После подтверждения, выбранные изображения отправляются на сервер. На сервере происходит предобработка изображений для удаления "шума" и улучшения их качества (например, коррекция яркости, контраста, выравнивание).
  4. Серверное распознавание текста (OCR): Предобработанные изображения прогоняются через движок OCR (например, Tesseract) на сервере для извлечения текстовой информации.
  5. Проверка орфографии и постобработка: Распознанный текст проходит проверку орфографии на сервере для исправления возможных ошибок и повышения читаемости.
  6. Получение и отображение результатов: Обработанный текст и, при необходимости, исходное изображение отправляются обратно пользователю и отображаются на специальном экране результатов. Пользователь может просмотреть текст, скопировать его в буфер обмена.
  7. История и управление: Приложение ведет историю сканирований, позволяя пользователям просматривать ранее распознанные документы и их тексты.

Функциональные возможности

  • Сканирование с камеры: Мгновенное фотографирование документов с помощью устройства.
  • Загрузка из галереи: Выбор существующих изображений для распознавания.
  • Поддержка русского языка: Распознавание текста на русском языке (rus tesseract-lang).
  • Пакетное сканирование: Возможность сканировать и обрабатывать несколько изображений за одну операцию.
  • Просмотр результатов: Отображение исходного изображения и распознанного текста.
  • Копирование текста: Функция копирования распознанного текста в буфер обмена.
  • История сканирований: Хранение и просмотр всех предыдущих сканирований с деталями.
  • Настройки профиля: Редактирование пользовательских данных, изменение фотографии профиля.
  • Настройки приложения: Возможность настройки языка и других параметров.
  • Интеграция с облачными хранилищами (заглушки): Предусмотрены элементы интерфейса для привязки аккаунтов Google Drive, Dropbox, OneDrive.
  • Навигация: Удобная навигация между главными экранами (Главная, История, Настройки) с помощью нижней панели навигации.

Фронтенд (Frontend)

Технологический стек Frontend

  • React: Основной фреймворк для создания пользовательского интерфейса.
  • React Router DOM: Для маршрутизации и навигации по различным экранам приложения.
  • HTML5/CSS3: Для структурирования содержимого и стилизации компонентов.
  • JavaScript (ES6+): Язык программирования для логики приложения.

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

Для запуска фронтенд-части проекта локально выполните следующие шаги:

  1. Клонируйте репозиторий (если применимо, иначе пропустите этот шаг и перейдите в папку проекта):
    git clone <URL_репозитория>
    cd ocr-scanner
  2. Перейдите в корневую директорию Frontend (фактически src):
    cd src
  3. Установите зависимости (если не установлено):
    npm install
  4. Запустите приложение в режиме разработки:
    npm start
    Приложение будет доступно по адресу http://localhost:3000 (или другому порту, если 3000 занят).

Бэкенд (Backend)

Описание и назначение Backend

Серверная часть приложения Neuro Scan написана на Python с использованием фреймворка FastAPI. Она отвечает за всю тяжелую логику обработки изображений, распознавания текста и проверки орфографии, разгружая клиентскую часть и обеспечивая высокую производительность и точность.

Принцип работы Backend

  1. Загрузка файлов (UploadService): При получении изображений с клиентской части, UploadService отвечает за их безопасную загрузку и сохранение во временной директории на сервере с уникальными именами файлов.
  2. Предобработка изображений (ProcessingService): Загруженные изображения передаются в ProcessingService, который выполняет следующие операции:
    • Чтение изображения: Загрузка изображения с диска.
    • Преобразование в оттенки серого: Для улучшения качества распознавания.
    • Коррекция наклона (Deskew): Автоматическое определение и исправление угла наклона текста на изображении с использованием библиотеки deskew и scikit-image, что значительно повышает точность OCR.
    • Сохранение обработанных изображений: Обработанные изображения сохраняются во временную директорию для дальнейшего OCR.
  3. Распознавание текста (OCR) (OcrScanner): Обработанные изображения поступают в OcrScanner, который использует библиотеку EasyOCR для извлечения текста. EasyOCR — это мощный инструмент, поддерживающий множество языков, включая русский, и способный эффективно работать с различными шрифтами и форматами.
  4. Проверка орфографии и постобработка (CorrectingErrors): Распознанный текст передается в CorrectingErrors сервис. Этот сервис использует библиотеку language-tool-python для проверки орфографии и грамматики извлеченного текста. Это помогает исправить распространенные ошибки распознавания и предоставить пользователю более чистый и точный результат.
  5. Хранение данных: Бэкенд также включает репозитории и модели данных на основе SQLModel, которые отвечают за взаимодействие с базой данных (SQLite в текущей конфигурации) для хранения информации о пользователях, документах, истории сканирований и настроек.

Технологический стек Backend

  • FastAPI: Высокопроизводительный фреймворк для построения API на Python.
  • Uvicorn: Асинхронный сервер ASGI для запуска FastAPI.
  • SQLModel: Библиотека для взаимодействия с базой данных (на основе SQLAlchemy и Pydantic).
  • OpenCV (opencv-python), scikit-image, Pillow, deskew: Библиотеки для предобработки изображений (удаление шума, улучшение качества, коррекция наклона).
  • EasyOCR: Инструмент для оптического распознавания символов (OCR) на сервере.
  • language-tool-python: Инструмент для проверки орфографии и грамматики.

API Эндпоинты

Сервер предоставляет следующие основные API эндпоинты:

  • POST /upload: Принимает файлы изображений от клиента для загрузки на сервер.
    • Метод: POST
    • Параметры: file (UploadFile)
    • Возвращает: информацию о загруженном файле (имя, путь, статус).
  • POST /process: Запускает процесс предобработки всех загруженных изображений.
    • Метод: POST
    • Возвращает: Результаты обработки изображений.
  • POST /correct: Запускает процесс проверки орфографии распознанного текста.
    • Метод: POST
    • Возвращает: Список найденных ошибок и, возможно, предложений по исправлению.
  • /docs: Документация API в формате Swagger UI (автоматически генерируется FastAPI).
  • /redoc: Документация API в формате ReDoc (автоматически генерируется FastAPI).

База данных Backend

Проект использует SQLite в качестве базы данных по умолчанию, настроенной через SQLModel и SQLAlchemy с асинхронным драйвером aiosqlite. Модели данных определены в back/src/models/.

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

Для запуска бэкенд-части проекта локально выполните следующие шаги:

  1. Перейдите в корневую директорию Backend (фактически back):
    cd back
  2. Создайте и активируйте виртуальное окружение (рекомендуется):
    python -m venv venv
    # Для Windows
    .\venv\Scripts\activate
    # Для macOS/Linux
    source venv/bin/activate
  3. Установите зависимости бэкенда (если не установлено):
    pip install -r requirements.txt
  4. Запустите сервер:
    uvicorn main:app --host 0.0.0.0 --port 8000 --reload
    Сервер будет доступен по адресу http://localhost:8000. Документация API (Swagger UI) будет доступна по адресу http://localhost:8000/docs.

Структура проекта

Проект имеет следующую структуру каталогов:

Neuro-Scan/
├── Backend/                       # Серверная часть приложения
│   ├── src/                    # Исходный код бэкенда
│   │   ├── config/             # Настройки приложения (БД, проекта)
│   │   │   └── database/
│   │   │   └── project_config.py
│   │   ├── models/             # Модели данных (SQLModel, Pydantic)
│   │   ├── repositories/       # Репозитории для работы с БД
│   │   ├── services/           # Бизнес-логика (загрузка, обработка, OCR, исправление ошибок)
│   │   │   ├── correcting_service.py # Сервис для проверки орфографии
│   │   │   ├── ocr_service.py      # Сервис для OCR
│   │   │   ├── processing_service.py # Сервис для предобработки изображений
│   │   │   └── upload_service.py   # Сервис для загрузки файлов
│   │   ├── routes.py           # API роуты (FastAPI)
│   │   └── __init__.py
│   ├── main.py                 # Точка входа для серверного приложения
│   └── requirements.txt        # Зависимости Python
├── Frondend/
├── src/                        # Фронтенд часть приложения
│   │   ├── assets/               # Изображения и иконки приложения
│   │   ├── components/           # Переиспользуемые UI-компоненты (Button, Header, BottomNav и т.д.)
│   │   │   ├── BottomNav.js
│   │   │   ├── Button.js
│   │   │   ├── Header.js
│   │   │   ├── HistoryItem.js
│   │   │   ├── ProPower.js
│   │   │   └── ScanConfirmationDialog.js
│   │   ├── screens/              # Экраны/страницы приложения
│   │   │   ├── DocumentDetailScreen.js
│   │   │   ├── EditProfileScreen.js
│   │   │   ├── HistoryScreen.js
│   │   │   ├── ScanResultScreen.js
│   │   │   └── SettingsScreen.js
│   │   ├── styles/               # CSS-стили для компонентов и экранов
│   │   ├── App.js                # Главный компонент приложения, маршрутизация
│   │   └── index.js              # Точка входа в приложение

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages