| 1 | # Machine Learning: Fundamentals & Applied Tasks v1 |
| 2 | |
| 3 | Фундаментальный проход по машинному обучению и прикладным задачам: парадигмы обучения, типы задач, пайплайн данных; **OCR** (препроцессинг, Tesseract, когда облако vs on-device); **распознавание штрихкодов и 2D-кодов** (1D/2D, UPC, EAN, Code 128, QR, Data Matrix, требования к изображению). Мир **software.ml-applied** обеспечивает согласованность с остальной базой знаний при запросах на ML, распознавание текста и кодов. |
| 4 | |
| 5 | **world:** `software.ml-applied` |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## 1. Парадигмы обучения |
| 10 | |
| 11 | | Парадигма | Описание | Типичные задачи | |
| 12 | |-----------|----------|------------------| |
| 13 | | **Supervised** | Обучение по размеченным парам «вход–выход»; предсказание на новых входах | Классификация (категория), регрессия (число) | |
| 14 | | **Unsupervised** | Поиск структуры в данных без меток | Кластеризация, снижение размерности, аномалии | |
| 15 | | **Semi-supervised** | Мало размеченных + много неразмеченных данных | Когда разметка дорогая, а неразмеченных много | |
| 16 | | **Reinforcement** | Обучение через взаимодействие со средой и награды | Управление, игры, политики действий | |
| 17 | | **Transfer** | Перенос модели с одной задачи/домена на другую | Дообучение на малом целевом датасете | |
| 18 | | **Self-supervised** | Предобучение на неразмеченных данных, затем дообучение на задаче | Языковые и визуальные модели | |
| 19 | | **Deep learning** | Многослойные сети, иерархические представления | Классификация изображений, NLP, речь | |
| 20 | | **Generative** | Генерация контента или многшаговые задачи | Текст, изображения, оркестрация | |
| 21 | |
| 22 | - **Классификация** — предсказание категории (спам/не спам, объект на изображении). |
| 23 | - **Регрессия** — предсказание числа (цена, вероятность, оценка). |
| 24 | - Стандартное разбиение данных: **train** (обучение), **validation** (подбор гиперпараметров, ранняя остановка), **test** (финальная оценка на невидимых данных). Утечка теста в обучение недопустима. |
| 25 | |
| 26 | --- |
| 27 | |
| 28 | ## 2. Прикладные задачи и выбор подхода |
| 29 | |
| 30 | - **Распознавание текста (OCR), штрихкодов, QR/2D-кодов** — ниже §3–4. |
| 31 | - **Распознавание объектов, лиц, сцен** — обычно supervised/transfer (предобученные CNN); при ограничениях по приватности или latency — on-device (например ML Kit, Core ML). |
| 32 | - **Кластеризация пользователей/событий** — unsupervised (k-means, иерархическая, DBSCAN) или semi-supervised при частичных метках. |
| 33 | - **Аномалии** — unsupervised (изоляция, статистика) или one-class / детекция новизны при наличии только «нормы». |
| 34 | - **Рекомендации** — коллаборативная фильтрация, контентные признаки, гибриды; метрики — precision/recall, NDCG под задачу. |
| 35 | - **Когда ML, когда правила:** при чётких, стабильных правилах и малом объёме исключений — правила дешевле и предсказуемее; ML оправдан при паттернах в данных, шуме, изменяющемся распределении или когда правила неформализуемы. |
| 36 | |
| 37 | --- |
| 38 | |
| 39 | ## 3. OCR (распознавание текста) |
| 40 | |
| 41 | ### 3.1 Назначение и границы |
| 42 | |
| 43 | - **Цель:** извлечь текст из растрового изображения (скан, фото, кадр) в машиночитаемый вид (строка, разметка по блокам/строкам/словам). |
| 44 | - **Ограничения:** качество результата сильно зависит от разрешения, контраста, наклона, шрифта и языка; плохой вход без препроцессинга даёт мусор на выходе. |
| 45 | |
| 46 | ### 3.2 Препроцессинг (критичен для точности) |
| 47 | |
| 48 | - **Разрешение:** Tesseract и многие движки лучше работают при **300+ DPI**; масштабирование низкого разрешения вверх не восстанавливает детали, но выравнивание по сетке и бинаризация могут помочь. |
| 49 | - **Ориентация и наклон:** автоматическое определение ориентации (0°/90°/180°/270°) и **выравнивание (deskew)**; при наклоне падает качество сегментации строк. |
| 50 | - **Бинаризация:** перевод в ч/б (Otsu, адаптивный Otsu, Sauvola) при неравномерном фоне и тенях. |
| 51 | - **Шум:** удаление артефактов и пятен (морфология, фильтры); при «расплывших» буквах (исторические документы) — осторожная морфология (расширение/эрозия) для нормализации толщины. |
| 52 | - **Контраст и выравнивание фона:** выравнивание освещения и удаление водяных знаков/пятен улучшают стабильность распознавания. |
| 53 | |
| 54 | ### 3.3 Движки и режимы (Tesseract) |
| 55 | |
| 56 | - **OEM (Engine):** LSTM (--oem 1) — по умолчанию, нейросетевой, лучше для сложных и многоязычных документов; Legacy (--oem 0) — посимвольные шаблоны, проще и легче по ресурсам. |
| 57 | - **PSM (Page Segmentation Mode):** 3 — авто; 6 — один блок текста; 11 — разреженный текст; 13 — одна строка и т.д. Подбор под тип страницы (книга, форма, этикетка) сильно влияет на результат. |
| 58 | - **Языки:** указать нужные языки (например eng+rus); лишние языки увеличивают путаницу и время. |
| 59 | |
| 60 | ### 3.4 Облако vs on-device |
| 61 | |
| 62 | - **Облако (Google Cloud Vision, AWS Textract, Azure Document Intelligence):** высокая точность, сложные макеты, многоязычность, рукопись; зависимость от сети, стоимость, вопросы конфиденциальности. |
| 63 | - **On-device (Tesseract, EasyOCR, ML Kit):** бесплатно, офлайн, низкая задержка; качество сильно зависит от препроцессинга; для «грязных» или сложных макетов часто нужен более тяжёлый облачный пайплайн или кастомная модель. |
| 64 | - **Правило:** начинать с препроцессинга и Tesseract (или аналога) на типовых документах; при плато качества или требованиях к рукописи/сложному layout — рассматривать облако или кастомную модель. |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ## 4. Распознавание штрихкодов и 2D-кодов (Barcode, QR, Data Matrix и др.) |
| 69 | |
| 70 | ### 4.1 1D (линейные) штрихкоды |
| 71 | |
| 72 | - **Кодирование:** вертикальные полосы, данные только по горизонтали; объём обычно до ~85 символов. |
| 73 | - **Типы:** UPC-A (12 цифр, ритейл США), UPC-E (6); EAN-13 / EAN-8 (Европа, товары); **Code 128** (цифры и буквы, логистика, авто, оборонка); Code 39, Code 93, ITF, Codabar и др. |
| 74 | - **Сканирование:** линейные лазерные сканеры или area-имиджеры (камера); для камеры нужно достаточное разрешение и контраст, минимум ~2 px на узкий элемент для стабильного чтения. |
| 75 | |
| 76 | ### 4.2 2D-коды |
| 77 | |
| 78 | - **Кодирование:** сетка модулей (квадратов), данные по горизонтали и вертикали; большая ёмкость, встроенная коррекция ошибок (до ~30% повреждения допустимо). |
| 79 | - **QR Code:** ссылки, текст, контакты; массовое использование, хорошая поддержка в библиотеках и на устройствах. |
| 80 | - **Data Matrix:** очень высокая надёжность (низкая частота ошибок), малый размер; аэрокосмос, фарма, производство, маркировка мелких объектов. |
| 81 | - **Другие 2D:** Aztec, PDF417 и т.д. — под отраслевые стандарты. |
| 82 | |
| 83 | ### 4.3 Требования к изображению и выбор решения |
| 84 | |
| 85 | - **Разрешение:** элемент кода (модуль/полоса) не менее **2 px** по ширине; для мелких кодов — увеличить разрешение кадра или приблизить камеру. |
| 86 | - **Резкость и освещение:** размытие и блики снижают надёжность; равномерное освещение, без пересвета по центру кода. |
| 87 | - **Ориентация:** большинство современных декодеров (ML Kit, ZXing, облачные API) работают при любом повороте; для 1D лазерных сканеров ориентация полос важна. |
| 88 | - **On-device:** ML Kit (Firebase), ZXing, встроенные API iOS/Android — быстрые, офлайн, под мобильные и встраиваемые сценарии. |
| 89 | - **Облако:** при необходимости распознавания повреждённых или нестандартных кодов, массовой пакетной обработки — Cloud Vision API и аналоги. |
| 90 | - **Сложные/повреждённые QR:** специализированные решения (например QReader на базе YOLO + декодер) для «трудных» изображений. |
| 91 | |
| 92 | --- |
| 93 | |
| 94 | ## 5. Операционный слой (правила по сигналу → действие) |
| 95 | |
| 96 | | # | Сигнал | Действие | Граница переноса | |
| 97 | |---|--------|----------|-------------------| |
| 98 | | R1 | Задача: предсказать категорию или число по данным | Выбрать парадигму: supervised (класс/регрессия); разбить train/val/test; не допускать утечки test в обучение | software.ml-applied | |
| 99 | | R2 | OCR даёт мусор или низкая точность | Проверить препроцессинг: DPI/масштаб, deskew, бинаризация, шум; подобрать PSM/OEM (Tesseract) или язык; при плато — облако или кастомная модель | OCR-пайплайны | |
| 100 | | R3 | Нужен OCR офлайн или на edge | Tesseract / EasyOCR / ML Kit Text Recognition; обязательно настроить препроцессинг и языки | On-device OCR | |
| 101 | | R4 | Распознавание штрихкода/QR в приложении | Выбрать формат (1D vs 2D, конкретный тип при известности); обеспечить разрешение ≥2 px на элемент, равномерный свет; ML Kit / ZXing / платформенные API для on-device | Barcode/QR | |
| 102 | | R5 | QR или 2D-код не читается | Проверить размер кода в пикселях, резкость, блики, частичное закрытие; при повреждениях — специализированный декодер или препроцессинг (выравнивание, контраст) | 2D-коды | |
| 103 | | R6 | Вопрос «ML или правила?» | Если правила чёткие и стабильные — правила дешевле; ML — при паттернах в данных, шуме, меняющемся распределении или неформализуемых правилах | Выбор подхода | |
| 104 | | R7 | Развёртывание модели в продакшене | Валидация на отложенной выборке; мониторинг дрифта и качества; версионирование данных и модели; откат при деградации метрик | MLOps (краткий ориентир) | |
| 105 | |
| 106 | --- |
| 107 | |
| 108 | ## 6. Transfer boundary |
| 109 | |
| 110 | - Применимо к **прикладному ML**: выбор парадигмы и типа задачи, пайплайны OCR и распознавания кодов, требования к данным и изображениям, on-device vs облако. |
| 111 | - **software.ml-applied** не подменяет: глубокую теорию (learning theory, оптимизация), доменные онтологии (медицина, финансы), юридические требования к персональным данным при обработке ML в продакшене — при необходимости маршрутизировать в соответствующие домены и документы. |
| 112 | - Согласованность: при запросах на OCR, barcode, QR, «распознавание текста/кодов», «машинное обучение для прикладных задач» — загружать этот kb и применять мир **software.ml-applied**. |
| 113 | |
| 114 | |