Популярное сообщение StrangerOne Опубликовано: Суббота в 12:18 Популярное сообщение Поделиться Опубликовано: Суббота в 12:18 Топдек, привет! Разбавлю немного темы со спойлерами рассказом о том, как я сам себе создал трудности, а после героически их преодолевал. Меня кстати Саня зовут, если что... Примерно месяц назад после очередного турнира, который не собрался, на фоне дум о том, что надо реализовать кучу около-валидного и ненужного картона меня придавило очередным приступом лени и уныния, ведь чтобы сделать торговую тему, казалось, нужно потратить N часов. Как совсем капельку программист и еще меньшую капельку дата-сатанист/мл-инженер а на деле дармоед и бездельник начал думать о том, как бы эту штуку автоматизировать, чтобы не заниматься заполнением торговой темы самому. С одной стороны, проставить цены на карты и сформировать красивую тему, вроде как, не сложно, и это достаточно просто автоматизировать. Наиболее трудной частью, на мой взгляд - "оцифровать" свою коллекцию. Искра, буря, безумие и вот уже в голове сидит навязчивая идея: Надо сделать программу распознавания карт МТГ! Прежде всего хочу сказать, что да, я знаю/слышал, что на рынке существует множество готовых решений по распознаванию карт, которые позволяют, скорее всего, гибко работать с коллекцией, выгружать и загружать ее в кастомном формате (кстати можно поделиться такими продуктами) и прочая-прочая, но: Я не искал готовые решения, так как просто загорелся "спортивным интересом" смогу ли я реализовать подобную систему своими силами, которая будет работать хотя-бы не хуже. Или просто хотя-бы работать. Готовые решения, скорее всего, будут платные (а если есть бесплатные, то смотри п.1),. Хочется получить всё любой ценой, но бесплатно. Собственно, порядка двух-трех недель нерегулярной работы после основной работы и по выходным и некий "MVP" (назовем его так) - готов, и так как я, очевидно, жаден до внимания, раз создал этот пост, то надо срочно поделиться им со всем интернетом. В этой теме я хотел бы поделиться результатом, наработками, рассказать что получилось, а что нет, мб попросить помощи. Для тех кто не хочет читать - ссылки на решение под катом. Я сразу бы хотел сказать, что тут вы не найдете "продуктового" решения. Всё находится максимально в начальной стадии, не было покрыто тестами, и делалось для себя "дай бог чтоб работало". Дальнейшая полировка планируется, но по срокам сказать сложно... Скрытый текст Репозиторий с решением находится здесь. Там есть README для запуска и продублированы ссылки. Если вдруг нужно, то вот тут датасет с картинками, которые я стащил со Скрайфола Ссылки на бинарник с эмбеддингами и на JSON с метаданными Базовая идея решения Когда речь заходит о распознавании и компьютерном зрении и многих в голове нарисуется образ тяжелых нейросетевых алгоритмов, требующих кучу памяти и вычислительных мощностей. Основная концепция, которой я придерживался - постараться как можно сильнее облегчить общую схему работы, избежать перетяжеления и нейросетей там, где можно справиться без них и оставить только там, где, на мой взгляд, это необходимо. Карту на фотографии (или на кадре видео) мы будем искать не используя нейронные сети вообще, исключительно при помощи методов компьютерной графики и классических трюков компьютерного зрения. Обнаружив карту - мы нещадно вырезаем ее из исходной картинки, исправляем искажения перспективы (спасибо что ты есть, линейная алгебра), после чего и начинается нейросетевая магия, приправленная щепоткой магии математической. Нейросетевая магия будет заключаться в том, что мы используем модель от open-AI, чтобы нагенерировать с наших картинок такое умное слово как "эмбеддинги". Если очень кратко, наша нейронная сеть каждому изображению ставит в соответствие некий вектор, в 768-мерном пространстве. При этом результат такого преобразования "не подвержен случайности", то есть для каждой картинки мы будет получать конкретный вектор-эмбеддинг. Идея состоит в том, что создав эмбеддинги для картинок-эталонов (hi-rez сканов наших карт), впоследствии, имея на руках вырезанные из наших фото/видеопотока фрагменты с настоящими (физическими) картами магии мы можем провести с ними ту же самую операцию (сгенерировать эмбеддинг), а после найти максимально похожий в нашем "эталонном списке". Вооружившись API скрайфолла, асинхронным Питоном и кружкой кофе за ночь были скачены ~392 тысячи изображений, что в сумме составляет ~30 гигабайт играбельных карт, которые были напечатаны в бумаге, включая токены. Их кстати можно теперь скачать вот здесь. На самом деле, уже на этом этапе были выявлены некоторые трудности и потенциальные проблемы. Если с английским языком все замечательно и на каждую карту можно найти скан, то вот с другими языками... Скрытый текст То есть на некоторых картах просто нет хоть какого-то изображения (обычно на старых). Заместо них висят заглушки-плейсхолдеры. О том, что потенциально с этим делать и к чему это может привести я постарался описать в конце в пункте "Потенциальные проблемы и пути их решения". Скачав все файлы я запустил на них генерацию эмбеддингов. что заняло порядка полутора часов. Если необходимо, то скрипт для их получения я потом дополнительно могу прикрепить в репозиторий. Пока всё скачивалось и трансформировалось занялся механизмом детекции карт на изображении. На самом деле, тут у меня всё не так радужно, как и в других местах моего плана... Распознавание объектов без помощи нейросетей это не сильно сложно, но муторно. Классические алгоритмы требуют, зачастую, тонкой настройки гиперпараметров алгоритма, чтобы работать устойчиво. То на каком фоне объект находится, насколько он засвечен, на какую камеру и в каком разрешении ведется съемка - ОЧЕНЬ сильно влияет на качество распознавания, а, значит, и на качество работы всего решения. Признаться, тут я немного (много) считерил и адаптировал решения под условия, которые есть у меня. На первое время пример, что карты будут находиться на светлом фоне (а значит можно эксплуатировать контраст фона и карты) и сниматься на мой телефон (то есть я имею +- устойчивое качество, под которое я могу заточить гиперпараметры). Про то что делать дальше и как улучшить то что есть, опять же, в конце поста. Алгоритм оптимизации достаточно прост если не вникать в математику. Делаем картинку серой, блюрим, делаем адаптивный трешхолд (если говорить очень грубо и неправильно, как раз этот шаг и позволяет найти эти контрастные объекты) + дилляцию (утолщения контуров). После запускаем по этому делу поиск замкнутых контуров (снова магия какая-то), ищем большие и прямоугольные - скорее всего это будет карта. Процесс такого преобразования по шагам изобразил на фото. Скрытый текст Запоминаем координаты контура, вырезаем его из картинки, а дальше используем еще немного магии и придаем ему нормальную ориентацию. В итоге будет что-то такое: Скрытый текст Теперь то что у нас получилось можно сунуть в сеть, и получить на выходе вектор нужной размерности. Остается дело за малым - найти похожий. Похожесть вектора будем измерять по косинусной близости (то есть буквально косинус угла между векторами. В многомерном пространстве достаточно хорошо работает как метрика близости, а считается вроде как быстрее чем L2-норма) Однако, если сравнивать полученный вектор с каждым, то можно умереть со старости. Чтобы искать похожие вектора в многомерном пространстве умные мужики придумали много решений. Одно из них я и решил использовать - hnsw (Hierarchical Navigable Small World). Подробнее о нем можно прочитать вот тут, но если коротко, алгоритм позволяет искать похожих не перебирая всю имеющуюся "базу данных", а хитрит, строит графы, а потому иногда может ошибаться, но работает в N раз быстрее. Таким образом, в принципе, у нас готова около-полная схема работы нашего решения. Как минимум она уже может работать на статичных картинках. В репозитории можно посмотреть ноутбуки с примерами. Реализация Чтобы интегрировать ее в видеопроцесс надо решить несколько важных вызовов: Сделать так, чтобы наш алгоритм выделения контуров и распознавания не пытался сделать картой и распознать всё подряд. Дело в том, что у подхода нет такого понятия "Это не карта". Если на вход нейросети подать, например, кота, а потом полученный вектор прогнать через поиск, то она обязательно выдаст какой-то ответ. То есть необходимо понимать, что пользователь программы (Я, или кто угодно кто запустит мой говнокод) зафиксировал положение камеры и направил его на карту магии. Сделать так, чтобы одна и та же карта не вызывала срабатывание алгоритма распознавания 30 раз в секунду при частоте, соответственно, 30 кадров в секунду и не писала 30 записей в БД. Для решения первого противоречия используется следующая хитрость. Во временном окне 20 кадров определяется, находится ли камера в стабильном состоянии. Для этого мы накапливаем кадры в двухсторонней очереди (ура, вставка слева и справа за О(1)), усредняем кадр и проверяем насколько он отличается от текущего используя Structural similarity index. Если кадр стабилен, то, скорее всего, пользователь навелся на объект интереса (или уснул) и можно запускать распознавание. Решение второй проблемы пока на самом деле в процессе... Есть идеи, как и для определения стабильности, мы можем во временном окне хранить какую-то характеристику контура (например его центр). Если контур с центром в такой точке пропадает на какое-то время, то мы его "забываем", но если контур у нас в памяти уже был "распознан" ранее, то для него мы распознавание не делаем. Такой подход костылен, но позволяет и не сканить одно и то же миллион раз и не ограничиваться эвристикой "второй такой карты нам на распознавание уже не придёт". Однозначно этот момент надо доработать в будущем Я не хотел разрабатывать мобильное приложение, потому что я не мобильный разработчик и не знаю в достаточной мере, например, котлина, а писать мобильное приложение на питоне, как мне кажется, это бред. Плюс ко всему, как-то завести эту нейронную сеть на мобильнике... В теории должно получиться, но для домашнего использования и для "разработки ради фана" это уже перебор... Решил, что для домашних тестов пока соберу какое-то решение на веб-оболочке, а телефон буду использовать только как "снималку". Не без помощи чатгпт накидал html файлик для Flask, и как-то постарался упаковать это всё по файлам. Получилось откровенно так себе, и мне самому плохо с того как выглядит код. Но в целом пример того как могло бы работать такое решение выглядит вот так: Скрытый текст Скрытый текст Можно распознавать карты по одной или сразу "скопом", но чем больше карт на одном фото тем сложнее будет нейросети разобраться, так как объекты на фото становятся "меньше". Умеем определять карту как по лицу, так и по обратной стороне если она двухсторонняя. Пока временно для демонстрации результат распознавания выводится в таблицу. Скорость показана для запуска нейронной сети локально на "домашней" видеокарте. А еще на первой гифке если внимательно посмотреть то видно, что карты могут распознаться неверно) В коде на фласке я уверен еще куча багов, поскольку это мой первый проект, где я пытаюсь разобраться с тем, как работает многопоточность в питоне, но он тоже в репозитории лежит и там написано как его запускать. В общем, про +-позитивные вещи поговорили, теперь про проблемы и как их в теории фиксить. Какие есть потенциальные проблемы, и что можно улучшить: Так как на некоторые карты на "экзотических" языках у нас нет эмбеддингов (потому что нет картинок в базе) - сеть с высокой вероятностью будет выдавать для таких карт какую-то чушь. Решений тут несколько: либо где-то искать хайрез сканы всех оставшихся карт, либо придумывать как распознавать карту не по ее скану целиком, а, например, по арту - искать карту и, возможно, сет, а по текстбоксу и языку на нем - уточнять локализацию и сет. Но с огромной кучей промок, текстлесс карт и прочего у меня нет 100% идеи как эту штуку реализовать так, чтобы ничего не сломалось в процессе. А еще сеть иногда версии китайских языков путает... При использовании на актуальных сетах последних лет - такой проблемы скорее всего нет, но иногда все еще встречаются "галлюцинации" Распознавание хорошо работает только с контрастными картами на светлом фоне как минимум пока. В теории, я думаю, я смогу допилить гиперпараметры таким образом, чтобы алгоритм справлялся и с темным/пестрым фоном, но для этого надо много экспериментировать. Другим решением здесь может быть использование нейронок для поиска карт, но это повлияет на скорость. Планирую дальше экспериментировать с этим. Что планирую делать дальше Подключать к этому делу какую-нибудь БД или хотя-бы эксель файлик, чтобы помаленьку заполнять информацию по своей цифровой коллекции. Дальше уже по ней можно будет парсить цены да хоть с аукционов топдека (Дядя Вова не бань) и потом сделать автоформирование торговой темы. Заготовки на это дело есть и, если не заброшу, позже сгружу их в репозиторий Расширить файл с метаданными по картам, поскольку сейчас там хранится только основное для тестов: имя, номер, сет, язык и сторона (для двухсторонних карт) Тестировать, модернизировать, тестировать, тестировать, тестировать ну и далее вы поняли... Желательно развернуть решение где-нибудь локально, чтобы не приходилось каждый раз запускать его вручную. Резюмируя... Да не знаю на самом деле, что можно сказать. Было весело, было, наверное, полезно и интересно. Если вас проект заинтересовал - буду рад ответить на вопросы. Если хочется помочь/поддержать - копируйте, модернизируйте, все материалы в открытом доступе и я буду ужасно благодарен, если получу обратную связь. Инструкции по запуску можно найти в репозитории. Понимаю, что для не программистов там черт ногу сломит, ну, извините) Постараюсь исправить в будущем. Взрослых сеньоров-помидоров прошу если будут бить ногами, то хотя бы не по лицу, я еще в процессе того, чтобы научиться писать хороший продуктовый код) 7 1 4 1 2 9 31 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Matvey Dolganov Опубликовано: Суббота в 13:01 Поделиться Опубликовано: Суббота в 13:01 Хорошая работа, прочитал с удовольствием 1 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Популярное сообщение Shin Опубликовано: Суббота в 13:01 Популярное сообщение Поделиться Опубликовано: Суббота в 13:01 Для ленивых 1 7 1 4 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Популярное сообщение CrazzyJagger Опубликовано: Суббота в 13:17 Популярное сообщение Поделиться Опубликовано: Суббота в 13:17 @StrangerOne Как минимум спасибо за научпоп о том, как работают все эти алгоритмы распознования и поиска по картинкам. 1 10 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
wernon Опубликовано: Суббота в 13:24 Поделиться Опубликовано: Суббота в 13:24 58 минут назад, StrangerOne сказал: Пока всё скачивалось и трансформировалось занялся механизмом детекции карт на изображении. На самом деле, тут у меня всё не так радужно, как и в других местах моего плана... Распознавание объектов без помощи нейросетей это не сильно сложно, но муторно. Классические алгоритмы требуют, зачастую, тонкой настройки гиперпараметров алгоритма, чтобы работать устойчиво. То на каком фоне объект находится, насколько он засвечен, на какую камеру и в каком разрешении ведется съемка - ОЧЕНЬ сильно влияет на качество распознавания, а, значит, и на качество работы всего решения. Признаться, тут я немного (много) считерил и адаптировал решения под условия, которые есть у меня. На первое время пример, что карты будут находиться на светлом фоне (а значит можно эксплуатировать контраст фона и карты) и сниматься на мой телефон (то есть я имею +- устойчивое качество, под которое я могу заточить гиперпараметры). Про то что делать дальше и как улучшить то что есть, опять же, в конце поста. Алгоритм оптимизации достаточно прост если не вникать в математику. Делаем картинку серой, блюрим, делаем адаптивный трешхолд (если говорить очень грубо и неправильно, как раз этот шаг и позволяет найти эти контрастные объекты) + дилляцию (утолщения контуров). После запускаем по этому делу поиск замкнутых контуров (снова магия какая-то), ищем большие и прямоугольные - скорее всего это будет карта. Процесс такого преобразования по шагам изобразил на фото. Очень крутой прототип, с интересом почитал про детали. Я делал чем-то похожий проект для курса по cv пару лет назад (но сильно проще, без аккуратного пайплайна ) и задачу именно выделения карты решал через файнтюн yolo на маленьком датасете размеченных фоток с размеченными картами. Изначально казалось, что проблем с разметкой + тюном будет больше чем "ну, просто подобрать параметры в алгоритме из классического сиви", но по итогу получилось довольно просто и более надёжно. Так что, если будет желание улучшать именно эту часть - рекомендую попробовать такой подход. 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 13:26 Автор Поделиться Опубликовано: Суббота в 13:26 Только что, wernon сказал: Очень крутой прототип, с интересом почитал про детали. Я делал чем-то похожий проект для курса по cv пару лет назад (но сильно проще, без аккуратного пайплайна ) и задачу именно выделения карты решал через файнтюн yolo на маленьком датасете размеченных фоток с размеченными картами. Изначально казалось, что проблем с разметкой + тюном будет больше чем "ну, просто подобрать параметры в алгоритме из классического сиви", но по итогу получилось довольно просто и более надёжно. Так что, если будет желание улучшать именно эту часть - рекомендую попробовать такой подход. Спасибо) Да, йолка тут первый кандидат на улучшение. В целом и размеченные датасеты на робофлоу уже какие-то есть, но не сильно "богатые" 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Pollacco Опубликовано: Суббота в 13:44 Поделиться Опубликовано: Суббота в 13:44 Лень - двигатель прогресса! Делать txt-шную форму продажи карт лень, зато кодить софт(на девелопмент которого уйдёт гораздо больше времени) не лень! Молодец, продолжай, не теряй мотивации! 5 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
CrazzyJagger Опубликовано: Суббота в 14:31 Поделиться Опубликовано: Суббота в 14:31 44 минуты назад, Pollacco сказал: Лень - двигатель прогресса! Делать txt-шную форму продажи карт лень, зато кодить софт(на девелопмент которого уйдёт гораздо больше времени) не лень! Молодец, продолжай, не теряй мотивации! Пффффф! Always has been ЗЫ пока искал картинку с мемом, нашел актуальненькое Скрытый текст 3 1 2 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Altimit Опубликовано: Суббота в 15:37 Поделиться Опубликовано: Суббота в 15:37 Очень интересная статья. Прочел с большим удовольствием Спасибо. Можете подробнее рассказать, как данный алгоритм работает с фойловыми картами? Если есть проблема с языками, может быть, ее удастся решить, если дополнительно смотреть не на всю карту, а только на ее арт, без текста? Правда, выделить внутренний контур (где он есть) сложнее, чем внешний. И что если на карте отдельно, для верификации результата, смотреть на ее название и манакост? Насколько это технически трудно? Я для распознавания использую Delver Lens. И он примерно в 5% случаев определяет что-то совсем далекое от карты. Возможно, такой контроль мог бы повысить качество определения? 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Net_Ware Опубликовано: Суббота в 15:52 Поделиться Опубликовано: Суббота в 15:52 Начитался, всплакнул, вспомнив универ, когда я занимался программированием, всплакнул ещще раз, когда вспомнил, что я админ инфобеза и программированием занимаюсь разве что для написания костылей... Одобряю)) 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 15:52 Автор Поделиться Опубликовано: Суббота в 15:52 9 минут назад, Altimit сказал: Очень интересная статья. Прочел с большим удовольствием Спасибо. Можете подробнее рассказать, как данный алгоритм работает с фойловыми картами? Если есть проблема с языками, может быть, ее удастся решить, если дополнительно смотреть не на всю карту, а только на ее арт, без текста? Правда, выделить внутренний контур (где он есть) сложнее, чем внешний. И что если на карте отдельно, для верификации результата, смотреть на ее название и манакост? Насколько это технически трудно? Я для распознавания использую Delver Lens. И он примерно в 5% случаев определяет что-то совсем далекое от карты. Возможно, такой контроль мог бы повысить качество определения? По поводу фойлы - никак) И идей особо нет. Тут на фото в ауках иногда не понять фойла это или нет, пока не посмотришь в угол... Для себя скорее всего буду добавлять "галочку" в интерфейс и метить вручную. Может, если переходить на YOLO-based там можно будет под фойлу выдать доп класс какой-нибудь. Ну вот по поводу смотреть на арт без текста, я упоминал об этом, кажется. Боюсь тут подход будет ломаться на всяких промках и лейер картах. Но в целом решение может быть рабочим. Как вариант - не искать внутренний контур, а пытаться конкретный прямоугольник (или прямоугольники - зоны интереса) после детекции вырезать. И на основании этого фрагмента что-то делать. Для текста пробовать взять какой-то OCR алгоритм. Например EasyOCR. Буду тестить) Ну вот у меня тоже галлюцинаций хватает. Сегодня с утра какую-то пайлорарку из мх2 на русском определял чем угодно, но не тем, чем надо, хотя кроп очень качественный выходил. По-хорошему надо перепроверить эмбеддинги... Ссылка на комментарий Поделиться на других сайтах More sharing options...
Gallexy Опубликовано: Суббота в 15:56 Поделиться Опубликовано: Суббота в 15:56 1000 карт сколько будет распознавать? Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 16:26 Автор Поделиться Опубликовано: Суббота в 16:26 20 минут назад, Gallexy сказал: 1000 карт сколько будет распознавать? Зависит от ситуации. Если каким-то образом 1000 картинок распознать прям разом и подать на обработку вот таким куском (что в принципе можно сделать в "оффлайне", если написать функцию которая по папке с картинками будет бегать), то у меня получилось сейчас полторы минуты. С учетом открывания картинки каждый раз по новой, ну, минут 10 на GPU у меня получилось на диванном тесте, прогнав 1000 раз одну и ту же картинку с одной картой на ней. Если целенаправленно писать для такого, то можно быстрее. Потом от 0 до бесконечности сидеть косяки исправлять) Но если мы говорим о том, чтобы сидеть перед компом и руками это делать, то тут зависит от расторопности рук х) Ну и если нужна скорость в оффлайне можно в теории перегнать всё на С++. 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Matvey Dolganov Опубликовано: Суббота в 16:41 Поделиться Опубликовано: Суббота в 16:41 Для того, чтобы увереннее распознавать взякие необычные версии карт типа фойл, бордерлесс и олдбордер версии новых карт, можно добавить OCR подходы ради чтения текста. Уже отмеченную EasyOCR можно использовать как есть, а можно дополнительно обучить ее RNN часть чтобы лучше читались всякие необычные шрифты, волнистые шрифты и проч. Еще как альтернатива можно использовать бесплатную (до определенного предела) Google OCR. Коробочные решения - это же прекрасно. Что касается векторного подхода с эмбеддингами - топикстартер большой молодец, проделал хорошую работу. Для таких задач этот подход уже является промышленным стандартом. 3 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 16:45 Автор Поделиться Опубликовано: Суббота в 16:45 2 минуты назад, Matvey Dolganov сказал: Для того, чтобы увереннее распознавать взякие необычные версии карт типа фойл, бордерлесс и олдбордер версии новых карт, можно добавить OCR подходы ради чтения текста. Уже отмеченную EasyOCR можно использовать как есть, а можно дополнительно обучить ее RNN часть чтобы лучше читались всякие необычные шрифты, волнистые шрифты и проч. Еще как альтернатива можно использовать бесплатную (до определенного предела) Google OCR. Коробочные решения - это же прекрасно. Да, есть вариант попробовать на досуге. Не думал о том, что можно попробовать OCR модель файтюнить, спасибо) Ссылка на комментарий Поделиться на других сайтах More sharing options...
ak8 Опубликовано: Суббота в 17:02 Поделиться Опубликовано: Суббота в 17:02 Мой опыт пробной работы "с этим вашим распознаванием" показал, что возможно быстрее будет распознавать названия карт чем картинки. 3 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 17:09 Автор Поделиться Опубликовано: Суббота в 17:09 6 минут назад, ak8 сказал: Мой опыт пробной работы "с этим вашим распознаванием" показал, что возможно быстрее будет распознавать названия карт чем картинки. С названия не вытащить версию картв, коих сейчас наплодилось как грязи, но в целом да, согласен, можно и так) Ссылка на комментарий Поделиться на других сайтах More sharing options...
ak8 Опубликовано: Суббота в 17:15 Поделиться Опубликовано: Суббота в 17:15 Можно полуавтоматический режим предусмотреть. Сет ставить вручную или по подсказке. Вижу я это так - делаются фото альбомных страниц, чтобы карты лежали по определенной сетке. Дальше в режиме полуавтомата а-ля "Finereader" заполняется список карт, на основе множества фотографий карт в альбоме. С количеством надо подумать что делать в этом случае каждой карты в кармашке может быть несколько штук. 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Seadhna Опубликовано: Суббота в 17:18 Поделиться Опубликовано: Суббота в 17:18 7 минут назад, StrangerOne сказал: С названия не вытащить версию картв, коих сейчас наплодилось как грязи, но в целом да, согласен, можно и так) вот тоже хотел предложить не морочиться с артами, а сразу название и текстбокс читать дополнительный профит -- читать код карты из нижнего блока (потому что они есть даже у совсем наркоманских лееров), чтобы потом вставять в аукционы хД Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 17:27 Автор Поделиться Опубликовано: Суббота в 17:27 7 минут назад, Seadhna сказал: вот тоже хотел предложить не морочиться с артами, а сразу название и текстбокс читать дополнительный профит -- читать код карты из нижнего блока (потому что они есть даже у совсем наркоманских лееров), чтобы потом вставять в аукционы хД Надо будет попробовать. В качество и разрешение картинки всё упрется, такое ощущение. Надо айфон будет для такого покупать, там камера лучше) Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Суббота в 17:32 Автор Поделиться Опубликовано: Суббота в 17:32 А ещё нужен будет OCR для фирексийского) 3 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
ak8 Опубликовано: Суббота в 17:40 Поделиться Опубликовано: Суббота в 17:40 26.10.2024 в 21:32, StrangerOne сказал: А ещё нужен будет OCR для фирексийского) Опять же будет чем заняться )) 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Runemage Опубликовано: Суббота в 23:43 Поделиться Опубликовано: Суббота в 23:43 (изменено) Привет, спасибо за статью. Я сам пользуюсь Delver Lens, но ваша работа тоже заинтересовала. Можно мне, пожалуйста, как человеку, который во всей этой it теме не разбирается, объяснить, что нужно сделать, чтобы этим всем воспользоваться? На гитхаб зашел, приложение на телефон скачал, трансляцию запустил, ip понял откуда взять, а вот что еще запустить, куда что вводить и что вообще делать - нет. Заранее спасибо. PS. Последний абзац увидел после сообщения, подожду, когда разжуют в таком случае) Изменено Суббота в 23:45 пользователем Runemage 2 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Iogann Опубликовано: Воскресенье в 03:54 Поделиться Опубликовано: Воскресенье в 03:54 Щас бы изобретать то, что уже есть и отлично работает. Типичные программисты. 4 3 4 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
StrangerOne Опубликовано: Воскресенье в 15:38 Автор Поделиться Опубликовано: Воскресенье в 15:38 15 часов назад, Runemage сказал: Привет, спасибо за статью. Я сам пользуюсь Delver Lens, но ваша работа тоже заинтересовала. Можно мне, пожалуйста, как человеку, который во всей этой it теме не разбирается, объяснить, что нужно сделать, чтобы этим всем воспользоваться? На гитхаб зашел, приложение на телефон скачал, трансляцию запустил, ip понял откуда взять, а вот что еще запустить, куда что вводить и что вообще делать - нет. Заранее спасибо. PS. Последний абзац увидел после сообщения, подожду, когда разжуют в таком случае) Спасибо) Постараюсь на неделе поправить пару косяков о которых узнал и попробовать написать более подробную инструкцию как это запустить... Но там, скорее всего, так или иначе, придется интерпретатор питона устанавливать на компьютер, то есть "подзахламить" систему себе ради единственного запуска не самого готового "продукта" 1 Наверх Ссылка на комментарий Поделиться на других сайтах More sharing options...
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите здесь.
Войти сейчас