Фёдорков Фёдор Геннадьевич · группа ИС50-11/3-23 · специальность 09.02.07
Московский приборостроительный техникум · РЭУ им. Г. В. Плеханова · руководитель Прищеп В. С.
WindowCapture — настольное приложение для Windows. Одно нажатие клавиши: экран замирает, нужная область выделяется сама, нейросеть Google Gemini пишет описание снимка, и в открытый документ Microsoft Word вставляется готовый абзац с картинкой и подписью «Рисунок N — наименование» по ГОСТ.
Полный текст пояснительной записки и презентация к защите. PDF открывается прямо в браузере.
Полный текст ВКР: анализ предметной области, постановка задачи, проектирование, реализация, тестирование, приложения с листингами.
открыть PDF Презентация к защитеСлайды доклада: актуальность, цель и задачи, архитектура, результаты, демонстрация и заключение.
скачать PPTXОбъём и характеристики готового приложения.
Шесть шагов от нажатия горячей клавиши до готового рисунка в документе. У каждого шага указан файл, где он реализован, — название можно найти в разделе «Исходный код».
Код разбит на изолированные подсистемы. Нажмите на любой блок — откроется список его файлов, а из него — сам код с подсветкой.
Точка входа: STAThread, DPI per-monitor, TLS 1.2 для .NET 4.0, выбор режима запуска
App/Ядро: низкоуровневые хуки клавиатуры и мыши, контроллер захвата, трей, режимы приложения
UI/Интерфейс: редактор EditorForm (14 partial), замороженный оверлей, канва аннотаций, настройки
Detection/Компьютерное зрение: оператор Собеля, BFS-заливка, адаптивный порог, расширение области
Effects/Рендеринг: Direct2D со fallback на GDI+, неразрушающие слои эффектов, размытие
Integration/Интеграции: Gemini REST API с фолбэком моделей, Word через позднее связывание COM, DOCX
Helpers/Автокоррекция текста (noisy channel, SymSpell, фильтр Блума, нейросети) и утилиты
Native/P/Invoke и COM-обёртки: WinAPI, Direct2D, Media Foundation, WASAPI, DirectShow
Recording/Запись экрана: BitBlt-цикл, H.264 через Media Foundation, fallback WMV3 / MJPEG, AVI
Models/Структуры данных: настройки, привязки клавиш, аннотации (Безье), параметры Gemini
Ocr/OCR-хелпер на .NET 8: Windows.Media.Ocr, вызывается отдельным процессом (Ctrl+T)
Spell/Python-сервер орфокоррекции: SAGE fredt5-distilled-95m, реранжировка rubert-tiny2
Tip/TSF Text Input Processor на C++: правка слова in-place через ITfRange (эксперимент)
APO/Audio Processing Object на C++: подмешивание звука саундпада в микрофон (эксперимент)
Tools/Обучение моделей: тренеры нейросетей на C# и PyTorch/CUDA, сборка словарей и биграмм
Docs/Проектная документация: архитектура, исследования, дизайн подсистем (Markdown)
Главные алгоритмы работы с изображениями и текстом. Ссылка под каждой карточкой ведёт на точное место в коде, вплоть до строки.
Свёртка 3×3 с ядрами Gx, Gy по каждому каналу RGB; градиент G = sqrt(Gx² + Gy²), итог — максимум каналов. Строит карту границ для умного выделения.
Detection/Detector.cs — ComputeEdgeMap, строка 684BFS через Queue<Point> от точки под курсором; граница — ребро Собеля или перепад цвета выше адаптивного порога (80-й перцентиль окрестности).
Detection/Detector.cs — Detect, строка 127B(t) = (1−t)³P0 + 3(1−t)²tP1 + 3(1−t)t²P2 + t³P3. Стрелки редактора; наконечник ориентируется по касательной — производной кривой.
Models/ArrowAnnotation.cs — GetBezierPointВероятностная проверка слова по словарю в 1,5 млн словоформ: 3 хеша MurmurHash3, 16 бит на слово, 3 МБ вместо 60 МБ. Ложноотрицательных не бывает.
Helpers/BloomFilter.csФолбэк по списку моделей Gemini со статусами Working / RateLimited / Broken, ротация API-ключей при HTTP 429, запоминание последней рабочей модели.
Integration/GeminiIntegration.csType.GetTypeFromProgID + InvokeMember: управление Word без interop-сборок и привязки к версии Office; освобождение объектов через Marshal.ReleaseComObject.
Integration/WordIntegration.cs