Я решил сделать уникальную колоду карт Таро. Заказывать их у фриланс-художников дорого: каждая карта стоит от 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)
 - BobovorTheCommentBeast27.05.2025 10:08- Стоп, вот та штука с первого пика стоит 75уе? Ладно, видимо ии даже художников не заменяет... 
 - Missis_Pam27.05.2025 10:08- Судя по моей личной нейропрактике да рисункам карт в колодах в ассортименте маркетплейсов (и вполне себе единообразию картинок на картах в тех колодах) это всё обычно генерится куда проще. Можно легко обойтись без кода и сложных скриптов, даже бесплатными нейросетками, а рамочки с надписями и в банальном графредакторе имеет смысл засобачить, хоть бы и из интернетов скачамши шаблон и текст на клаве натыцав. ) - Та же Dream вомбовская, уже "немолодая" нейра, имеет энное количество предустановленных стилей, например; стили, которые в списке повыше, даже анатомию вывозят адекватно вполне. Бесплатного количества стилей с головой хватает, да и свой задать можно при желании. Там довольно небольшое поле для промта, но и указаний много сильно не требуется, если прям супердетальных пожеланий нету. - Если что, это ни разу не реклама, просто эта нейра первой вспомнилась из тех, что я для своих развлекух на тему Таро юзала. Так-то я руками их рисую, аж на бумаге, в традишке... Но, было дело, и с нейронками прикалывалась чисто для себя ещё этак с год назад, копейки не потратив. Уже тогда в двух третях попыток пикчи получались вполне ок (а я довольно придирчива, когда дело касается деталей, с которыми ИИ порой может косячить). ) - Попробуйте при желании с обычным словесным промтом погенерить пикчи без рамочек-буковок, может, так на той гэпэте прикольнее получится. Это просто предположение, ибо платные картиночные сетки я не щупала (может, у них промтовая специфика там какая есть своя, хотя это было бы и не очень логично). ) - А вообще можно и начинающих, но уже годных рисовальщиков поискать, которые портфолио нарабатывают и будут рады кейсу с колодой. Они подешевле берут. ) Хотя нынче тарошная тема так популярна, что тут, возможно, будет не сильно банально кого недорогого и пряморукого найти... Но хотя бы несколько картинок для референса стиля, чтобы их нейронке скормить, можно и у художника заказать, имхо (своих услуг не предлагаю, просто вкидываю идею). )  - igumnov Автор27.05.2025 10:08- Или как вариант то что нагенерил ИИ отдать дизайнеру человеку, что бы он мелочи подправил )  - Missis_Pam27.05.2025 10:08- Или так, но это может быть подороже. Да и заметно муторнее может оказаться, чем пилить с нуля, — случалось в моей практике и такое: свои косяки поправляешь сразу или не делаешь их просто, а с нейронками поди все мелочи найди, особенно когда глаз уже устанет. ) 
 
 
 - Morgenn27.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 баксов на эти игрульки истратил. Пока в планах нету еще тратить деньги ) Может только не свои, то можно ))) пишите в личку…