Я решил сделать уникальную колоду карт Таро. Заказывать их у фриланс-художников дорого: каждая карта стоит от 5 USD, так что для полной колоды из 78 карт это выходит 390 USD. Перебрав разные генераторы изображений, я остановился на модели GPT-Image-1 от OpenAI, поскольку она выдаёт максимальное качество и минимальный процент ошибок. В среднем генерация одной карты занимает около минуты. Создание одной колоды обошлось мне в 25 USD. В итоге я сгенерировал три колоды с уникальными стилями и потратил на это в общей сложности 75 USD.

Результат можно посмотреть здесь.
Опишу процесс создания Python скрипта для генерации карт Таро. Сначала я описал все карты таро вот в таком массиве:
CARDS = [
{
"number": 0,
"name": "The Fool",
"description": "A youth with a knapsack on a staff stepping at the edge of a cliff, with a small dog beside him",
"meaning": "The beginning of a journey, spontaneity, freedom"
},
{
"number": 1,
"name": "The Magician",
"description": "A figure stands behind a table with symbols of the four elements, staff raised upwards",
"meaning": "Willpower, skill, manifestation of power"
},
{
"number": 2,
"name": "The High Priestess",
"description": "A woman sits between two pillars with a book on her lap, a crescent at her feet",
"meaning": "Intuition, hidden knowledge, sacred wisdom"
},
...
]
Далее написал функцию, которая вызывает OpenAI API для генерации изображения и сохраняет картинку на диск:
def generate_and_save(prompt: str, filepath: str):
if os.path.exists(filepath):
print(f"File already exists: {filepath}")
return
img = client.images.generate(
model=model,
prompt=prompt,
n=1,
size="1024x1536",
quality=quality
)
image_bytes = base64.b64decode(img.data[0].b64_json)
with open(filepath, "wb") as f:
f.write(image_bytes)
print(f"Created: {filepath}")
Для генерации картинки я использовал prompt в виде строки который передавал в OpenAI API, гдеstyle — описание стиля карты:
"number": {card["number"]},
"name": "{card["name"]}",
"description": "{card["description"]}",
"meaning": "{card["meaning"]}"
Background: Light
Write the card name: bottom center.
Write the card number: top center only for major arcana
Draw this tarot card in style: {style}
Вот примеры style:
Anime realistic style
Anime futuristic style
Digital painting in modern realistic style, modernity 2025, white skin, luxury, professional makeup. Natural lighting, with soft painterly textures, office places
Потом написал цикл который перебирает карты в массиве CARDS и для каждой карты генерирует картинку и сохраняет на диск. В цикле я проверяю не существует ли картинка на диске и если да то пропускаю ее, иначе генерирую картинку и сохраняю на диск.
i = 0
for card in CARDS:
filepath = os.path.join(output_dir, f"{i}.png")
if os.path.exists(filepath):
print(f"File already exists: {filepath}")
i += 1
continue
number = f"""
"number": {card["number"]},
"""
number_desc = "Write the card number: top center only for major arcana"
if i>21:
number = ""
number_desc = ""
prompt = f"""
{number}
"name": "{card["name"]}",
"description": "{card["description"]}",
"meaning": "{card["meaning"]}"
Background: Light
Write the card name: bottom center.
{number_desc}
Draw this tarot card in style: {style}
"""
print(prompt)
generate_and_save(prompt, filepath)
i += 1
Итоговый скрипт, которым можно генерировать карты, выложен в репозитории: https://github.com/evgenyigumnov/ai-tarot
Если кто-то захочет добавить свои карты в репозитории, то можно сделать pull request: https://github.com/evgenyigumnov/ai-tarot/pulls
Ваша колода будет опубликована на сайте https://evgenyigumnov.github.io/ai-tarot
PS
У скрипта генерации есть недостаток: нет единого стиля карт. Это можно исправить, добавив в запрос изображение «пустой» карты помимо описания её внешнего вида. Тогда надписи, цифры и окантовки будут выполнены в одном стиле. Но это увеличит стоимость генерации каждой карты. В общем, если кому интересно — либо добавляйте сами, либо пишите мне в личку.
Вот для примера шаблон пустой для карты:

Вот сгенерированных 2 карты:


Почти в стиль попал :)
Комментарии (22)
BobovorTheCommentBeast
27.05.2025 10:08Стоп, вот та штука с первого пика стоит 75уе? Ладно, видимо ии даже художников не заменяет...
Missis_Pam
27.05.2025 10:08Судя по моей личной нейропрактике да рисункам карт в колодах в ассортименте маркетплейсов (и вполне себе единообразию картинок на картах в тех колодах) это всё обычно генерится куда проще. Можно легко обойтись без кода и сложных скриптов, даже бесплатными нейросетками, а рамочки с надписями и в банальном графредакторе имеет смысл засобачить, хоть бы и из интернетов скачамши шаблон и текст на клаве натыцав. )
Та же Dream вомбовская, уже "немолодая" нейра, имеет энное количество предустановленных стилей, например; стили, которые в списке повыше, даже анатомию вывозят адекватно вполне. Бесплатного количества стилей с головой хватает, да и свой задать можно при желании. Там довольно небольшое поле для промта, но и указаний много сильно не требуется, если прям супердетальных пожеланий нету.
Если что, это ни разу не реклама, просто эта нейра первой вспомнилась из тех, что я для своих развлекух на тему Таро юзала. Так-то я руками их рисую, аж на бумаге, в традишке... Но, было дело, и с нейронками прикалывалась чисто для себя ещё этак с год назад, копейки не потратив. Уже тогда в двух третях попыток пикчи получались вполне ок (а я довольно придирчива, когда дело касается деталей, с которыми ИИ порой может косячить). )
Попробуйте при желании с обычным словесным промтом погенерить пикчи без рамочек-буковок, может, так на той гэпэте прикольнее получится. Это просто предположение, ибо платные картиночные сетки я не щупала (может, у них промтовая специфика там какая есть своя, хотя это было бы и не очень логично). )
А вообще можно и начинающих, но уже годных рисовальщиков поискать, которые портфолио нарабатывают и будут рады кейсу с колодой. Они подешевле берут. ) Хотя нынче тарошная тема так популярна, что тут, возможно, будет не сильно банально кого недорогого и пряморукого найти... Но хотя бы несколько картинок для референса стиля, чтобы их нейронке скормить, можно и у художника заказать, имхо (своих услуг не предлагаю, просто вкидываю идею). )
igumnov Автор
27.05.2025 10:08Или как вариант то что нагенерил ИИ отдать дизайнеру человеку, что бы он мелочи подправил )
Missis_Pam
27.05.2025 10:08Или так, но это может быть подороже. Да и заметно муторнее может оказаться, чем пилить с нуля, — случалось в моей практике и такое: свои косяки поправляешь сразу или не делаешь их просто, а с нейронками поди все мелочи найди, особенно когда глаз уже устанет. )
Morgenn
27.05.2025 10:08Увидел обнаженную карту The World и возник вопрос - а как?
У меня на практике с моделями openAI как только она начинает генерировать что то похожее на грудь с соском - генерация отменяется, мол нарушаются правила. К примеру отдавал референс - видел там сосок - сразу стопился. Закрасил соски, начало генерировать, дошло до груди - остановилось тк видимо обнаружило сосок на результирующем изображении.
ri1wing
Какое же оно кривое...
Открыл анимешную колоду
Какие-то карты с рамками, какие-то без рамок. Названия старших арканов у Дьявола и Повешенного не те. У Звезды нет римской цифры сверху. На Колесе Фортуны должно быть написано TARO, а не RARO
Но самый треш это младшие арканы. Написано тройка посохов, нарисовано два. Написано четвёрка посохов, нарисовано шесть. И так почти везде. Ну ладно нейросетка считать не умеет, но неужели нельзя было это как-то проконтролировать?
Про мелочи, типа растущей из головы руки на тройке кубков, я уже молчу
igumnov Автор
Вы всегда можете удалить не понравившуюся Вам карту и запустить скрипт и он перегенерит только ее )
igumnov Автор
Названия у Дьявола и Повешенного пришлось заменить. Иначе фильтры OpenAI не пропускали...
ri1wing
А во второй колоде не пришлось? Почему?
igumnov Автор
Чем более реалистичный стиль колод. Чаще срабатывает фильтр от OpenAI. На Anime стилях обычно не срабатывает.
ri1wing
del
igumnov Автор
Я сначала делал вот такую колоду Tarot Deck - Anime futuristic style С ней проблем не было. А вот для колод:
Tarot Deck - Anime realistic style
Tarot Deck - Digital painting in modern realistic style, modernity 2025, white skin, luxury, professional makeup. Natural lighting, with soft painterly textures, office places
Пришлось менять для карты Дьявола и Повешенного и название и описание что бы пролазило через фильтры безопасности OpenAI. Я предполагаю что чем ближе изображения от мультяшного к фотореалистичному тем они у них лучше срабатывают.
ri1wing
Да я как-нибудь обойдусь, спасибо. Предпочитаю колоды, нарисованные людьми.
igumnov Автор
Это свободный мир. Со свободой выбора. Вопрос цены и качества и тд. Мне было вот по фану такую штуку сделать...
n0isy
Вы потратили 75 долл и получили мусор. Какая цена, такой и результат.
BadNickname
Самая неприятная неприятность это неконсистентность стиля.
igumnov Автор
Это можно исправить. В запрос к ИИ помимо описания что изображено на карте добавлять картинку с пустым формуляром карты. Он этот формуляр будет заполнять. Цифры там ставить и текст что бы было в одном стиле… Мне уже лень было это добавлять. Меня карты даже такого качества устраивают )
igumnov Автор
Еще это увеличит цену на генерацию каждой карты. Я и так уже 75 баксов на эти игрульки истратил. Пока в планах нету еще тратить деньги ) Может только не свои, то можно ))) пишите в личку…