Java Simple Server
2 поста
2 поста
@moderator, я возможно что-то не так сделал. Можно пересмотреть решение?
Недавно понадобилось вытащить данные из QR-кода на кассовом чеке. Чек уже успел пожить: слегка затёрт, плюс классические полоски от грязной головки при термопечати. Сканеры и приложения дружно говорили «не удалось распознать».
Первая мысль была классическая: открыть фото в редакторе и просто перерисовать все эти чёрные и белые квадратики руками. Через минут пятнадцать я понял, что это путь в никуда. Модулей там несколько сотен. Глаза уже начинали плыть, а я ещё даже до середины не добрался.
Тогда началось самое интересное — думалка.
Сначала хотелось полностью автоматизировать. Натравить какую-нибудь нейросеть, чтобы она «восстановила» картинку. Но чем больше я об этом думал, тем сильнее понимал: нейросеть на таких грязных данных легко начнёт фантазировать. А мне нужна не красивая картинка, а точный код, который реально прочитается.
В итоге пришло решение, которое оказалось самым правильным: самый мощный, бесплатный и пока не превзойдённый ИИ на планете — человеческий мозг. Но использовать его нужно умно, а не заставлять человека тупо тыкать в каждую точку с нуля.
Вот как это выглядит в деле.
Сначала просто загружаешь фото:
Дальше можно нормально подготовить снимок: обрезать, повернуть, подкрутить экспозицию, яркость, контраст, гамму, насыщенность, шумоподавление и резкость. После каждого изменения программа сразу пытается прочитать QR.
Часто уже на этом этапе хватает. Если код прочитался — программа сразу выдаёт чистый QR и сами данные. Их можно скопировать, а код сохранить картинкой. И всё, дальше идти не нужно.
Если же даже после всех правок фото код всё равно молчит — тогда включается более тяжёлая артиллерия. Программа сама находит область, считает размер модуля и строит сетку.


Если чек снят криво или бумага изогнута — можно выровнять автоматически по finder-паттернам или потянуть контрольные точки руками:
И только если совсем ничего не помогает — начинается самый крайний режим: построчная проверка каждого модуля. Программа предлагает цвет, а ты только подтверждаешь или инвертируешь (пробел / X).


Всё это работает полностью локально в браузере. Фото никуда не уезжает.
Получился такой гибрид: компьютер делает всю тяжёлую и нудную работу по геометрии, измерению яркости и попыткам прочитать код, а финальное решение в сложных случаях оставляет человеку. Потому что на грязном чеке с полосками именно глаз пока ещё лучше любого алгоритма понимает «это чёрный или уже почти белый».
Инструмент лежит здесь: https://zoommax.space/
Если у кого-то валяется такой же «полумёртвый» QR с чека, наклейки или старой распечатки — можете попробовать. Интересно, насколько далеко можно зайти с сильно повреждёнными кодами.
А вы когда-нибудь пытались вручную восстанавливать QR? Какие ощущения остались?
Всем павшим и выжившим во все времена.
Вообще видео не раскрывает время и место. Так что судите сами.
@Yota, оказывается вы и тут есть и даже отвечаете. Это круто! (первый оператор, которого я вижу на пикабу)
Тс, ну что Вы как ребёнок маленький? -"Мне обещали пожизненно, а потом отняли!". Вам дали связь за +/- 200 руб, акция "доплати абоненту" закончилась. Оператор в праве менять условия по договору в одностороннем порядке, но должны уведомить клиента, чтобы последний мог решить для себя продолжать ли пользоваться услугами компании.
Я сам на Yota с 2015 года. Мой тариф несколько раз дорожал, но на гораздо меньшие цифры и с гораздо меньшей частотой, чем у других операторов. Плачу спокойно полную стоимость (~750р/м). Да, есть проблемы с сетью (она местами проседает), но в среднем я спокойно получаю свои 150-200 мб/с (максимум в моменте было 468 мб/с).
P.S.
По личной традиции (раз в год мне попадаются гневные посты на Yota), спрошу у @Yota, когда уже сделают услугу белого IP для физлиц? Ну или хотя бы для самозанятых.
...пишет стихи, музыку и понимает, как работают нейросети.
Итог:
Название - Туман.
Стихи - Сотников Евгений Геннадьевич
Музыка - Филатов Юрий Михайлович (ZooMMaX), Сотников Евгений Геннадьевич
Аранжировка, исполнение - нейросеть Suno AI
Параметры запроса (промпт) для тех, кому интересно:
Текст песни с уточнениями в виде тегов:
[Main theme sheet music: CCFCCFCCACCA]
[Intro]
[Verse 1][Calm]
В гла́зах тума́н и тя́желели ла́ты,
Сочи́тся кро́вь из ра́н ещё живы́х,
Круго́м друзья́, таки́е же солда́ты,
Они́ беззву́чны короли́ немы́х...
[Chorus][Massive]
короли́ немы́х...
короли́ немы́х...
короли́ немы́х...
короли́ немы́х...
[Bridge]
[Verse 2][Calm]
Молча́т ручьи́, пони́кли пти́чьи ста́и
Пестре́ет ме́ч изре́занный в борьбе́
Круго́м друзья́, они́ давно́ не спа́ли
И ве́чный сон несёт их на себе́...
[Chorus][Massive]
ве́чный сон...
несёт их на себе́...
ве́чный сон...
несёт их на себе́...
ве́чный сон...
несёт их на себе́...
ве́чный сон...
несёт их на себе́...
[Bridge]
[Verse 3][Calm]
И благоро́дным ли́ком смо́трят го́ры,
На искорёженный ковёр из тел,
А сре́ди них сную́т укра́дкой во́ры,
Тако́в их жи́зненный уде́л...
[Chorus][Massive]
жи́зненный уде́л...
жи́зненный уде́л...
жи́зненный уде́л...
жи́зненный уде́л...
[Bridge]
[guitar solo]
[Verse 4][Calm]
В гла́зах тума́н, упа́л он на коле́ни,
Клино́к вонзи́в в исто́птанную тве́рдь,
И ра́зум потону́л в забвенной ле́ни,
От молодо́во се́рдца отгоня́я сме́рть...
[Chorus][Half-whisper]
отгоня́я сме́рть...
отгоня́я сме́рть...
отгоня́я сме́рть...
отгоня́я сме́рть...
[guitar solo]
[Outro]
[End]
Стиль музыки:
heavy metal, lyrics, minor, Aria (band)
Для лучшего произношения русского языка используйте буквы с ударениями. В некоторых местах лучше написать так, как слово произносится, а не так, как оно правильно пишется.
Понравилось? Ну тогда на Ваше усмотрение - лайк, можно донат, а можно перейти по ссылке и сгенерировать 10 бесплатных песен (а я получу бонусы от Suno AI).
Творит чудеса