Это вполне реализуемо, однако такая функциональность должна быть реализована в виде плагина, особенно в зависимости от способа её внедрения.
Подобно Tesseract, это сложный инструмент для установки — здесь возникает своего рода дилемма. Либо вы разворачиваете новый API, либо засоряете контейнер вашего приложения. Разворачивание отдельного API обеспечивает лучшую изоляцию, но тогда любой, кто устанавливает такой плагин (вне нашей хостинг-среды), должен будет настроить и запустить второй контейнер для выполнения этой задачи.
Нам нужно будет очень внимательно относиться к таймаутам (что, если на определение того, что это скриншот кода, уйдёт 10 секунд? Что увидит пользователь?).
Мои спонтанные идеи на этот счёт:
- Пользователь публикует изображение;
- Изображение отображается в посте;
- (Параллельно) пост отправляется в сервис «Определить, является ли это скриншотом кода»;
- Когда сервис в конечном итоге отвечает, вы показываете предупреждение.
Блокировка всех загрузок изображений на сервисе (даже локальном) рискованна, так как это может существенно ухудшить пользовательский опыт.
Можно добавить одну «финальную» задержку непосредственно перед публикацией, чтобы убедиться, что в очереди ничего не осталось.
Всё это потенциально выполнимая работа, которую мы могли бы взять на себя, но нам сначала понадобится набор данных для работы, чтобы мы могли сформировать ожидания (например, 50 изображений с фрагментами кода и 50 без них).
Это очень размытая задача, поэтому примеры помогут понять, насколько хорошо такая система сможет работать.
Интересный поворот: если бы этот волшебный сервис «преобразовывал» скриншоты обратно в исходный код и сообщал пользователю: «Эй, я вижу, что вы попытались опубликовать здесь исходный код. Хотите, я преобразую его в этот текстовый блок?»