Обновить
128K+

Обработка изображений *

Работаем с фото и видео

79,75
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

2000 идентификаций в секунду: как выбрать нужную таблицу на документе без нейросетей

Время на прочтение8 мин
Охват и читатели3.2K

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

В Smart Engines мы решили эту задачу необычным способом: превратили каждый табличный регион в строку, которая одновременно описывает его геометрию и текстовое содержимое, а затем стали идентифицировать нужную таблицу с помощью регулярных выражений. Получился быстрый детерминированный алгоритм, способный выполнять около 2000 идентификаций таблиц в секунду даже на обычном мобильном процессоре.

Сегодня в статье мы расскажем, как устроено строковое представление таблицы, почему оно позволяет отказаться от набора хрупких эвристик и как более точная идентификация нужной таблицы влияет на итоговое качество распознавания документа.

Читать далее

Новости

RGB‑значения нужно нормализовать делением на 255 или на 256?

Время на прочтение8 мин
Охват и читатели60K

Допустим, вы пишете программу для обработки изображений. Программа получает изображение, преобразует его в значения с плавающей запятой, выполняет обработку и сохраняет изменённые пиксели на диск в виде 8-битных цветов. Сегодня я хочу рассмотреть вопрос преобразования целых значений в значения с плавающей запятой. Существует два решения, которые на Python и NumPy выглядят так:

Стандартное деление на 255

pixels = img / 255.0
result = process(pixels)
output = np.trunc(result * 255 + 0.5)

Альтернативное деление на 256

pixels = (img + 0.5) / 256.0
result = process(pixels)
output = np.trunc(result * 256)

Я предполагаю, что в обоих случаях выходные значения ограничиваются перед окончательным преобразованием типов:

# Ограничение и преобразование в 8 бит
output_8bit = output.clip(0, 255).astype(np.uint8)

В стандартном случае целочисленный 0 соответствует 0.0, а 255 соответствует 1.0. Это работает абсолютно нормально и именно так всё реализовано в GPU. В альтернативном случае прибавляется смещение на 0,5 и деление происходит на 256, поэтому целочисленный 0 соответствует 0.5/256=0.001953125. Это неудобно, потому что код обработки изображений, например, без знания константы не сможет обнаруживать чёрные пиксели. Из‑за этого мы привязываем логику к 8-битным значениям, даже если вычисления выполняются с плавающей запятой. В стандартном решении всегда можно предполагать, что чёрный соответствует 0.0.

Однако некоторых программистов всё равно притягивает альтернативное решение. В чём дело? Чем оно им так нравится?

Читать далее

Как генерировать реалистичные изображения при большом количестве параметров

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели8.6K

Сгенерировать реалистичный портрет по одному описанию несложно. Труднее одновременно управлять десятками параметров: возраст, пол, причёска, форма лица и другие признаки.

Такую задачу решал заказчик: ему нужно было генерировать набор фотореалистичных изображений людей для биометрического приложения. Его эксперименты давали изображения похожие на рисунки. Поэтому нам нужно было подобрать более эффективный метод генерации и управления атрибутами.

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

Что-же там за метод генерации такой

ЕСИА – не индульгенция: кто отвечает за ошибку идентификации и когда KYC можно строить без Госуслуг

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.2K

Привет, Хабр! Представим: финансовая организация получает из ЕСИА подтвержденные сведения о клиенте, завершает дистанционную идентификацию и принимает его на обслуживание. Позднее выясняется, что операцию совершал мошенник. Паспорт оказался утраченным, изображение документа – отредактированным, а доступ к учетной записи – скомпрометированным.

Кто отвечает? Оператор ЕСИА, потому что сведения пришли из государственной системы? Организация, которая приняла решение обслужить клиента? Или тот, кто когда-то разместил в системе недостоверные данные?

Интуитивный ответ – «если государственная система сказала, что все в порядке, какие могут быть вопросы к бизнесу». Юридический ответ устроен сложнее: подключение к ЕСИА распределяет функции между участниками процесса, но не переносит всю ответственность на оператора системы. Разберемся, где проходит эта граница и как построить технологический контур идентификации, который не сводится к одному зеленому чекбоксу.

Эту статью мы подготовили совместно с Национальным советом финансового рынка (НСФР). В основу юридической части легло заключение НСФР о правовых условиях использования решений Smart Engines для получения и проверки сведений, необходимых финансовым организациям при идентификации клиентов.

Дисклеймер: в тексте учитывается законодательство по состоянию на август 2026 года. Материал носит информационный характер и не заменяет правовой анализ конкретного бизнес-процесса.

Читать далее

Три разных номера из одной книги — и все проходят контрольную цифру

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели7.4K

У EAN-13 есть контрольная цифра, и из этого обычно делают вывод: раз проверка сошлась, номер прочитан верно. Вывод неверный. Я получил с одной книги три разных номера, и все три контрольную цифру проходят. Разбираю, почему так выходит, почему у QR такой беды нет и что с этим делать — с кодом, замерами и таблицей, откуда взялась каждая цифра.

Читать далее

Сшивка кадров с микроскопа: как собрать большое изображение из видео

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели12K

Рассматривать предметный образец под микроскопом — всё равно что пытаться увидеть концертный зал через замочную скважину: в поле зрения попадает только небольшой фрагмент, а общей картины не видно. 

Поэтому предметное стекло постепенно перемещают под камерой, а система записывает видео и собирает отдельные кадры в одно большое изображение, которое можно сохранить и использовать для исследования. Сделать это простым наложением кадров нельзя: во время движения они могут смазываться, освещение меняется, а похожие участки легко перепутать. Мы сравнили несколько подходов к совмещению соседних кадров.

Читать далее

Почему слабым местом кредитного конвейера может оказаться не только ставка, но и плохой OCR

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.6K

Привет, Хабр! Кредиты и все, что с ними связано – тема для многих весьма чувствительная. Мы в Smart Engines выступаем за то, чтобы сделать самые раздражающие процессы удобными и быстрыми. И в этом смысле распознавание документов – это редкий пример технологии, где интересы банка (сократить издержки), сотрудника (меньше рутины) и клиента (не ждать решение неделями) действительно совпадают. Под катом рассказываем, как автоматическое распознавание документов может трансформировать процесс кредитования в банках и как такие технологии становятся ключевым звеном кредитного конвейера.

Читать далее

Как измерить то, что вы никогда не замечаете

Уровень сложностиСложный
Время на прочтение7 мин
Охват и читатели6.6K

Как научить модель понимать пространство по одному уличному снимку и переводить перспективу в измеримые величины?

В статье исследуем этот вопрос на примере ширины тротуаров: восстанавливаем глубину сцены, строим 3D‑представление поверхности и проверяем, насколько точно машинное обучение может описать привычную городскую среду.

Читать далее

Объяснение диэдральных подгрупп на примере Factorio

Время на прочтение6 мин
Охват и читатели8.6K

Диэдральная группа — это математическое обозначение всех поворотов и отражений правильного многоугольника. Для n‑стороннего многоугольника всегда существует n возможных поворотов и n отражений, что даёт нам 2n возможных симметрий.

Сочетание любых двух симметрий даёт нам элемент из той же группы, и это превращает её в группу в математическом смысле.

Теория групп полезна при разработке игр. Я вспомнил об этом, прочитав девлог Factorio, в котором разработчик рассказал о проблемах, возникших из‑за того, что изначально он забыл учесть все случаи.

Читать далее

Типизация документов без OCR и нейросетей: 99.79% точности за 3 мс

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели14K

Когда пользователь загружает документ в систему, сначала нужно понять, что именно он прислал. Паспорт? Договор? Полис? Заявление? От этого зависит весь дальнейший сценарий обработки: какие поля искать, какие проверки выполнять и какой OCR использовать. Ошибка на этом этапе делает бессмысленной всю дальнейшую обработку. Мы покажем, что тип документа можно определить, вообще не читая его содержимое. Для этого не нужны OCR, нейронные сети или анализ текста – достаточно использовать геометрию документа.

Читать далее

Kandinsky WM 1.0: генеративные модели для Physical AI

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели10K

В конце прошлого года мы представили семейство моделей генерации изображений и видео Kandinsky 5.0. Флагманская модель Kandinsky 5.0 Video Pro заняла и долгое время удерживала первое место среди open-source-моделей в категории text-to-video на arena.ai. Сегодня мы выкладываем в открытый доступ Kandinsky WM 1.0, набор из трех специализированных моделей генерации видео для доменов Physical AI: автомобильные сценарии, робототехника и сцены со сложной физикой.

Читать далее

Как я автоматизировал создание стикеров для соцсетей: локально обучаем стилевую LoRA для SD 1.5 на 30 картинках

Уровень сложностиСредний
Время на прочтение31 мин
Охват и читатели9.6K

Генерация красивых единичных артов давно перестала быть проблемой. Но как только возникает прикладная задача — например, сделать серию консистентных иллюстраций или заготовок для стикерпака в едином стиле — обычный промпт‑инжиниринг начинает буксовать. Закрытые модели дают высокое качество, но забирают контроль и навязывают свое видение.

Поэтому я решил собрать собственный контролируемый пайплайн. Базой для эксперимента была выбрана Stable Diffusion 1.5. Да, это далеко не самая новая архитектура: она хуже современных моделей понимает комплексные описания, чаще ломает анатомию и ограничена базовым разрешением 512×512. Но у неё остаются неоспоримые козыри: низкие требования к железу, гигантская экосистема (ControlNet, чекпоинты) и возможность быстро обучать и тестировать гипотезы на домашнем ПК.

Суть эксперимента — обучить стилевую LoRA на обезличенной подборке стикеров из ВК. Модель должна была выучить не лицо конкретного персонажа и не манеру конкретного художника, а общие паттерны жанра: белый фон, упрощённые формы, характерный векторный контур и мультяшную выразительность эмоций.

Читать далее

ИИ в медицине. Часть 1

Уровень сложностиПростой
Время на прочтение29 мин
Охват и читатели12K

В 2026 году активно выходят новые фронтир LLM-ки, агентные системы и принципиально новые подходы в самых разных областях. Медицинский AI периодически перенимает наработки, однако область применения ИИ в медицине сейчас остается ограниченной.

Обсудим, какие сложности скрываются под капотом медицинского ИИ-сервиса, какие типы данных бывают в медицине, как с ними работать, какие модели подходят и как быть с этическими тонкостями при внедрении ИИ-сервисов в медицинский контур

Читать далее

Ближайшие события

Как распознать резьбу без помощи ИИ

Время на прочтение3 мин
Охват и читатели15K

При производстве воздушных клапанов отливают и обрабатывают деталь с отверстиями. Отверстия могут быть:
1. Сквозное гладкое
2. Сквозное с резьбой
3. С заглушкой

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

Читать далее

Точность 99,2% и ни одной найденной опухоли: во что обходится компьютерное зрение в медицине

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели7.9K

Разговор всегда начинается одинаково. «Вы же делаете детекцию брака на конвейере: там деталь и дефект, тут снимок и опухоль, разница в датасете. Дайте модель, которая находит рак, точность нужна процентов 98, ну 99, чтобы наверняка».

Логика в этом есть, и я не иронизирую. Архитектурно между дефектом сварного шва и узлом в легком действительно нет пропасти, обе задачи это поиск аномалии на картинке. Человек напротив рассуждает правильно ровно до того момента, пока не произносит слово «точность».

В шведском исследовании MASAI, самом крупном рандомизированном испытании ИИ в скрининге на сегодня, участвовали 105 934 женщины. Возьмем группу, где маммограммы смотрели с ИИ-поддержкой: 53 043 участницы, рак за время наблюдения нашли у 420 из них. Распространенность 0,79%.

Теперь пишем модель. Она принимает снимок и возвращает «норма». Всегда. Никакого обучения, три строчки на питоне, разработка тридцать секунд.

Ее точность на этой выборке 99,21%.

Заказчик просил 98–99. Константа выдает 99,2 и не находит ни одной опухоли.

Дальше я честно считаю такой проект целиком. Во сколько встает разметка, если размечать умеет только врач. Почему эталон, по которому учат модель, сам расходится в четверти случаев. Где сеть выучивает больницу вместо болезни. Что требуют три регулятора, кто отвечает за ошибку и кто за все это платит. И когда оно дойдет до пациента.

Читать разбор

Занимаются ли разработчики ИИ‑моделей пеликанмаксингом?

Уровень сложностиСредний
Время на прочтение54 мин
Охват и читатели13K

Последние несколько лет Саймон Уиллисон тестировал каждый крупный релиз LLM одним и тем же промптом: «Сгенерируй SVG с пеликаном, сидящим на велосипеде».

Эта забавная проверка постепенно стала одним из самых известных неформальных бенчмарков ИИ. Сгенерированные Саймоном картинки пеликанов на велосипедах часто становятся одними из самых популярных комментариев в постах Hacker News о новых релизах ИИ-лабораторий.

Сегодня бенчмарк стал причиной серьёзных обсуждений его полезности, а также того, занимаются ли ИИ-лаборатории его бенчмаксингом [практикой оптимизации ИИ-моделей для получения высоких оценок в популярных бенчмарках]. Когда на кону миллиарды или даже триллионы долларов, а качественный результат может склонить пользователей на твою сторону, не возникает ли искушения добавить модели немного пеликанмаксинга?

Мне захотелось это проверить, поэтому я организовал небольшой эксперимент: сгенерировал 1008 SVG в семи передовых моделях, оценил их при помощи LLM-судьи и проанализировал результаты Claude Fable 5.

В этой статье я расскажу о результатах. Весь код доступен на Github.

Читать далее

Рисуем ASCII-арт в Vim

Время на прочтение6 мин
Охват и читатели7.3K

Мне нравится создавать ASCII-арт в Vim. Я не пользуюсь никакими плагинами: в Vim уже есть множество встроенных фич, очень полезных при рисовании ASCII!

Эта статья предназначена для тех, кто уже занимался ASCII-артом и хочет исследовать новые инструменты. А если вы никогда не пробовали создавать ASCII-арт, то рекомендую не читать эту статью! Вам не нужна вся эта информация для создания текстовой графики. Просто откройте любимый текстовый редактор и начинайте писать. А если не знаете, с чего начать, то изучайте работы мастеров и практикуйтесь. И уже после этого, если вам всё ещё будет интересно, возвращайтесь и прочитайте статью.

Vim — редактор не для всех. Я пользуюсь им просто потому, что знаю его. Если вы тоже прокляты этим знанием, то продолжайте чтение!

Рекомендую сначала освоить основы (например, открытие файла, переключение между режимами, сохранение и выход). Если вы новичок в Vim, то можете обучиться основам при помощи vimtutor!

Читать далее

Интеграция компьютерного зрения в АСУ ТП. IEC 61499 + python + CV = OpenFb

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели12K

В июле вышла новая версия OpenFB - открытой среды исполнения для IEC 61499, позволяющая вести разработку на python. OpenFB предназначена для разработки и интеграции приложений компьютерного зрения и ML алгоритмов в АСУ ТП.

В статье рассмотрен пример включения базовых алгоритмов компьютерного зрения в систему управления.

Читать далее

Шесть часов на один рендер: как я собрал нативную студию Ideogram 4 на Swift и MLX

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели9.2K

Я запустил Ideogram 4 локально на Mac, а затем собрал для него нативное приложение на Swift и MLX — без отдельного Python-процесса во время рендера. Сразу честно: «6 часов против 11 минут» — не ускорение одной картинки в 35 раз, а два разных режима: максимальный Quality 2048×2048 на 48 шагах и повседневный Turbo 1152×768 на 12. Это продолжение серии о Typhoonminigen. В статье — архитектура приложения, реальные замеры, удачные решения, ограничения и ошибки, которые пришлось исправлять по пути.

Читать далее

И треснул мир напополам: как в США и Китае развили две инженерные школы графического GenAI

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели9.3K

Генерация изображений в последнее время заметно продвинулась и справляется даже с тонкими задачами на высоком уровне. За последние два года я с базовыми знаниями в дизайне оформлял книги, готовил иллюстрации для статей, собирал презентации и решал графические задачи в коммерческих проектах — и вынес из этого одно: универсальной модели не существует. Каждая архитектура сильна в своей нише, а выбор инструмента стал такой же частью работы, как и сам промпт.

Работая с Midjourney, DALL-E 3, FLUX, Hunyuan-DiT, Wanxiang и Seedream, я заметил: один и тот же запрос в разных системах давал принципиально разные результаты — и дело было не в стилистике. Одни модели буквально расставляли объекты по местам, как в инструкции. Другие могли проигнорировать часть описания, зато выдавали плотность деталей и сложность ракурсов, недоступную первым.

Сначала я списывал это на языковой барьер — казалось, что западные и китайские системы по-разному интерпретируют запрос. Но список причин быстро расширился: датасеты, токенизаторы, глубина текстовых энкодеров. Каждая деталь что-то объясняла, но общей картины не давала. За различиями стояло нечто большее — две инженерные школы, изначально оптимизировавшие разные ресурсы, а сейчас движущиеся к конвергенции.

Тут я вспомнил старый плакат из дизайн-студии нулевых: «Быстро. Дешево. Качественно. Выберите любые два». Раньше это звучало как шутка, теперь — как точное описание логики развития сложных систем.

Эта статья — попытка понять сложившуюся экономику моделей через их историю: разобрать ключевые развилки последних лет, заглянуть под капот графических движков и понять, в какие ниши сегодня выстраивается конвергенция технологий.

Читать далее
1
23 ...