Mistral OCR App - это современное и мощное веб-приложение, предназначенное для извлечения текста и изображений из различных документов с использованием передового Mistral AI OCR API. Приложение обеспечивает высококачественную конвертацию PDF, изображений (PNG, JPG, JPEG) и документов DOCX в удобные форматы Markdown и JSON. Оно идеально подходит для исследователей, разработчиков, студентов и всех, кому необходима быстрая и точная оцифровка документов.
Mistral OCR App предлагает широкий набор функций, разработанных для максимального удобства и эффективности:
- PDF Документы: Полная обработка многостраничных PDF-файлов с извлечением текста и изображений.
- Изображения: Поддержка популярных форматов PNG, JPG, JPEG.
- Документы MS Word: Прямая обработка файлов
.docx. - URL Загрузка: Возможность обработки документов по прямой ссылке или из Google Drive.
- Темы Оформления: Выбор между темной, светлой и автоматической темой (синхронизация с системными настройками).
- Адаптивный Дизайн: Корректное отображение и функциональность на любых устройствах (от смартфонов 320px до широкоформатных мониторов 1440px+).
- Высокий Контраст: Соответствие стандартам WCAG для обеспечения доступности.
- Интуитивный UX: Плавные анимации, переходы и использование Bootstrap Icons для визуальной ясности.
- Комплексное Управление: Доступ к 7 категориям настроек: API, Обработка, UI, Визуализация, Экспорт, Производительность, Безопасность.
- Профили Настроек: Готовые профили (
Default,Academic,Business,Performance) для быстрого старта. - Персонализация: Возможность экспорта и импорта пользовательских настроек в формате JSON.
- Аудит и Сохранение: История изменений настроек и их локальное сохранение в браузере для удобства пользователя.
- Извлечение Изображений: Автоматическое нахождение и извлечение изображений из документов.
- Markdown Рендеринг: Встроенный просмотр Markdown с подсветкой синтаксиса для удобной работы с результатами.
- Оптимизация Производительности: "Ленивая" загрузка (Lazy Loading) изображений и анимированный прогресс-бар.
- Надежность: Валидация форм в реальном времени и демо-режим для тестирования без API ключа.
- Уведомления: Информативные Toast-уведомления о статусе операций.
- Встроенные Изображения: Получение единого
.mdфайла с изображениями, встроенными как Base64. - Архив с Файлами (.zip): Экспорт структурированного архива, содержащего
.mdфайл, папку с изображениями (images/figure_X.png) и файл метаданных (metadata.json). - Интерактивный HTML: Создание HTML-страницы с результатами OCR и интерактивными элементами.
- Автоматическая Очистка: Временные файлы удаляются после обработки для экономии места.
Примечание: Рекомендуется добавить сюда скриншоты интерфейса приложения для наглядной демонстрации его возможностей.
- Пример 1: Скриншот главного экрана с опциями загрузки и настройками.
- Пример 2: Скриншот экрана результатов с отображением Markdown и извлеченных изображений.
- Пример 3: Скриншот вкладки "Настройки" с различными категориями.
Также, короткая GIF-анимация или видео, демонстрирующее процесс от загрузки документа до получения результата, значительно улучшит восприятие.
Пример Workflow (Экспорт в ZIP-архив):
- Пользователь загружает PDF-документ.
- Выбирает формат экспорта: "📁 Архив с файлами".
- Нажимает "Обработать документ".
- Получает
structure_analysis.zipследующей структуры:structure_analysis.zip/ ├── document.md # Чистый markdown текст ├── images/ │ ├── figure_1.png # Извлеченное изображение 1 │ └── figure_2.png # Извлеченное изображение 2 └── metadata.json # Информация об OCR (дата, кол-во страниц и т.д.) - Временные файлы на сервере автоматически удаляются.
Приложение построено на современном и надежном стеке технологий:
graph TD
A[Загрузка: PDF, JPG, DOCX, URL] --> B(Flask Backend: Python);
B --> C{Обработка Документа};
C -- API Запрос --> D[Mistral AI OCR API];
C -- Локально --> E[Извлечение Изображений];
D -- Текст JSON --> F[Форматирование Текста];
E -- Файлы --> G[Подготовка Изображений];
F --> H{Генерация Результата};
G --> H;
H -- Markdown/JSON/HTML --> I[Пользовательский Интерфейс: HTML, CSS, JS];
I --> J[Скачивание: MD, ZIP, HTML];
subgraph "Клиент (Браузер)"
I
J
end
subgraph "Сервер (Python/Flask)"
B
C
E
F
G
H
end
subgraph "Внешний Сервис"
D
end
style A fill:#D6EAF8,stroke:#3498DB
style B fill:#E8DAEF,stroke:#8E44AD
style D fill:#D1F2EB,stroke:#1ABC9C
style I fill:#FCF3CF,stroke:#F1C40F
- Python 3.8+: Основной язык программирования.
- Flask: Легковесный и гибкий веб-фреймворк.
- SQLite: Реляционная база данных для хранения настроек и профилей.
- Mistral AI API: Для выполнения OCR задач.
- PyMuPDF (fitz), python-docx, Pillow: Библиотеки для обработки PDF, DOCX и изображений.
- HTML5: Семантическая разметка для структуры контента.
- CSS3: Модульная архитектура стилей (Base, Components, Layout) с использованием CSS переменных для тем.
- JavaScript (ES6+): Для интерактивности, валидации форм, управления темами и асинхронных запросов.
- Bootstrap 5.3: UI компоненты и сетка для адаптивного дизайна.
- Bootstrap Icons: Набор качественных иконок.
- Marked.js: Для рендеринга Markdown в HTML.
- Highlight.js: Для подсветки синтаксиса в блоках кода.
- Python 3.8 или выше.
pip(менеджер пакетов Python).git(для клонирования репозитория).- Mistral AI API ключ (опционально, если не использовать демо-режим).
-
Клонирование репозитория:
git clone https://github.com/ivan-meer/mistral-ocr-app.git cd mistral-ocr-app -
Создание и активация виртуального окружения:
python -m venv venv
- Windows:
venv\Scripts\activate
- macOS/Linux:
source venv/bin/activate
- Windows:
-
Установка зависимостей:
pip install -r requirements.txt
-
Настройка переменных окружения: Скопируйте файл
.env.exampleв.env:cp .env.example .env
Затем отредактируйте файл
.env, указав вашMISTRAL_API_KEYи другие необходимые параметры:MISTRAL_API_KEY="ВАШ_API_КЛЮЧ_MISTRAL" # Другие настройки...
Примечание: Если
MISTRAL_API_KEYне указан, приложение может работать в демо-режиме с ограниченной функциональностью. -
Инициализация базы данных (если требуется): При первом запуске база данных
settings.dbсоздается автоматически. Если необходимо пересоздать ее или выполнить скрипты изgithub_setup.sh/github_setup.bat, следуйте инструкциям в этих файлах. Обычно, для базового запуска это не требуется. -
Запуск приложения:
python app.py
Откройте http://localhost:5000 в вашем браузере.
-
Загрузка Документа:
- Перейдите на вкладку "Файл" для загрузки документа с вашего компьютера.
- Или используйте вкладку "URL" для указания прямой ссылки на документ или ссылку Google Drive.
-
Настройки Обработки:
- Перед обработкой вы можете настроить различные параметры на вкладке "Настройки". Изменения сохраняются автоматически.
- Выберите желаемый "Формат результата" (Встроенные изображения, Архив .zip, Интерактивный HTML).
- Укажите, нужно ли "Извлекать изображения".
-
Запуск Обработки:
- Нажмите кнопку "Обработать документ". Дождитесь завершения процесса (прогресс-бар покажет статус).
-
Работа с Результатами:
- Результаты OCR будут отображены на странице. Текст в формате Markdown будет отрендерен для предпросмотра.
- Извлеченные изображения будут показаны в виде галереи (если опция была включена).
- Используйте кнопки "Скачать" для сохранения результатов в выбранном ранее формате.
- Для PDF-документов доступен режим сравнения (если применимо).
Вкладка "Настройки" предоставляет доступ к детальному конфигурированию приложения:
- API и Обработка: Управление API ключами, лимитами размеров файлов, включение/выключение демо-режима.
- Интерфейс и Отображение: Выбор темы (Светлая, Темная, Авто), настройка шрифтов, включение/выключение анимаций.
- Экспорт и Сохранение: Настройки форматов экспорта по умолчанию, качество изображений, управление метаданными.
Вы можете Сохранять изменения, Сбрасывать их к значениям по умолчанию, а также Экспортировать текущие настройки в JSON-файл или Импортировать их из ранее сохраненного файла.
Основные компоненты проекта организованы следующим образом:
mistral-ocr-app/
├── app.py # Главный файл Flask приложения (логика, роуты)
├── main.py # Может содержать основную логику или быть точкой входа (уточнить назначение)
├── database/
│ ├── init_db.py # Скрипт для инициализации БД
│ └── settings_manager.py # Класс для управления настройками в БД
├── static/ # Статические файлы (CSS, JS, изображения для UI)
│ ├── css/ # Стили CSS (модульная структура)
│ ├── js/ # Клиентские скрипты JavaScript
│ └── assets/ # Логотипы, иконки и т.д.
├── templates/ # HTML шаблоны Jinja2
│ ├── index.html # Главная страница
│ ├── result.html # Страница результатов
│ └── compare.html # Страница сравнения (если используется)
├── assets/ # Ресурсы для README и проекта (баннеры, примеры)
│ └── img/
├── .env.example # Пример файла переменных окружения
├── requirements.txt # Список зависимостей Python
├── settings.db # Файл базы данных SQLite (создается автоматически)
├── README.md # Этот файл
└── ... # Другие файлы конфигурации и скрипты
Мы постоянно работаем над улучшением Mistral OCR App. Вот некоторые из планируемых направлений развития:
- Lightbox для изображений: Улучшенный просмотр извлеченных изображений.
- Кэширование результатов: Для ускорения повторной обработки идентичных файлов.
- Улучшение предпросмотра Markdown: Возможно, с редактированием в реальном времени.
- Пакетная обработка: Загрузка и обработка нескольких файлов одновременно.
- Поддержка дополнительных OCR-провайдеров: Например, Google Cloud Vision или Tesseract OCR (для локальной обработки).
- Расширенная документация API: Для интеграции с другими системами.
- Семантический анализ текста: Извлечение ключевых слов, сущностей, автоматическое резюмирование.
- Интеграция с AI: Ответы на вопросы по содержанию документа.
- Полноценная система автоматизации (workflows): Настраиваемые цепочки обработки.
- Мобильное приложение: Для удобного использования на смартфонах.
Полный список идей и планов можно найти в файле FUTURE_DEVELOPMENT.md.
Мы приветствуем любой вклад в развитие Mistral OCR App! Если у вас есть идеи, предложения по улучшению или вы хотите исправить ошибку:
- Ознакомьтесь с FUTURE_DEVELOPMENT.md, чтобы увидеть текущие планы.
- Проверьте существующие Issues, чтобы убедиться, что ваше предложение еще не обсуждается.
- Создайте новый Issue для описания вашей идеи или проблемы.
- Если вы хотите внести код, пожалуйста, следуйте стандартной процедуре:
- Форкните репозиторий.
- Создайте новую ветку для ваших изменений (
git checkout -b feature/ваша-фича). - Сделайте коммиты с описанием изменений.
- Отправьте Pull Request в основную ветку.
Пожалуйста, ознакомьтесь с нашим (пока еще не созданным, но планируемым) файлом CONTRIBUTING.md для получения более подробных инструкций по стилю кода и процессу разработки. Рекомендуется создать этот файл.
- На данный момент специфические известные проблемы не документированы. Если вы столкнетесь с проблемами, пожалуйста, создайте Issue.
- Производительность может зависеть от размера и сложности обрабатываемых документов, а также от скорости ответа Mistral AI API.
- Для сообщений об ошибках, запросов на новые функции или предложений по улучшению, пожалуйста, используйте раздел Issues нашего GitHub репозитория.
- Для других вопросов вы можете связаться с автором (если контактная информация будет предоставлена).
Проект Mistral OCR App распространяется под лицензией MIT. Подробности смотрите в файле LICENSE.
Сделано с ❤️ для эффективной работы с документами.

