Як позбутися жовтого фону на нотах: практичне рішення за допомогою Python
Моя дружина, Деніз, нещодавно долучилася до церковного хору. Її голос просто чарівний, а ось нотні збірники, надруковані на жовтому папері, виявилися не надто зручними для занять. Вона хотіла оцифрувати ці книжечки, зробити чорно-білий варіант нот та надрукувати їх збільшеними на форматі 8,5 на 11 дюймів, щоб не мучитися з окулярами для читання.
Спершу виникла задача — як прибрати жовтий відтінок з фону, залишаючи чітко видимими самі ноти, без зайвого витрачання кольорового картриджа принтера. Зелений чи чорний текст на сірому фоні виглядає каламутно, тому варіант просто чорно-білого друку не підходив. Окрім того, планувалось завантажити ці ноти в PlayScore 2 — програму для відтворення музики з нот, аби можна було співати разом з нею, але вона може бути чутливою до незвичних фонів.
Методи видалення жовтого фону: від Photoshop до командного рядка
Я запропонував спробувати Photoshop, але налаштування виявились надто повільними та копіткими. Кожне зображення потребувало індивідуального підходу, що тільки відтягувало процес. Тож, вирішили звернутися до ChatGPT, адже дружина мала підписку Plus і це стало логічним варіантом.
Було цікаво провести тестування з простими командами на кшталт:
“Зроби, будь ласка, PDF без жовтого фону, замінивши його на білий.”
“Дякую, але дозволь відновити якість зображення у повному розширенні.”
Незважаючи на успішність таких результатів, ChatGPT час від часу змінював самі ноти або текст, що викликало тривогу — адже помилкове зчитування нот може призвести до неправильного виконання музики. AI працює недетерміновано, тобто при повторному введенні того самого запиту може видавати різні відповіді, що не надто підходить для такого відповідального випадку.
Що таке детермінізм і недетермінізм у контексті AI?
Детермінізм передбачає, що однакова вхідна інформація дає однаковий вихід. Програми, засновані на алгоритмах, — це класичний приклад детермінованого підходу. Водночас, штучний інтелект генерує відповіді на основі ймовірності, тому навіть повторний точний запит може дати інший результат.
Таке непередбачуване поводження не завжди доречно, особливо якщо мова йде про збереження точності нот.
Рішення у вигляді Python-скрипта: надійний та простий у використанні
На моєму курсі програмування на Python у Гарварді я розробляв інструмент для керування зображеннями зі здатністю застосовувати різні трансформації як окремо, так і пакетно. Тож знав — ці задачі вирішує саме Python, причому за допомогою кількох бібліотек.
Хоча я не мав часу писати скрипт особисто, звернувся до ChatGPT із завданням створити детермінований код, що зніме кольоровий фон, зберігаючи чорний і сірий текст, враховуючи трохи відтінку, щоб ноти залишалися чіткими.
Напиши, будь ласка, Python-скрипт, який приймає jpeg або PDF (підтримка багатосторінкових файлів) і замінює всі кольорові пікселі, крім сірого та чорного, на білий фон. Збережи результат у файл із назвою name-decolor.jpg (або .pdf), де name — ім’я вхідного файлу.
За час приготування вечері отримали готовий код, який працює через командний рядок так:
Скрипт приймає файл, обробляє кожну сторінку PDF, видаляючи кольори, і виводить новий документ з чистим білим фоном.
Випробування на практиці: чи справді це працює?
Так, працює бездоганно. Щоб уникнути порушення авторських прав на церковні відомі гімни, було вирішено взяти пісню із публічного архіву Нью-Йоркської публічної бібліотеки.
Це джазова композиція, яку створив Фетс Воллер у дуеті з Енді Разафом, знаний завдяки шедеврам «Ain’t Misbehavin’» та «Honeysuckle Rose». Її тексти мають звороти, натхненні кінськими перегонами, однак сама мелодія чудово підходить для тестування чистоти нот після обробки.
Ключові поради на основі досвіду
- Не завжди потрібно покладатися на непередбачувані AI-відповіді — іноді краще зробити надійний інструмент із визначеною логікою.
- Інтерфейс може бути простим: інколи командний рядок — це саме те, що треба.
- Не соромтеся уточнювати і покращувати завдання AI, щоб отримати оптимальний результат.
Python зі своєю екосистемою бібліотек відкриває безліч можливостей для автоматизації навіть такої унікальної задачі.
Тож якщо виникає потреба швидко вирішити нетривіальну проблему, спробуйте запропонувати ChatGPT створити відповідну програму — часто це дає кращий, стабільніший результат.
Ваша думка та досвід
Чи траплялося вам уникати використання ІІ через страх, що він може випадково змінити оригінальний файл? Будь ласка, діліться своїми історіями у коментарях — цікаво дізнатися, як це вирішують інші.
Для щоденних оновлень про якість коду та технології підписуйтесь на мої соцмережі, де я ділюся корисними порадами й цікавими проектами.