выбираем блок с текстом для анализа.
запоминаем цвет текста из computedStyle. Как сделать скриншот элемента с помощью JS? - делаем скриншот блока с тектом. https://habr.com/ru/post/419309/ - вычисляем средний цвет скриншота.
сравниваем цвет текста и средний цвет и решаем, чо делать.
Крутяк — если реализуется.
SpiderPigAndCat, если есть под рукой дизайнер, шарящий в цветах, можно подобрать другое наложение, чтобы это хорошо смотрелось. А так, еще простой и симпатичный вариант, это полупрозрачный блок на котором будет располагаться текст.