Як позбутися жовтого фону на нотах і зекономити на друці: просте рішення за допомогою Python
Підписуйтесь на ZDNET у Google як на надійне джерело інформації.
Головні уроки з історії
- Жовтий папір на нотах може збивати з пантелику додатки для відтворення музики.
- Рішенням став простий Python-скрипт для видалення кольору фону.
- Іноді найкраще використати штучний інтелект, щоб створити інструмент, а не для прямої обробки.
Ситуація: зайнята жінка і жовті ноти
Нещодавно моя дружина Деніз почала співати в церковному хорі. Вона чудово співає і хотіла ретельно впрактися в нові пісні. Ноти їй дали у вигляді буклетів, приблизно з розмір звичайної книженції, надрукованих на жовтому папері. Нотам потрібен був скан у форматі PDF з видаленням жовтого фону, щоб можна було роздрукувати їх на аркушах формату 8,5×11 дюймів великим шрифтом. Це допомогло б їй не носити окуляри для читання під час занять.
Одного дня вона звернулася до мене з проханням видалити жовтий фон і зберегти при цьому ноти у чистому вигляді, адже друк у кольорі витратить багато чорнил, а чорний і білий варіант з сірим фоном теж ускладнить читання.
Вона також планувала використати програму PlayScore 2, яка відтворює ноти звучанням, щоб підспівувати. При цьому вона турбувалась, що жовтий фон завадить коректній роботі додатку.
Випробування ручної обробки
Спершу я запропонував відтворити очистку у Photoshop, але цей метод виявився надто витратним за часом і нервами — настройки кожного зображення різнилися, і треба було підлаштовуватись під кожен випадок. Просто непрактично.
Тож я запропонував звернутися до ChatGPT, враховуючи, що вона має підписку ChatGPT Plus — це цілком чудовий варіант.
Парадокс детермінізму та непередбачуваності штучного інтелекту
Я зробив декілька тестів, ставлячи запити на кшталт:
«Створи PDF без жовтого фону, замінивши його на білий, з можливістю завантаження».
«Зроби якість тексту у PDF максимальною, будь ласка».
Результати були непоганими, але ChatGPT іноді міняв нотний текст або трохи трансформував ноти, що викликало хвилювання — адже неправильне прочитання музики загрожувало помилками в практиці.
Тут варто згадати, що більшість ШІ мають непередбачувану природу — вони не завжди видають однаковий результат на однаковий вхідний запит. Це схоже на бесіду з різними фахівцями, де рішення залежать від ймовірностей і складних розрахунків.
Навпаки, алгоритми суворо детерміністичні — однаковий код і однакові дані завжди дають однаковий результат. Деніз саме такого інструменту і прагнула — щоб результат був чітким і передбачуваним.
Python — на допомогу
Я раніше писав програму на Python, яка могла обробляти зображення, застосовувати послідовності трансформацій і працювати у пакетному режимі. Це означає, що Python має все необхідне для вирішення проблеми видалення кольору на нотах.
Зараз у мене не було часу для детального програмування, адже графік був напруженим. Але штучний інтелект має необмежений час, і ось тут на допомогу прийшло цікаве рішення: наш “нестабільний” ChatGPT згенерував “стабільний” скрипт.
Використовуючи промпт такого змісту:
Напиши Python-скрипт, який із jpeg-файлу видалить кольорові пікселі, замінить їх білим, залишаючи трохи тоновані сірі для збереження читабельності чорного тексту. Зроби те саме з PDF, враховуючи багатосторінковість.
Після кулінарної перерви чат вже видав робочу версію програми. Була невеличка заминка, бо треба було встановити додаткову бібліотеку, але після цього все запрацювало гладко.
Запуск і використання
Програма запускається з командного рядка так:
% python decolor_pdf.py input.pdf
Вихідний файл генерується з назвою input-decolor.pdf із видаленим фоном.
Протестували — і це працює
Для демонстрації я не використав нотні буклети дружини, оскільки вони захищені авторським правом. Натомість завантажив публічний нотний матеріал з вебсайту Нью-Йоркської публічної бібліотеки.
Це пісня відомого джазового виконавця Фетса Воллера, автора кількох мюзиклів. Тексти використовують метафори скачок, порівнюючи їх з любовними пригодами. Співавтор текстів — Енді Разаф, автор слів до «Ain’t Misbehavin’» та «Honeysuckle Rose».
Що цікавого винести для себе
- В інструментах штучного інтелекту не обов’язково слідувати «нестабільним» процесам — іноді можна попросити створити класичний алгоритм, який завжди дасть однаковий результат.
- Нема потреби робити складний інтерфейс — проста командна утиліта відмінно справляється з завданням.
- Обов’язково тестуйте і коригуйте програму за допомогою користувацьких запитів — ітеративний підхід допомагає довести рішення до ідеалу.
Якщо з якихось причин не хочете втручатися безпосередньо, спробуйте делегувати технічну роботу штучному інтелекту. В моєму випадку, це допомогло не тільки освітити ноти, а й встигнути допомогти дружині з вечерею одночасно.
Якщо ви колись уникали роботи зі штучним інтелектом через боязнь, що він змінить оригінал, підтримайте розмову у коментарях.
Для оновлень проектів підписуйтеся на мої соцмережі, а також щотижневу розсилку новин. Знайдете мене у Твіттері/X @DavidGewirtz, Facebook.com/DavidGewirtz, Instagram.com/DavidGewirtz, Bluesky @DavidGewirtz.com і на YouTube YouTube.com/DavidGewirtzTV.