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

Результат можно посмотреть здесь: https://evgenyigumnov.github.io/ai-tarot [1]
Опишу процесс создания 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 [2]
Если кто-то захочет добавить свои карты в репозитории, то можно сделать pull request: https://github.com/evgenyigumnov/ai-tarot/pulls [3]
Ваша колода будет опубликована на сайте https://evgenyigumnov.github.io/ai-tarot [1]
Автор: igumnov
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/420878
Ссылки в тексте:
[1] https://evgenyigumnov.github.io/ai-tarot: https://evgenyigumnov.github.io/ai-tarot
[2] https://github.com/evgenyigumnov/ai-tarot: https://github.com/evgenyigumnov/ai-tarot
[3] https://github.com/evgenyigumnov/ai-tarot/pulls: https://github.com/evgenyigumnov/ai-tarot/pulls
[4] Источник: https://habr.com/ru/articles/913142/?utm_campaign=913142&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.